はじめに
前回のブログではNSX T0/T1 Gateway 間でIPsecを張るための具体的な設定を紹介しました。今回はIPsecの対向をCisco ルータで想定した場合の設定例を紹介していきます。前回NSXではIKEv2のポリシーベースIPsecとルートベースIPsecの2種類のIPsec方式をサポートしていると紹介しましたが、Cisco ルータにおいても同様にサポートするため、それぞれについて解説していきます。
ポリシーベースIPsec
構築するネットワーク構成は以下となります。
SiteA (Cisco 側)
ユーザセグメント:172.16.30.0/24
IPsec用エンドポイントIP:172.16.104.81
SiteB (NSX 側)
ユーザセグメント:172.16.10.0/24
IPsec用エンドポイントIP:10.34.34.34
NAT外部ルータ:223.135.xx.xx
NSX ver.3.2.3.1
Cisco ISR ver.15.8(3)M2
設定手順
①T0ゲートウェイにエンドポイント間のルートを学習
②NSX IPsecの設定
1.VPNサービスの設定
2.NSX IPsec Session (ポリシーベース)の作成
3.NSX ローカルエンドポイントの作成
※ここまではNSX-NSXケースと同様(前回のブログ)
③Cisco ルータの設定
1.IKEv2 IPsecの設定
2.アンダーレイルートの設定
3.インターフェースへの適用
①T0ゲートウェイにエンドポイント間のルートを学習
この後設定するIPsecエンドポイントIPは対向サイトへ広報している必要があります。アンダーレイをダイナミックルーティングで構築している場合は、このIPを再配送している必要があります。T1およびT0ゲートウェイで再配送の設定を確認します。
ネットワーク > Tier-1 ゲートウェイ >ルートアドバタイズ
ネットワーク > Tier-0 ゲートウェイ >ルート再配分
(スタティックルートを用いて構築している場合は対向IPsecエンドポイントIPへのスタティックルートを追加します。)
②NSX IPsecの設定
ネットワーク > VPN > VPNサービス > IPsec
ネットワーク > VPN > IPsecセッション > IPsecセッションの追加
ローカルエンドポイントを新規作成
(ローカルIDは空欄のままだとIPアドレスがそのまま入る)
リモートIP(対向のIP)、ローカル・リモートのIP、プリシェアードキーを入力
③Cisco ルータの設定
1.IKEv2 IPsecの設定
ここではNSXのデフォルトIKEv2/IPsecプロファイルと合致する暗号化アルゴリズムやパラメータを記載しています
crypto ikev2 proposal Ikev2Proposal
encryption aes-cbc-128
integrity sha256
group 14
!
crypto ikev2 policy Ikev2Policy
match fvrf any
proposal Ikev2Proposal
!
crypto ikev2 keyring Keys
peer NSX
address 223.135.xx.xx
pre-shared-key local PASSWORD
pre-shared-key remote PASSWORD
!
crypto ikev2 profile Ikev2Profile
match identity remote address 223.135.xx.xx 255.255.255.255
authentication remote pre-share
authentication local pre-share
keyring local Keys
!
crypto ipsec transform-set myset esp-gcm
mode tunnel
!
crypto map mymap 10 ipsec-isakmp
set peer 223.135.xx.xx
set transform-set myset
set ikev2-profile Ikev2Profile
match address 100
2.アンダーレイルートの設定
3.インターフェースへの適用
今回アンダーレイルーとはスタティックルートで設定する。
interface GigabitEthernet0
ip address 172.16.104.81 255.255.252.0
crypto map mymap
!
ip route 0.0.0.0 0.0.0.0 172.16.107.254
!
access-list 100 permit ip 172.16.30.0 0.0.0.255 172.16.10.0 0.0.0.255
ポリシーベースの設定は以上になる。
(状態確認はこのあとのルートベースIPsec で紹介)
ルートベースIPsec
構築するネットワーク構成は以下となります。
SiteA
ユーザセグメント:172.16.30.0/24
IPsec用エンドポイントIP:172.16.104.81
IPsec用トンネルインターフェースIP:10.222.222.2/24
SiteB
ユーザセグメント:172.16.10.0/24
IPsec用エンドポイントIP:10.34.34.34
IPsec用トンネルインターフェースIP:10.222.222.1/24
NAT外部ルータ:223.135.xx.xx
NSX ver.3.2.3.1
Cisco ISR ver.15.8(3)M2
設定手順
①T0ゲートウェイにエンドポイント間のルートを学習(ポリシーベースと同様のため省略)
②NSX IPsecの設定
1.VPNサービスの設定
2.NSX IPsec Session (ルートベース)の作成
3.NSX ローカルエンドポイントの作成
③T0ゲートウェイにトンネル経由のルートを追加
※ここまではNSX-NSXケースと同様(前回のブログ)
④Cisco ルータの設定
1.IKEv2 IPsecの設定
2.アンダーレイルートの設定
3.インターフェースへの適用
4.オーバーレイルートの設定
②NSX IPsecの設定
2.NSX IPsec Session (ルートベース)の作成
ネットワーク > VPN > IPsecセッション > IPsecセッションの追加 からルートベースを選択
ポリシーベースにはなかった設定としてトンネルインターフェイスCIDRの指定が必要となる。
VPN 経由の通信はこのトンネルインターフェースを経由し、対向のトンネルIPをネクストホップとなる転送を行うが、その転送のためのルートはスタティックルートで定義するかBGPにより広報して貰う必要がある。以下はスタティックルートおよびBGPの設定例となる。
*NSXではトンネルインターフェースでのOSPFはサポートしていない
③ゲートウェイにトンネル経由のルートを追加(スタティックルートによるルート追加の場合)
ネットワーク > Tier-0 ゲートウェイ or Tier-1 ゲートウェイ >ルーティング > スタティックルートからルートを追加
対向サイトのネットワークサブネットを下記、ネクストホップは対向のトンネルインターフェースIPを入力
③T0ゲートウェイにトンネル経由のルートを追加(BGPによるルートの広報の場合)
ネットワーク > Tier-0 ゲートウェイ or Tier-1 ゲートウェイ >BGP > BGP ネイバー を設定する
BGPネイバーIPは対向のトンネルIPで、送信元アドレスは自身のトンネルIPをいれる
④Cisco ルータの設定
1.IKEv2 IPsecの設定
ここではNSXのデフォルトIKEv2/IPsecプロファイルと合致する暗号化アルゴリズムやパラメータを記載しています
crypto ikev2 proposal Ikev2Proposal
encryption aes-cbc-128
integrity sha256
group 14
!
crypto ikev2 policy Ikev2Policy
match fvrf any
proposal Ikev2Proposal
!
crypto ikev2 keyring Keys
peer NSX
address 223.135.xx.xx
pre-shared-key local PASSWORD
pre-shared-key remote PASSWORD
!
crypto ikev2 profile Ikev2Profile
match identity remote address 223.135.xx.xx 255.255.255.255
authentication remote pre-share
authentication local pre-share
keyring local Keys
!
crypto ipsec transform-set myset esp-gcm
mode transport
!
crypto ipsec profile IpsecProfile
set transform-set myset
set ikev2-profile Ikev2Profile
2.アンダーレイルートの設定
3.インターフェースへの適用
4.オーバーレイルートの設定
オーバーレイルートがスタティックルートの場合
interface Tunnel1
ip address 10.222.222.2 255.255.255.0
tunnel source GigabitEthernet0
tunnel mode ipsec ipv4
tunnel destination 223.135.xx.xx
tunnel protection ipsec profile IpsecProfile
!
interface GigabitEthernet0
ip address 172.16.104.81 255.255.252.0
!
ip route 0.0.0.0 0.0.0.0 172.16.107.254 ←対向IPsecエンドポイントへのアンダーレイルート
!
ip route 172.16.10.0 255.255.255.0 Tunnel1 ←対向クライアントセグメントへのオーバーレイルート
オーバーレイルートがBGPの場合 (*NSXではトンネルインターフェースでのOSPFはサポートしていない)
interface Tunnel1
ip address 10.222.222.2 255.255.255.0
tunnel source GigabitEthernet0
tunnel mode ipsec ipv4
tunnel destination 223.135.xx.xx
tunnel protection ipsec profile IpsecProfile
!
interface GigabitEthernet0
ip address 172.16.104.81 255.255.252.0
!
router bgp 64512 ←対向クライアントセグメントへのオーバーレイ用BGP
bgp log-neighbor-changes
neighbor 10.222.222.1 remote-as 65001
!
address-family ipv4
network 172.16.30.0 mask 255.255.255.0
neighbor 10.222.222.1 activate
exit-address-family
!
ip route 0.0.0.0 0.0.0.0 172.16.107.254 ←対向IPsecエンドポイントへのアンダーレイルート
ルートベースの設定は以上になる。
CiscoルータのIPsec状態確認例
以下はルートベースの場合の出力になります。
nsx-isr-01#show crypto ikev2 sa
IPv4 Crypto IKEv2 SA
Tunnel-id Local Remote fvrf/ivrf Status
2 172.16.104.81/4500 223.135.xx.xx/4500 none/none READY
Encr: AES-CBC, keysize: 128, PRF: SHA256, Hash: SHA256, DH Grp:14, Auth sign: PSK, Auth verify: PSK
Life/Active Time: 86400/418 sec
IPv6 Crypto IKEv2 SA
nsx-isr-01#show crypto ikev2 session
IPv4 Crypto IKEv2 Session
Session-id:22, Status:UP-ACTIVE, IKE count:1, CHILD count:2
Tunnel-id Local Remote fvrf/ivrf Status
2 172.16.104.81/4500 223.135.xx.xx/4500 none/none READY
Encr: AES-CBC, keysize: 128, PRF: SHA256, Hash: SHA256, DH Grp:14, Auth sign: PSK, Auth verify: PSK
Life/Active Time: 86400/425 sec
Child sa: local selector 0.0.0.0/0 – 255.255.255.255/65535
remote selector 0.0.0.0/0 – 255.255.255.255/65535
ESP spi in/out: 0xA9F0D2ED/0xF4B9001
Child sa: local selector 0.0.0.0/0 – 255.255.255.255/65535
remote selector 0.0.0.0/0 – 255.255.255.255/65535
ESP spi in/out: 0xB9CC9DFF/0x901C9000
IPv6 Crypto IKEv2 Session
IKEv2 セッションが正常に張れている。
nsx-isr-01#show crypto ipsec sa
interface: Tunnel1
Crypto map tag: Tunnel1-head-0, local addr 172.16.104.81
protected vrf: (none)
local ident (addr/mask/prot/port): (0.0.0.0/0.0.0.0/0/0)
remote ident (addr/mask/prot/port): (0.0.0.0/0.0.0.0/0/0)
current_peer 223.135.xx.xx port 4500
PERMIT, flags={origin_is_acl,}
#pkts encaps: 440, #pkts encrypt: 440, #pkts digest: 440
#pkts decaps: 440, #pkts decrypt: 440, #pkts verify: 440
#pkts compressed: 0, #pkts decompressed: 0
#pkts not compressed: 0, #pkts compr. failed: 0
#pkts not decompressed: 0, #pkts decompress failed: 0
#send errors 0, #recv errors 0
local crypto endpt.: 172.16.104.81, remote crypto endpt.: 223.135.xx.xx
plaintext mtu 1438, path mtu 1500, ip mtu 1500, ip mtu idb GigabitEthernet0
current outbound spi: 0xF4B9001(256610305)
PFS (Y/N): Y, DH group: group14
inbound esp sas:
spi: 0xB9CC9DFF(3117194751)
transform: esp-gcm ,
in use settings ={Tunnel UDP-Encaps, }
conn id: 1024, flow_id: SW:24, sibling_flags 80000040, crypto map: Tunnel1-head-0
sa timing: remaining key lifetime (k/sec): (4608000/3159)
IV size: 8 bytes
replay detection support: Y
Status: ACTIVE(ACTIVE)
spi: 0xA9F0D2ED(2851132141)
transform: esp-gcm ,
in use settings ={Tunnel UDP-Encaps,
conn id: 1025, flow_id: SW:25, sibling_flags 80000040, crypto map: Tunnel1-head-0
sa timing: remaining key lifetime (k/sec): (4274988/3211)
IV size: 8 bytes
replay detection support: Y
Status: ACTIVE(ACTIVE)
inbound ah sas:
inbound pcp sas:
outbound esp sas:
spi: 0x901C9000(2417790976)
transform: esp-gcm ,
in use settings ={Tunnel UDP-Encaps, }
conn id: 1023, flow_id: SW:23, sibling_flags 80000040, crypto map: Tunnel1-head-0
sa timing: remaining key lifetime (k/sec): (4608000/3159)
IV size: 8 bytes
replay detection support: Y
Status: ACTIVE(ACTIVE)
spi: 0xF4B9001(256610305)
transform: esp-gcm ,
in use settings ={Tunnel UDP-Encaps, }
conn id: 1026, flow_id: SW:26, sibling_flags 80000040, crypto map: Tunnel1-head-0
sa timing: remaining key lifetime (k/sec): (4274988/3211)
IV size: 8 bytes
replay detection support: Y
Status: ACTIVE(ACTIVE)
outbound ah sas:
outbound pcp sas:
IPsec経由の通信が正常にカウントされている。
nsx-isr-01#show ip bgp
BGP table version is 4, local router ID is 172.16.104.81
Status codes: s suppressed, d damped, h history, * valid, > best, i – internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
t secondary path,
Origin codes: i – IGP, e – EGP, ? – incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
*> 172.16.10.0/24 10.222.222.1 0 0 65001 ?
*> 172.16.30.0/24 0.0.0.0 0 32768 insx-isr-01#show ip route
Codes: L – local, C – connected, S – static, R – RIP, M – mobile, B – BGP
D – EIGRP, EX – EIGRP external, O – OSPF, IA – OSPF inter area
N1 – OSPF NSSA external type 1, N2 – OSPF NSSA external type 2
E1 – OSPF external type 1, E2 – OSPF external type 2
i – IS-IS, su – IS-IS summary, L1 – IS-IS level-1, L2 – IS-IS level-2
ia – IS-IS inter area, * – candidate default, U – per-user static route
o – ODR, P – periodic downloaded static route, H – NHRP, l – LISP
a – application route
+ – replicated route, % – next hop override, p – overrides from PfR
Gateway of last resort is 172.16.107.254 to network 0.0.0.0
S* 0.0.0.0/0 [1/0] via 172.16.107.254
10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C 10.222.222.0/24 is directly connected, Tunnel1
L 10.222.222.2/32 is directly connected, Tunnel1
172.16.0.0/16 is variably subnetted, 5 subnets, 3 masks
B 172.16.10.0/24 [20/0] via 10.222.222.1, 00:19:32
C 172.16.30.0/24 is directly connected, Vlan172
L 172.16.30.254/32 is directly connected, Vlan172
C 172.16.104.0/22 is directly connected, GigabitEthernet0
L 172.16.104.81/32 is directly connected, GigabitEthernet0
対向のクライアントセグメントルートが学習できている。
[Tips: NSX VPNトンネルの冗長化]
NSX のルートベースIPsecではトンネルインターフェースの冗長をサポートしている。冗長されたWAN回線がある場合は、回線ごとにIPsecを構築することでWAN回線の耐障害性を高めることができる。この場合、ルートの広報はBGPを利用する。(スタティックルートはサポートしない)