今回は、SD-WANの主要な機能であるローカルブレイクアウトについて説明します。
Viptelaのローカルブレイクアウトの実装方法は2種類ありますが、今回はCentralized Control Policyを使用してローカルブレイクアウトを実現します。
概要
ローカルブレイクアウト
SD-WANを導入する前は、ブランチ拠点の端末のインターネット宛のトラフィックは、IPsec VPN等を経由して、一度、ハブ拠点に転送されます。
その後、ハブ拠点のゲートウェイ経由で、インターネットに出ていく設計が多いです。
上記の様な設計の場合、Office 365等の大量のトラフィックがハブ拠点に転送され、輻輳や遅延等が発生してしまいます。
この様な問題を解決するために、SD-WANではローカルブレイクアウトと呼ばれる機能を導入しました。
ローカルブレイクアウトを使用することで、ブランチ拠点のWAN回線から、特定のアプリケーションのトラフィックを直接インターネットに転送できます。
大容量のトラフィックが発生するアプリケーションをローカルブレイクアウトすることで、輻輳や遅延等を解消できます。
Viptelaでは、ローカルブレイクアウトのことを、DIA(Direct Internet Access)と呼んだりします。
Viptelaのローカルブレイクアウトで実現不可能なこと
Viptelaでは、ハブ拠点のvEdgeがオーバレイから受信したパケットを、直接、自身のWANインタフェースからローカルブレイクアウトさせることはできません。。。
ちなみに、VelocloudやSilverPeakではこの動作は可能です。
検証環境、内容
検証内容
R2からSV1に対して、Telnetを実施します。
そして、vEdge2において、Telnetのパケットをローカルブレイクアウトさせます。
(インターネットに出れない閉じた環境で検証しているので、アプリケーションではなく、従来のIPアドレスやポート番号を条件に使用します。。。)
物理/論理構成
オーバレイネットワーク構成
初期設定
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
!
ip route 0.0.0.0/0 10.1.1.11
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
nat
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
!
policy
app-visibility
interface GigabitEthernet2
ip address 10.1.1.11 255.255.255.0
ip nat inside
!
interface GigabitEthernet3
ip address 172.16.1.11 255.255.255.0
ip nat outside
!
ip nat inside source list 1 interface GigabitEthernet3 overload
ip route 0.0.0.0 0.0.0.0 172.16.1.254
ip route 20.1.1.0 255.255.255.0 10.1.1.1
!
access-list 1 permit any
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からSV1に対して、Telnetを実施します。
vEdge2でshow app dpi flows detailsコマンドを実行します。
現在はローカルブレイクアウト設定前なので、vEdge2はTelnetのパケットを、オーバレイ経由でvEdge1に転送していることが確認できます。
vEdge2# show app dpi flows detail
app dpi flows vpn 10 20.1.1.12 172.16.1.100 20481 23 tcp
application telnet
family Terminal
active-since 2020-04-05T12:41:05+00:00
packets 65
octets 2930
tunnels-in 1
local-tloc TLOC IP 2.2.2.2
local-tloc color biz-internet
local-tloc encap ipsec
remote-tloc TLOC IP 1.1.1.1
remote-tloc color biz-internet
remote-tloc encap ipsec
packets 36
octets 1532
start-time 2020-04-05T12:41:05+00:00
tunnels-out 1
local-tloc ip 2.2.2.2
local-tloc color biz-internet
local-tloc encap ipsec
remote-tloc TLOC IP 1.1.1.1
remote-tloc color biz-internet
remote-tloc encap ipsec
packets 29
octets 1398
start-time 2020-04-05T12:41:05+00:00
R1はLANからWANにパケットを転送する送信元アドレスをNATで変更します。
そのため、SV1のTelnetのアクセスログを見ると、R1のWANインタフェースのアドレスが確認できます。
[root@localhost ~]# cat /var/log/messages | grep Telnet
Apr 5 13:30:58 localhost systemd: Started Telnet Server (172.16.1.11:5063).
Apr 5 13:30:58 localhost systemd: Starting Telnet Server (172.16.1.11:5063)...
vEdge2の設定の確認
ローカルブレイクアウトの際、パケットの送信元アドレスをvEdgeのWANインタフェースのアドレスに変換する必要があるため、vEdge2のge0/0にnatコマンドを設定します。
また、動作確認のためにapp-visibilityコマンドを設定します。
vpn 0
interface ge0/0
nat
!
!
policy
app-visibility
VPN Listの確認
VPN Listで、Traffic Data Policyの適用先のVPNのIDを指定します。
Site Listの確認
Site Listで、Traffic Data Policyの適用先のSiteのIDを指定します。
Traffic Data Policyの確認
ローカルブレイクアウト用のアクションはNAT VPNになります。(分かり難い。。。)
Service VPNのパケットを、Transport VPN(ID = 0)に強制的に転送するイメージになります。
他の通信はハブ拠点に転送させるために、Default ActionにはAcceptを設定します。
Centralized Control Policyの確認
Traffic Rules > Traffic DataからCentralized Control Policyにローカルブレイクアウト用のTraffic Data Policyをインポートしておきます。
Policy Application > Traffic DataからインポートしたTraffic Data Policyの適用先のSiteとVPNを指定します。
vSmartへのCentralized Control Policyの適用
vSmartにCentralized Control Policyを適用します。
適用方法が分からない場合は、こちらの記事を参照お願いします。
Centralized Control Policy適用後のvSmartの状態確認
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
destination-port 23
protocol 6
!
action accept
nat use-vpn 0
!
!
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
Centralized Control Policy適用後のvEdgeの状態確認
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
destination-port 23
protocol 6
action accept
nat use-vpn 0
no nat fallback
default-action accept
from-vsmart lists vpn-list VPN_10
vpn 10
Centralized Control Policy適用後の疎通確認
R2からSV1に対して、Telnetを実施します。
vEdge2のshow app dpi flows detailsコマンドの出力にTLOCの情報が含まれていないため、vEdge2はTelnetのパケットを、オーバレイ経由でvEdge1に転送せずに、ローカルブレイクアウトしていることが確認できます。
vEdge2# show app dpi flows detail
app dpi flows vpn 10 20.1.1.12 172.16.1.100 11777 23 tcp
application telnet
family Terminal
active-since 2020-04-05T12:49:24+00:00
packets 65
octets 2923
vEdge2でshow ip nat filterコマンドを実行することで、NATによりアドレス変換されたセッションが確認できます。
vEdge2# show ip nat filter
PRIVATE PRIVATE PRIVATE PUBLIC PUBLIC PUBLIC
NAT NAT SOURCE PRIVATE DEST SOURCE DEST SOURCE PUBLIC 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
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
0 ge0/0 10 tcp 20.1.1.12 172.16.1.100 11777 23 172.16.2.2 172.16.1.100 11777 23 established 0:00:54:47 36 2189 29 1904 -
SV1のTelnetのアクセスログを見ると、vEdge2のWANインタフェースのアドレスが確認できます。
[root@localhost ~]# cat /var/log/messages | grep Telnet
Apr 5 13:39:17 localhost systemd: Started Telnet Server (172.16.2.2:11777).
Apr 5 13:39:17 localhost systemd: Starting Telnet Server (172.16.2.2:11777)...
補足ですが、cEdgeの方が、ローカルブレイクアウト時のフロー情報はより詳細に確認できます。
cEdge#show sdwan app-fwd dpi flows detail
app-fwd cflowd flows-detail vpn 10 src-ip 10.1.1.11 dest-ip 20.190.141.229 src-port 50620 dest-port 443 dscp 0 ip-proto 6
tcp-cntrl-bits 26
icmp-opcode 0
total-pkts 15
total-bytes 1375
start-time "Wed Aug 21 06:45:29 2019"
egress-intf-name GigabitEthernet0/0/1
ingress-intf-name GigabitEthernet0/1/1
application ms-office-365
family microsoft-office
コメント