今回は、LANから受信したパケットをオーバレイトンネルに転送する際に、NATによりパケットの送信元アドレスを変換する方法を説明します。
概要
オーバレイでのNAT
CiscoのレガシーなルータのNATと比較すると、ViptelaのオーバレイでのNATはかなりイメージが異なっています。
Viptelaでは、NATで使用するアドレスプールをNAT Poolインタフェースとして設定します。
そして、Centralized Control Policyを使用して、NAT対象のパケットをNAT Poolインタフェースに強制的にリダイレクトすることで、パケットのアドレスを変換できます。
戻りのパケットの送信先アドレスはNAT変換後のアドレスで、NAT Poolインタフェースに設定したアドレスプールに含まれます。
他のvEdgeがNATのアドレスプール宛のパケットをオーバレイに転送できるように、NAT Poolインタフェースのルート情報はOMP経由で他のvEdgeに自動的に広報されます。
検証環境、内容
検証内容
vEdge2で20.2.2.0/24を割り当てたNAT Poolインタフェースを作成します。
そして、LANからオーバレイにパケットを転送する際に、パケットをNAT Poolインタフェースにリダイレクトし、パケットの送信元アドレスを変換します。
R2からR1に対して、Telnetを実施し、パケットの送信元アドレスが変換されていることを確認します。
物理/論理構成
オーバレイネットワーク構成
初期設定
system
system-ip 10.1.10.11
site-id 10
organization-name "Criterio1 - 19101"
vbond 172.16.10.21
!
vpn 0
interface eth0
ip address 172.16.10.11/24
tunnel-interface
no shutdown
!
ip route 0.0.0.0/0 172.16.10.254
system
host-name vBond
system-ip 10.1.10.21
site-id 10
organization-name "Criterio1 - 19101"
vbond 172.16.10.21 local vbond-only
!
vpn 0
interface ge0/0
ip address 172.16.10.21/24
tunnel-interface
encapsulation ipsec
!
no shutdown
!
ip route 0.0.0.0/0 172.16.10.254
system
host-name vSmart
system-ip 10.1.10.31
site-id 10
organization-name "Criterio1 - 19101"
vbond 172.16.10.21
!
vpn 0
interface eth0
ip address 172.16.10.31/24
tunnel-interface
no shutdown
!
ip route 0.0.0.0/0 172.16.10.254
system
host-name vEdge1
system-ip 1.1.1.1
site-id 1
organization-name "Criterio1 - 19101"
vbond 172.16.10.21
!
vpn 0
interface ge0/0
ip address 172.16.1.1/24
tunnel-interface
encapsulation ipsec
color biz-internet restrict
!
no shutdown
!
ip route 0.0.0.0/0 172.16.1.254
!
vpn 10
interface ge0/1
ip address 10.1.1.1/24
no shutdown
!
policy
app-visibility
system
host-name vEdge2
system-ip 2.2.2.2
site-id 2
organization-name "Criterio1 - 19101"
vbond 172.16.10.21
!
vpn 0
interface ge0/0
ip address 172.16.2.2/24
tunnel-interface
encapsulation ipsec
color biz-internet restrict
!
no shutdown
!
ip route 0.0.0.0/0 172.16.2.254
!
vpn 10
interface ge0/1
ip address 20.1.1.2/24
no shutdown
aaa new-model
!
aaa authentication login default none
aaa authentication enable default none
!
interface GigabitEthernet2
ip address 10.1.1.11 255.255.255.0
!
ip route 0.0.0.0 0.0.0.0 10.1.1.1
!
line vty 0 4
privilege level 15
transport input telnet
interface GigabitEthernet2
ip address 20.1.1.12 255.255.255.0
!
ip route 0.0.0.0 0.0.0.0 20.1.1.2
interface GigabitEthernet2
ip address 172.16.1.254 255.255.255.0
!
interface GigabitEthernet3
ip address 172.16.2.254 255.255.255.0
!
interface GigabitEthernet4
ip address 172.16.10.254 255.255.255.0
設定、状態確認
Centralized Control Policy適用前の疎通確認
R2からR1に対して、Telnetを実施します。
vEdge1でshow app dpi flows detailコマンドを実行すると、vEdge1がオーバレイトンネルから受信したパケットの送信元アドレスはR2の実アドレスである20.1.1.12であることが確認できます。
vEdge1# show app dpi flows detail
app dpi flows vpn 10 20.1.1.12 10.1.1.11 38913 23 tcp
application telnet
family Terminal
active-since 2020-04-08T22:14:40+00:00
packets 27
octets 1179
tunnels-in 1
local-tloc TLOC IP 1.1.1.1
local-tloc color biz-internet
local-tloc encap ipsec
remote-tloc TLOC IP 2.2.2.2
remote-tloc color biz-internet
remote-tloc encap ipsec
packets 12
octets 521
start-time 2020-04-08T22:14:46+00:00
tunnels-out 1
local-tloc ip 1.1.1.1
local-tloc color biz-internet
local-tloc encap ipsec
remote-tloc TLOC IP 2.2.2.2
remote-tloc color biz-internet
remote-tloc encap ipsec
packets 15
octets 658
start-time 2020-04-08T22:14:40+00:00
vEdge2にNAT Poolインタフェースを追加
vEdge2ではinterface natpool<番号>コマンドNAT Poolインタフェースを作成します。
NAT用のアドレスプールはip address <ネットワークアドレス>/<プレフィックス長>コマンドで指定します。
NAT PoolインターフェースでNATを有効にするために、natコマンドを設定します。
directionコマンドはNATを適用するトラフィックの方向を指定するコマンドです。
insideオプションの場合はService SideからTransport Sideへのトラフィック、outsideオプションの場合はTransport SideからService Sideへのトラフィックに対してNATを適用します。
vpn 0
interface natpool1
ip address 20.2.2.0/24
nat
direction inside
!
no shutdown
VPN Listの確認
VPN Listで、Traffic Data Policyの適用先のVPNのIDを指定します。
Site Listの確認
Site Listで、Traffic Data Policyの適用先のSiteのIDを指定します。
Traffic Data Policyの確認
NAT PoolインタフェースにパケットをリダイレクトするためのアクションはNAT Poolになります。
NAT Poolアクションでリダイレクト先のNAT Poolインタフェースの番号を指定します。
Default ActionにはAcceptを設定します。
Centralized Control Policyの確認
Traffic Rules > Traffic DataからCentralized Control PolicyにNAT用のTraffic Data Policyをインポートしておきます。
Policy Application > Traffic DataからインポートしたTraffic Data Policyの適用先のSiteとVPNを指定します。
vSmartのCentralized Control Policyの設定確認
vSmartでshow runコマンドを実行し、Centralized Control Policy用のコマンドを確認します。
vSmart# show run
.
<一部省略>
.
policy
data-policy _VPN_10_Traffic_Data_Policy
vpn-list VPN_10
sequence 1
match
source-ip 0.0.0.0/0
!
action accept
nat pool 1
!
!
default-action accept
!
!
lists
vpn-list VPN_10
vpn 10
!
site-list Site_2
site-id 2
!
!
!
apply-policy
site-list Site_2
data-policy _VPN_10_Traffic_Data_Policy from-service
vEdge2のCentralized Control Policyの情報確認
vEdge2でshow policy from-vsmartコマンドを実行し、Centralized Control Policyの情報を確認します。
vEdge2# show policy from-vsmart
from-vsmart data-policy _VPN_10_Traffic_Data_Policy
direction from-service
vpn-list VPN_10
sequence 1
match
source-ip 0.0.0.0/0
action accept
nat pool 1
default-action accept
from-vsmart lists vpn-list VPN_10
vpn 10
Centralized Control Policy適用後の疎通確認
R2からR1に対して、Telnetを実施します。
vEdge1でshow app dpi flows detailコマンドを実行すると、vEdge1がオーバレイトンネルから受信したパケットの送信元アドレスはR2の実アドレスではなく、NATにより20.2.2.1に変換されていることが確認できます。
vEdge1# show app dpi flows detail
app dpi flows vpn 10 20.2.2.1 10.1.1.11 27649 23 tcp
application telnet
family Terminal
active-since 2020-04-08T22:24:48+00:00
packets 46
octets 1970
tunnels-in 1
local-tloc TLOC IP 1.1.1.1
local-tloc color biz-internet
local-tloc encap ipsec
remote-tloc TLOC IP 2.2.2.2
remote-tloc color biz-internet
remote-tloc encap ipsec
packets 22
octets 946
start-time 2020-04-08T22:24:48+00:00
tunnels-out 1
local-tloc ip 1.1.1.1
local-tloc color biz-internet
local-tloc encap ipsec
remote-tloc TLOC IP 2.2.2.2
remote-tloc color biz-internet
remote-tloc encap ipsec
packets 24
octets 1024
start-time 2020-04-08T22:24:48+00:00
vEdge2でshow ip nat filterコマンドを実行すると、vEdge2がパケットの送信元アドレスを20.1.1.12から20.2.2.1に変換していることが確認できます。
vEdge2# show ip nat filter
PRIVATE PRIVATE PRIVATE PRIVATE PUBLIC PUBLIC PUBLIC PUBLIC
NAT NAT SOURCE DEST SOURCE DEST SOURCE DEST SOURCE DEST FILTER IDLE OUTBOUND OUTBOUND INBOUND INBOUND
VPN IFNAME VPN PROTOCOL ADDRESS ADDRESS PORT PORT ADDRESS ADDRESS PORT PORT STATE TIMEOUT PACKETS OCTETS PACKETS OCTETS DIRECTION
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
10 natpool1 10 tcp 20.1.1.12 10.1.1.11 27649 23 20.2.2.1 10.1.1.11 27649 23 established 0:00:59:44 24 1460 22 3740 -
vEdge1でshow ip route vpn <VPNのID>コマンドを実行すると、vEdge1がvEdge2のNAT Poolインタフェースのルート情報を学習していることが確認できます。
vEdge1# show ip routes vpn 10 | tab
ADDRESS PATH PROTOCOL NEXTHOP NEXTHOP NEXTHOP
VPN FAMILY PREFIX ID PROTOCOL SUB TYPE METRIC IFNAME ADDR TLOC IP COLOR ENCAP VPN STATUS
-------------------------------------------------------------------------------------------------------------------------------
10 ipv4 10.1.1.0/24 0 connected - 0 ge0/1 - - - - - F,S
10 ipv4 20.1.1.0/24 0 omp - 0 - - 2.2.2.2 biz-internet ipsec - F,S
10 ipv4 20.2.2.0/24 0 omp - 0 - - 2.2.2.2 biz-internet ipsec - F,S
コメント