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
