NEC IXのIKEv2 IPsec設定 両拠点 固定IPアドレス

スポンサーリンク

NEC IXルータで両拠点がグローバルIPを保有する場合のIKEv2 IPsec設定を紹介します。

設定まとめ

コマンド一覧

IKEv2 IPsecに関連するコマンド一覧は以下の通りです。

ip access-list <acl_name> permit ip src <prefix> dest <prefix>
ike proposal <ike_proposal_name> encryption <encryption> hash <hash>
ike policy ike-policy peer <peer_addr> key <password> <ike_proposal_name>
ipsec autokey-proposal <ipsec_proposal_name> [<esp>...] [<ah>...]
ipsec autokey-map <policy_map_name> <acl_name> peer <peer_addr> <ipsec_proposal_name>
ipsec local-id <policy_map_name> <local_private_prefix>
ipsec remote-id <policy_map_name> <remote_private_prefix>
!
interface Tunnel0.0
  tunnel mode ipsec
  ip address <addr>
  ip tcp adjust-mss auto
  ipsec policy tunnel <policy_map_name> out
!
interface GigaEthernet0.0
  ip napt enable 
  ip napt static GigaEthernet0.0 50
  ip napt static GigaEthernet0.0 udp 500
  ip napt static GigaEthernet0.0 udp 4500  

とりあえず動く最小限の設定

IKEv2はIKEv1に比べると仕様がシンプル化されています。また、NEC IXでIKEv2を使用する場合は、暗黙的な設定やデフォルト値が利用できますので、以下コマンドのみでIPsecを確立する事ができます。グローバルIPアドレス同士で通信する場合は、<remote_id>と<remote_addr>は同じ値になります。

ikev2 authentication psk id ipv4 <remote_id> key char <password>
!
interface Tunnel0.0
  tunnel mode ipsec-ikev2
  ip address <tunnel_addr>
  ip tcp adjust-mss auto
  ikev2 connect-type auto
  ikev2 ipsec pre-fragment
  ikev2 peer <remote_addr> authentication psk id ipv4 <remote_id>
  no shutdown

事前共有鍵の設定

以下のコマンドで対向のID毎に事前共有鍵を定義できます。グローバルIP同士で通信する場合は、対向のIDはグローバルIPアドレスと同じ値になります。

ikev2 authentication psk id ipv4 <remote_id> key char <password>

IKEv2 saのパラメタ

NEC IX同士で接続する場合は、IKEv2 SAに関するパラメタ指定は不要です。互いにデフォルト設定を使用してIKEv2 SAを確立します。

NEC IX以外の機器と接続する場合やデフォルト以外のパラメタを使用する場合は、以下のようなコマンドで指定可能です。

ikev2 default-profile
  sa-proposal enc <encryption>
  sa-proposal integrity <hash>
  sa-proposal dh <gh-group>

設定例は以下の通りです。

ikev2 default-profile
  sa-proposal enc aes-cbc-256
  sa-proposal integrity sha2-512
  sa-proposal dh 2048-bit

IKEv2 child-saのパラメタ

IKEv1のISAKMPに相当する処理は、IKEv2ではchild-saと呼ばれます。NEC IX同士で接続する場合は、IKEv2 child-saに関するパラメタ指定は不要です。互いにデフォルト設定を使用してIKEv2 child-saを確立します。

NEC IX以外の機器と接続する場合やデフォルト以外のパラメタを使用する場合は、以下のようなコマンドで指定可能です。

ikev2 default-profile
  child-lifetime <sec>
  child-proposal enc <encryption>
  child-proposal integrity <hash>

設定例は以下の通りです。

ikev2 default-profile
  child-lifetime 28800
  child-proposal enc aes-cbc-256
  child-proposal integrity sha2-512

local-idの定義

以下のコマンドで自分自身のIDを定義する事ができます。省略した場合は自身のIPアドレスが設定されます。グローバルIPアドレスでIPsecを確立する場合は、特段の考慮は必要なく省略しても疎通可能になります。

ikev2 default-profile
  local-authentication id ipv4 <local-id>

トンネル設定

以下のようにTunnelインターフェースを定義するとIPsecが確立されます。

interface Tunnel0.0
  tunnel mode ipsec-ikev2
  ip address <tunnel_addr>
  ip tcp adjust-mss auto
  ikev2 connect-type auto
  ikev2 ipsec pre-fragment
  ikev2 peer <remote_addr> authentication psk id ipv4 <remote_id>
  no shutdown

Tunnelだけでは拠点間の疎通はできません。staticやBGPで適宜ルーティングを設定しましょう。以下はstatic routeを定義する構文です。

ip route <prefix> Tunnel0.0

NAT併用時の注意

NEC IXのNAPT service(インターネットからNEC IXへの接続許可)設定」で説明した通り、NAPTが設定されている状態ではNEC IXは自身へのパケットを破棄します。この破棄される挙動はIPsecに関するパケットも同様です。

以下のようにIPsecに関するパケットの受信を許可する設定が必要です。

protocol number 50(ESP)は明示的な許可なしに受信可能です。udp 4500はNATトラバーサルが必要な環境下のみ必要な設定です。

NEC IXのバージョンによってはudp500, udp4500が暗黙的に許可され、設定投入を省略する事もできます。

interface GigaEthernet0.0
  ip napt static GigaEthernet0.0 50
  ip napt static GigaEthernet0.0 udp 500
  ip napt static GigaEthernet0.0 udp 4500

動作確認

動作確認の構成

以下の環境で動作確認を行います。

+------------------+
|  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 | .20
+-------+----------+ 
|    NEC IX 2015   | 
|       R20        |
+-------+----------+
   G1.0 | .1 
        |
        | 192.168.20.0/24
        | 
 ens224 | .20
+-------+----------+
|  Rocky Linux 8.5 |
|     host020      |
+------------------+

初期設定

IX2015の初期設定は以下の通りとします。設定はIPアドレスとインターネットに接続するためのNATしか投入していません。

R10 : NEC IX 2015
! NEC Portable Internetwork Core Operating System Software
! IX Series IX2105 (magellan-sec) Software, Version 10.2.34, RELEASE SOFTWARE
! Compiled Mar 26-Fri-2021 16:04:41 JST #2
! Current time Nov 23-Tue-2021 12:03:45 JST
!
hostname R10
timezone +09 00
!
logging buffered 8192
logging subsystem all warn
logging timestamp datetime
!
username admin password hash 63cA632c6fBB8D099804ed6eBc758b@ administrator
!
!
ip ufs-cache enable
ip route default 200.0.10.1
!
!
!
!
!
!
!       
!
!
telnet-server ip enable
!
!
!
device GigaEthernet0
!
device GigaEthernet1
!
interface GigaEthernet0.0
  ip address 200.0.10.10/24
  ip napt enable
  no shutdown
!
interface GigaEthernet1.0
  ip address 192.168.10.1/24
  no shutdown
!
interface Loopback0.0
  no ip address
!
interface Null0.0
  no ip address
R20 : NEC IX 2015
! NEC Portable Internetwork Core Operating System Software
! IX Series IX2105 (magellan-sec) Software, Version 8.10.11, RELEASE SOFTWARE
! Compiled Aug 02-Fri-2013 13:57:45 JST #2
! Current time Nov 23-Tue-2021 11:46:48 JST
!
!
hostname R20
timezone +09 00
!
!
!
username admin password hash 0C34240482 administrator
!
!
!
!
!
!
logging buffered 131072
logging subsystem all warn
logging timestamp datetime
!       
!
ip route default 200.0.20.1
!
!
!
!
!
!
!
!
!
!
telnet-server ip enable
!
!
!
!
!
!
!
!
!
device GigaEthernet0
!
device GigaEthernet1
!
interface GigaEthernet0.0
  ip address 200.0.20.20/24
  ip napt enable
  no shutdown
!
interface GigaEthernet1.0
  ip address 192.168.20.1/24
  no shutdown
!
interface Loopback0.0
  no ip address
!
interface Null0.0
  no ip address
Internet : VyOS1.4
set interfaces ethernet eth0 address '200.0.10.1/24'
set interfaces ethernet eth0 hw-id '00:50:56:90:8e:9d'
set interfaces ethernet eth1 address '200.0.20.1/24'
set interfaces ethernet eth1 hw-id '00:50:56:90:a2:8c'
set service ssh disable-host-validation
set system config-management commit-revisions '100'
set system conntrack modules ftp
set system conntrack modules h323
set system conntrack modules nfs
set system conntrack modules pptp
set system conntrack modules sip
set system conntrack modules sqlnet
set system conntrack modules tftp
set system console device ttyS0 speed '115200'
set system host-name 'vyos'
set system login user admin authentication encrypted-password '$6$cl1DIDt8CHJnLXst$zNkGlajjlSDirfSVdmFEkVfkvj3rxjayuu1RfzvuJQ.rNzJlb3s995/1HZX91nvW83ZvINnGvXBG6Z.sWVE7W/'
set system login user vyos authentication encrypted-password '$6$BLBE.ChYBI4ynui8$u2B.sTlyz1d.5GEjLyQKQmNRPN3kDHb3ynAzolORLLGOYe3up4u3vNg93QWk1DkOBbRNgkJJyYYVkrMofOFgw1'
set system login user vyos authentication plaintext-password ''
set system ntp server time1.vyos.net
set system ntp server time2.vyos.net
set system ntp server time3.vyos.net
set system syslog global facility all level 'info'
set system syslog global facility protocols level 'debug'

動作確認 (1) 最小限設定

IPsec設定投入

IPsecを確立するための設定を入れます。

[R10:IX2015]
ikev2 authentication psk id ipv4 200.0.20.20 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 peer 200.0.20.20 authentication psk id ipv4 200.0.20.20
  no shutdown
[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 peer 200.0.10.10 authentication psk id ipv4 200.0.10.10
  no shutdown

NAT併用時の注意

NAT併用時はudp500などの接続許可が必要になる事もあります。

NEC IXのバージョンによっては暗黙的にudp500などが許可されるため、設定投入を省略できます。

[R10:IX2015]
interface GigaEthernet0.0
  ip napt static GigaEthernet0.0 50
  ip napt static GigaEthernet0.0 udp 500
[R20:IX2015]
interface GigaEthernet0.0
  ip napt static GigaEthernet0.0 50
  ip napt static GigaEthernet0.0 udp 500

IPsec確立確認

IPsecが確立された事を確認します。

IPsecが確立されるのは何らかの通信が開始されたタイミングですので、「NEC IXのIKEv1 IPsec設定 両拠点 固定IPアドレス」で示したIKEv1の場合は、pingなどで何らかの通信を発生させない限りIKEの確認はできません。

一方、NEC IXのIKE v2は設定投入のタイミングでパケットが生成されますので、pingコマンドなどを用いて通信を発生させずにIKEv2 SAの確認ができます。NEC IXのIKEv2は「仕様を知らない人でも何となくで動く」暗黙的な挙動が数多く設定されています。

IKEv2 saの確認結果は以下のようになります。

[R10:IX2015]
R10(config)# show ikev2 sa 
IKEv2 SA - 1 created
Interface Tunnel0.0
  SPI (I)0xe085cf8e0732f92f  (R)0xf1cae02858beca7d
    Remain lifetime[sec] : 85557
    Serial : 5
    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  : IPV4-ADDR 200.0.20.20
    Status : establish
    Local message ID : 2
    Peer message ID  : 3

  <omitted>

IKEv2 child-saの確認結果は以下のようになります。

[R10:IX2015]
R10(config)# show ikev2 child-sa 
Child SA - 1 connected
Interface Tunnel0.0
  IKE Peer ID : IPV4-ADDR 200.0.20.20
    IKE SPI (I)0xe085cf8e0732f92f  (R)0xf1cae02858beca7d
    IKE SA serial : 5
    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] : 27884
      Anti-replay : on

  <omitted>

拠点間の疎通確認

拠点間となるhost010(192.168.10.10)とhost020(192.168.20.20)の間の疎通を確認します。拠点間で疎通可能なようにするにはIPsecの確立だけでなくルーティングの設定が必要です。

以下のように拠点間のルーティングを定義します。

[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=2.11 ms
64 bytes from 192.168.20.20: icmp_seq=2 ttl=62 time=1.47 ms
64 bytes from 192.168.20.20: icmp_seq=3 ttl=62 time=1.47 ms

--- 192.168.20.20 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 1.467/1.682/2.105/0.299 ms

動作確認 (2) プロポーザルの明示指定

IKEv2 saのプロポーザル

デフォルト設定を用いてIKEv2 saを確立する事もできますが、IKEv2 saのプロポーザルを明示指定する事もできます。以下はデフォルト設定を明示的に記述したconfigです。

[R10:IX2015]
ikev2 default-profile
  sa-proposal enc aes-cbc-256
  sa-proposal integrity sha2-512
  sa-proposal dh 2048-bit

IKEv2 child-saのプロポーザル

デフォルト設定を用いてIKEv2 child-saを確立する事もできますが、IKEv2 child-saのプロポーザルを明示指定する事もできます。以下はデフォルト設定を明示的に記述したconfigです。

[R10:IX2015]
ikev2 default-profile
  child-lifetime 28800
  child-proposal enc aes-cbc-256
  child-proposal integrity sha2-512

パラメタを明示指定してもIPsecを確立できる事を確認するため、IKEv2を再起動します。

[R10:IX2015]
show ikev2 sa 
show ikev2 child-sa
[R20:IX2015]
show ikev2 sa 
show ikev2 child-sa

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.73 ms
64 bytes from 192.168.20.20: icmp_seq=2 ttl=62 time=1.57 ms
64 bytes from 192.168.20.20: icmp_seq=3 ttl=62 time=1.47 ms

--- 192.168.20.20 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 1.474/1.590/1.727/0.104 ms
タイトルとURLをコピーしました