NEC IXで片拠点がプライベートアドレスを持つ場合のIPSec設定を紹介します。IPsecの通信経路上にNAT機器が存在する場合は、udp500, udp4500を用いてNAT変換前のIPアドレスを通知する「NATトラバーサル」と呼ばれる機能を有効にする必要があります。
NEC IXで「NATトラバーサル」を有効にできるのはversion9.2以降です。NEC IXのファームウェアは一般公開されていませんので、バージョンアップは極めて困難です。ヤフオクなどでNEC IXを入手する場合は、ファームウェアバージョンに注意が必要です。
設定まとめ
コマンド一覧
IKEv2 IPsecに関連するコマンド一覧は以下の通りです。「NEC IXのIKEv2 IPsec設定 両拠点 固定IPアドレス」と「NEC IXのIKEv2 IPsec設定 片拠点 プライベートIPアドレス」に載せたコマンドは説明を省略します。
Router(config)# interface Tunnel0.0 Router(config-Tunnel0.0)# ikev2 peer any authentication psk id [keyid|ipv4|fqdn] <value>
対向拠点の指定
対向拠点のIPアドレスが不定となる場合は、peerを「any」として指定できます。
Router(config)# interface Tunnel0.0 Router(config-Tunnel0.0)# ikev2 peer any authentication psk id [keyid|ipv4|fqdn] <value>
動作確認
動作確認の構成
以下の環境で動作確認を行います。
+------------------+ | Rocky Linux 8.5 | | host010 | +-------+----------+ ens224 | .10 | | 192.168.10.0/24 | G1.0 | .1 +-------+----------+ | NEC IX 2015 | | R10 | +-------+----------+ G0.0 | .10 | | 200.0.10.0/24 | eth0 | .1 +-------+----------+ | VyOS 1.4 | | Internet | +-------+----------+ eth1 | .1 | | 200.0.20.0/24 | G0.0 | .dhcp +-------+----------+ | NEC IX 2015 | | R20 | +-------+----------+ G1.0 | .1 | | 192.168.20.0/24 | ens224 | .20 +-------+----------+ | Rocky Linux 8.5 | | host020 | +------------------+
初期設定
IX2015の初期設定は以下の通りとします。設定はIPアドレスとインターネットに接続するためのNATしか投入していません。
動作確認 (1) IPsec確立
initiator側
initiator側のIPアドレスは不定です。デフォルト設定の場合はlocal idはIPアドレスになりますので、デフォルト設定ではlocal idが不定になってしまいます。
そこで、initiator側はlocal idを明示指定する必要があります。
[R20:IX2015] ikev2 authentication psk id ipv4 200.0.10.10 key char P@ssw0rd ! interface Tunnel0.0 tunnel mode ipsec-ikev2 ip address 169.254.0.20/24 ip tcp adjust-mss auto ikev2 connect-type auto ikev2 ipsec pre-fragment ikev2 local-authentication id keyid R20 ikev2 negotiation-direction initiator ikev2 peer 200.0.10.10 authentication psk id ipv4 200.0.10.10 no shutdown
responder側
responder側から見ると対向拠点のIPアドレスは不定になります。このような場合は、対向のIPアドレスを「any」と指定します。
[R10:IX2015] ikev2 authentication psk id keyid R20 key char P@ssw0rd ! interface Tunnel0.0 tunnel mode ipsec-ikev2 ip address 169.254.0.10/24 ip tcp adjust-mss auto ikev2 connect-type auto ikev2 ipsec pre-fragment ikev2 negotiation-direction responder ikev2 peer any authentication psk id keyid R20 no shutdown
NAT併用時の注意
NAT併用時はudp500などの受信許可が必要になる事もあります。R20がinitiatorでR10がresponderになりますので、受信許可が必要なのはR10のみです。
NEC IXのバージョンによっては暗黙的にudp500などが許可されるため、設定投入を省略できます。
[R10:IX2015] interface GigaEthernet0.0 ip napt static GigaEthernet0.0 50 ip napt static GigaEthernet0.0 udp 500
IPsec確立の確認
ikev2 saが確立された事を確認します。local id, remote id, initiator, responderあたりの仕様がやや複雑なので注意深く観察しましょう。
[R10:IX2015] R10(config)# show ikev2 sa IKEv2 SA - 1 created Interface Tunnel0.0 SPI (I)0x5b199b22d1531af9 (R)0x71c44759805339a2 Remain lifetime[sec] : 84555 Serial : 1 Direction : responder Local Addr : 200.0.10.10:500 Peer Addr : 200.0.20.20:500 Local ID : IPV4-ADDR 200.0.10.10 Peer ID : KEY-ID R20 Status : establish Local message ID : 0 Peer message ID : 2 Encryption alg : AES-CBC-256 <omitted>
[R20:IX2015] R20(config)# show ikev2 sa IKEv2 SA - 1 created Interface Tunnel0.0 SPI (I)0x5b199b22d1531af9 (R)0x71c44759805339a2 Remain lifetime[sec] : 84530 Serial : 5 Direction : initiator Local Addr : 200.0.20.20:500 Peer Addr : 200.0.10.10:500 Local ID : KEY-ID R20 Peer ID : IPV4-ADDR 200.0.10.10 Status : establish Local message ID : 2 Peer message ID : 0 Encryption alg : AES-CBC-256 <omitted>
ikev2 child-saが確立された事を確認します。
[R10:IX2015] R10(config)# show ikev2 child-sa Child SA - 1 connected Interface Tunnel0.0 IKE Peer ID : KEY-ID R20 IKE SPI (I)0x5b199b22d1531af9 (R)0x71c44759805339a2 IKE SA serial : 1 Child SA Protocol : ESP Local Addr : 200.0.10.10 Peer Addr : 200.0.20.20 Enc alg : AES-CBC-256 Hash alg : HMAC-SHA2-512-256 Remain lifetime[sec] : 26912 Anti-replay : on Direction is outbound <omitted>
[R20:IX2015] R20(config)# show ikev2 child-sa Child SA - 1 connected Interface Tunnel0.0 IKE Peer ID : IPV4-ADDR 200.0.10.10 IKE SPI (I)0x5b199b22d1531af9 (R)0x71c44759805339a2 IKE SA serial : 5 Child SA Protocol : ESP Local Addr : 200.0.20.20 Peer Addr : 200.0.10.10 Enc alg : AES-CBC-256 Hash alg : HMAC-SHA2-512-256 Remain lifetime[sec] : 26878 Anti-replay : on Direction is outbound <omitted>
トンネル間の疎通を確認します。
[R10:IX2015] R10(config)# ping 169.254.0.20 count 3 PING 169.254.0.10 > 169.254.0.20 56 data bytes 64 bytes from 169.254.0.20: icmp_seq=0 ttl=64 time=1.076 ms 64 bytes from 169.254.0.20: icmp_seq=1 ttl=64 time=0.966 ms 64 bytes from 169.254.0.20: icmp_seq=2 ttl=64 time=0.886 ms --- 169.254.0.20 ping statistics --- 3 packets transmitted, 3 packets received, 0% packet loss round-trip (ms) min/avg/max = 0.886/0.976/1.076
動作確認 (2) 拠点間の疎通確認
ルーティング設定
host010とhost030間で疎通可能になるようにstatic routeを定義します。
[R10:IX2015] ip route 192.168.20.0/24 Tunnel0.0
[R20:IX2015] ip route 192.168.10.0/24 Tunnel0.0
疎通確認
host010(192.168.10.10)とhost020(192.168.20.20)の間で疎通を確認します。
[host010:RockyLinux8.5] [root@host010 ~]# ping -c 3 192.168.20.20 PING 192.168.20.20 (192.168.20.20) 56(84) bytes of data. 64 bytes from 192.168.20.20: icmp_seq=1 ttl=62 time=1.70 ms 64 bytes from 192.168.20.20: icmp_seq=2 ttl=62 time=1.76 ms 64 bytes from 192.168.20.20: icmp_seq=3 ttl=62 time=1.43 ms --- 192.168.20.20 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2004ms rtt min/avg/max/mdev = 1.425/1.628/1.763/0.153 ms