はじめに
この記事は2021年Cisco Systems 合同会社 社員有志 による Advent Calendar の記事の一つです。
この記事の目的
CiscoSD-WAN OSバージョン17.7からサポートされたIPv6-DHCP-PD/NAT66機能を使ってSD-WANルータをIPv6環境で構築する基本設定を紹介します。この機能は主にLAN側のIPv6のVRFからWAN側のIPv6インターネット向けの通信を可能とするものです。同時に、ルータデュアル構成の際に必要となるコントローラとのコネクションをルータ間を透過させる機能、TLOC-ExtensionをIPv6環境下で行う際にも応用することができます。
目次
新機能
DCHP-PD/NAT66機能はエッジルータのWAN側IPv6インタフェースとキャリアのDHCPv6サーバとのDHCP-PDのやりとりで取得したプレフィックス(/56ビットマスク等)の中から、動的に長いマスク長(/64ビットマスク等*1)のプレフィックスを作成します。
オリジナルのLAN側IPv6アドレスに対して、NAT66(IPv6-IPv6)を行う際にこの長いマスク長のアドレスを対応させて異なるVRF間の通信を可能とします。
全体構成
DHCPv6サーバのサンプルConfiguration
# DHCP PD Pool
ipv6 local pool PD0 2001:2:AAAA::/52 56
ipv6 local pool PD 2001:2:1111::/52 56
ipv6 local pool PD2 2001:2:2222::/52 56
# DHCP Pool
ipv6 dhcp pool TEST0
prefix-delegation pool PD0 lifetime 120 60
address prefix 2001:2:0:1::/64
ipv6 dhcp pool TEST1
prefix-delegation pool PD lifetime 120 60
address prefix 2001:2:1:1::/64
ipv6 dhcp pool TEST2
prefix-delegation pool PD2 lifetime 120 60
address prefix 2001:2:2:1::/64
# Interface Configuration
interface GigabitEthernet1
ipv6 address 2001:2:0:1::1/64
ipv6 enable
ipv6 dhcp server TEST0 rapid-commit
interface GigabitEthernet2
ipv6 address 2001:2:1:1::1/64
ipv6 enable
ipv6 dhcp server TEST rapid-commit
interface GigabitEthernet3
ipv6 address 2001:2:2:1::1/64
ipv6 enable
ipv6 dhcp server TEST2 rapid-commit
ルータシングル構成
全体構成の下左側、ルータ一台構成での設定例を記載します。
ADD-ONテンプレート
DHCP-PD/NAT66設定はCLI-ADD-ONテンプレート内に記載してルータにアタッチしてください。
nat66 prefix inside {{ipv6-nat-inside-address}} outside prefix-from-provider vrf 10
nat66 route vrf 10 ::/0 global
interface GigabitEthernet2
ipv6 dhcp client pd prefix-from-provider
ipv6 dhcp client request vendor
ipv6 nd ra suppress all
{{ipv6-nat-inside-address}}はルータ毎に変化させることができる変数として設定し、
実際のサンプルでは"FD00:1:1:1::/64"のLAN側IPv6プレフィックスを設定しています。
ステータス確認
各種ステータスの確認コマンドは以下の通りです。
C8KV-001#show nat66 prefix
Prefixes configured: 1
NAT66 Prefixes
Id: 9 Inside FD00:1:1:1::/64 Outside 2001:2:AAAA:1::/64 vrf 10
ルータのLAN側VRF10のアドレス"FD00:1:1:1::/64"と
DHCPv6サーバで指定されたPD-Pool(PD0)のアドレス"2001:2:AAAA:1::/64"とが対応していることがわかります。
C8KV-001#show nat66 statistics
NAT66 Statistics
Global Stats: enable count 1
Packets translated (In -> Out)
: 5
Packets translated (Out -> In)
: 5
IPv6のVRF間通信を行うとIN/OUTのカウンタがカウントアップします。
ルータデュアル構成
ルータ二台構成でのTLOC-Extension構成を作成します。
SD-WANルータはコントローラとの接続を行う際に複数のインタフェースを使って接続することができます。二台構成の場合はルータ同士をSubインタフェースを使って接続しコントローラとの接続を中継し、同時にSD-WANのIPsecトンネルも中継することが可能となります。
ただし、これら通信のソースIPアドレスはルータ間に設定したアドレスがソースとなりますので、ルータ間アドレスは動的ルーティング等の環境下でない場合はルータ間プレフィックスの情報がWAN側に広報されません。この問題を回避するために通常IPv4では中継ルータのWAN側インタフェースでNATをすることで解決します。IPv6アドレス空間でも同じようにNAT66機能を使うことでアンダーレイのルーティングの問題を解決することができます。
ADD-ONテンプレートサンプル
nat66 prefix inside {{ipv6-nat-inside-address-tloc}} outside prefix-from-provider
nat66 prefix inside {{ipv6-nat-inside-address}} outside prefix-from-provider vrf 10
nat66 route vrf 10 ::/0 global
interface GigabitEthernet2
ipv6 dhcp client pd prefix-from-provider
ipv6 dhcp client request vendor
ipv6 nd ra suppress all
sdwan
interface GigabitEthernet2
ipv6 access-list test in
exit
policy
ipv6 access-list test
default-action accept
!
policy-map type epbr ipv6_tloc_ext
class class-default
set ipv6 next-hop {{ipv6-next-hop}}
!
!
interface GigabitEthernet4.{{tloc-recieve-vlan}}
service-policy type epbr input ipv6_tloc_ext
-
nat66 prefix inside {{ipv6-nat-inside-address-tloc}} outside prefix-from-provider
この設定で同一GlobalVRF間でのNAT66を行います。変数に設定するIPv6アドレスはルータ間のプレフィックスを指定してください。ルータ2号機場合は"fd00:4:1:1::/64"を隣のルータがトンネル接続のソースとなるVLANをプレフィックス設定します。ルータ3号機の場合は"FD00:3:1:1::/64"と逆になることに注意が必要です。 -
インタフェースのACL
sdwan
interface GigabitEthernet2
ipv6 access-list test in
exit
policy
ipv6 access-list test
default-action accept
!
TLOC-Extensionで透過するIPv6通信を破棄しないためIPv6のACLを追加します。
今回使用するソフトウェアバージョン上の制限であり、今後のバージョンでは必須設定ではなくなるように調整中です。 -
ePBR
policy-map type epbr ipv6_tloc_ext
class class-default
set ipv6 next-hop {{ipv6-next-hop}}
!
interface GigabitEthernet4.tloc-recieve-vlan
service-policy type epbr input ipv6_tloc_ext
TLOC-Extensionで透過するIPv6接続パケットはIPv6のルーティングテーブルを参照しますが、
Gi2及びGi4.100(2号機)/4.200(3号機)2つのインタフェースからIPv6デフォルトルートを取得しますので、ルータ間でのルートループとなってしまいます。このためTLOC受け側のインタフェースにPBRを行うことで強制的にWAN側に通信を透過させる設定を追加します。
{{tloc-recieve-vlan}}に設定する値は2号機では200、3号機では100とこちらも逆転することに注意が必要です。
{{ipv6-next-hop}}に設定する値はそれぞれのルータのGi2のデフォルトルートに対するNexthopを指定します。
ステータス確認(デュアルルータ)
まずはグローバルVRFでのNAT66の動作について確認していきます。
C8KV-002#sh nat66 prefix
Prefixes configured: 2
NAT66 Prefixes
Id: 7 Inside FD00:4:1:1::/64 Outside 2001:2:1111:100::/64 vrf default
Id: 8 Inside FD00:2:1:1::/64 Outside 2001:2:1111:101::/64 vrf 10
C8KV-003#show nat66 prefix
Prefixes configured: 2
NAT66 Prefixes
Id: 1 Inside FD00:3:1:1::/64 Outside 2001:2:2222::/64 vrf default
Id: 2 Inside FD00:2:1:1::/64 Outside 2001:2:2222:1::/64 vrf 10
Default(Global) VRF上にNAT66設定が行われており、
2号機のルータ間の「受け」側のVLANプレフィックスが内部アドレスに、外部アドレスにはDHCP-PDで取得した/52ビットマスクのうちから一つ”2001:2:1111:1: 100 ::/64"が自動選択されています。同時にLAN側VRF10に対しては”2001:2:1111: 101 ::/64”が使用されています。3号機についても同様です。
以降からはSD-WANコントローラとの接続およびIPsecトンネルの接続状況を確認していきます。
C8KV-002#sh ipv6 route
ND ::/0 [2/0]
via FE80::20C:29FF:FE20:2FC, GigabitEthernet2
via FE80::20C:29FF:FE2D:95C4, GigabitEthernet4.100
C8KV-003#sh ipv6 route
ND ::/0 [2/0]
via FE80::20C:29FF:FE20:206, GigabitEthernet2
via FE80::20C:29FF:FE80:154D, GigabitEthernet4.200
SD-WANルータの2つのWAN側トンネルインタフェース向けにそれぞれデフォルトルートを取得していることがわかります。ルータ間のインタフェースはTLOC送信元のトンネルインタフェースのアドレスとTLOC受信側のアドレスとに分けられますが、RAでデフォルトルートを受信するために、トンネルインタフェースのアドレスについてはアドレスをAutoにし、TLOC受信側のアドレスについてはアドレスを固定にすることでこのルーティングの状態を作っています。
C8KV-002#sh sdwan control connections
PEER PEER CONTROLLER
PEER PEER PEER SITE DOMAIN PEER PRIV PEER PUB GROUP
TYPE PROT SYSTEM IP ID ID PRIVATE IP PORT PUBLIC IP PORT ORGANIZATION LOCAL COLOR PROXY STATE UPTIME ID
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
vsmart dtls 1.1.1.2 1000 1 2001:1:1:1::102 12346 2001:1:1:1::102 12346 EFTCPOCJP gold No up 5:00:21:36 0
vsmart dtls 1.1.1.2 1000 1 2001:1:1:1::102 12346 2001:1:1:1::102 12346 EFTCPOCJP silver No up 3:22:28:09 0
vbond dtls 0.0.0.0 0 0 2001:1:1:1::101 12346 2001:1:1:1::101 12346 EFTCPOCJP gold - up 5:00:21:36 0
vbond dtls 0.0.0.0 0 0 2001:1:1:1::101 12346 2001:1:1:1::101 12346 EFTCPOCJP silver - up 3:22:28:09 0
vmanage dtls 1.1.1.3 1000 0 2001:1:1:1::103 12346 2001:1:1:1::103 12346 EFTCPOCJP gold No up 5:00:21:20 0
各LinkのカラーGold/Silverからコントローラへの接続が成功しているのがわかります。
C8KV-002#sh sdwan bfd sessions
SOURCE TLOC REMOTE TLOC DST PUBLIC DST PUBLIC DETECT TX
SYSTEM IP SITE ID STATE COLOR COLOR SOURCE IP IP PORT ENCAP MULTIPLIER INTERVAL(msec UPTIME TRANSITIONS
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
5.1.1.1 1 up gold gold 2001:2:1:1:20c:29ff:fe80:1539 2001:2:0:1:20c:29ff:fe5d:7a8a 12346 ipsec 7 1000 10 5:00:15:18 2
5.1.1.1 1 up silver gold fd00:3:1:1:20c:29ff:fe80:154d 2001:2:0:1:20c:29ff:fe5d:7a8a 12346 ipsec 7 1000 10 4:17:19:34 3
C8KV-003#sh sdwan bfd sessions
SOURCE TLOC REMOTE TLOC DST PUBLIC DST PUBLIC DETECT TX
SYSTEM IP SITE ID STATE COLOR COLOR SOURCE IP IP PORT ENCAP MULTIPLIER INTERVAL(msec UPTIME TRANSITIONS
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
5.1.1.1 1 up silver gold 2001:2:2:1:20c:29ff:fe2d:95b0 2001:2:0:1:20c:29ff:fe5d:7a8a 12346 ipsec 7 1000 10 4:17:16:23 0
5.1.1.1 1 up gold gold fd00:4:1:1:20c:29ff:fe2d:95c4 2001:2:0:1:20c:29ff:fe5d:7a8a 12346 ipsec 7 1000 10 4:17:16:22 0
各LinkのカラーGold/Silverからシングルルータ拠点へのIPsecトンネルが接続されていることがわかります。
C8KV-002#sh ipv6 route vrf 10
IPv6 Routing Table - 10 - 7 entries
Codes: C - Connected, L - Local, S - Static, U - Per-user Static route
B - BGP, R - RIP, H - NHRP, I1 - ISIS L1
I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary, D - EIGRP
EX - EIGRP external, ND - ND Default, NDp - ND Prefix, DCE - Destination
NDr - Redirect, RL - RPL, O - OSPF Intra, OI - OSPF Inter
OE1 - OSPF ext 1, OE2 - OSPF ext 2, ON1 - OSPF NSSA ext 1
ON2 - OSPF NSSA ext 2, la - LISP alt, lr - LISP site-registrations
ld - LISP dyn-eid, lA - LISP away, le - LISP extranet-policy
lp - LISP publications, ls - LISP destinations-summary, a - Application
m - OMP, Nd - Nat-Route DIA
m FD00:1:1:1::/64 [251/0]
via 5.1.1.1%default, Sdwan-system-intf%default
C FD00:2:1:1::/64 [0/0]
via GigabitEthernet3, directly connected
L FD00:2:1:1::2/128 [0/0]
via GigabitEthernet3, receive
L FF00::/8 [0/0]
via Null0, receive
C8KV-002#
C8KV-003#sh ipv6 route vrf 10
IPv6 Routing Table - 10 - 7 entries
Codes: C - Connected, L - Local, S - Static, U - Per-user Static route
B - BGP, R - RIP, H - NHRP, I1 - ISIS L1
I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary, D - EIGRP
EX - EIGRP external, ND - ND Default, NDp - ND Prefix, DCE - Destination
NDr - Redirect, RL - RPL, O - OSPF Intra, OI - OSPF Inter
OE1 - OSPF ext 1, OE2 - OSPF ext 2, ON1 - OSPF NSSA ext 1
ON2 - OSPF NSSA ext 2, la - LISP alt, lr - LISP site-registrations
ld - LISP dyn-eid, lA - LISP away, le - LISP extranet-policy
lp - LISP publications, ls - LISP destinations-summary, a - Application
m - OMP
m FD00:1:1:1::/64 [251/0]
via 5.1.1.1%default, Sdwan-system-intf%default
C FD00:2:1:1::/64 [0/0]
via GigabitEthernet3, directly connected
L FD00:2:1:1::3/128 [0/0]
via GigabitEthernet3, receive
L FF00::/8 [0/0]
via Null0, receive
C8KV-003#
最後にLAN側VRF10のIPv6ルーティングテーブルを確認します。mのOMPで取得した対抗拠点のFD00:1:1:1::/64のプレフィックスが表示されます。