Yamaha RTX ルータのIPsec設定 片拠点 プライベートIPアドレス

スポンサーリンク

Yamaha RTXで片拠点がプライベートアドレスを持つ場合のIPSec設定を紹介します。IPsecの通信経路上にNAT機器が存在する場合は、udp500, udp4500を用いてNAT変換前のIPアドレスを通知する「NATトラバーサル」と呼ばれる機能を有効にする必要があります。

設定まとめ

IPsec設定 両拠点固定IPアドレスCLI編」で紹介されたコマンドは説明を割愛します。

NATトラバーサル

このシナリオのようなNAT機器を介す場合は、NATトラバーサルと呼ばれる機能を用いて、NAT変換前のIPアドレスを通知する仕組みが必要です。機器によってはデフォルトで有効になっている事もありますが、Yamaha RTXの場合は明示的な指定が必要です。

NATトラバーサルを有効にするにはtunnelに対して以下のようなコマンドを使用します。

# tunnel select <トンネル番号>
tunnel1# ipsec ike nat-traversal <ゲートウェイ番号> on 

initiatorとresponder

この検証シナリオでは片側がプライベートアドレスを持つため、プライベートアドレスを持つ拠点からIPsecを確立をする必要があります。このようなシナリオでは、どの拠点からの接続を確立するかのinitiator, responderと呼ばれる設定が必要になる事もあります。

Yamaha RTXの場合は、initiator, responderを明示指定することはできないので設定不要です。言い換えれば、片方の拠点は接続を試みたけどエラーになり、他拠点からの接続を待つような挙動になります。

動作確認

動作確認の構成

以下の環境で動作確認を行います。R10がグローバルIPアドレスを持つ拠点で、R30がプライベートアドレスを持つ拠点です。

+------------------+
|  RockyLinux 8.4  |
|     host010      |
+-------+----------+
 ens224 | .10
        |
        | 192.168.10.0/24
        | 
   lan1 | .1 
+-------+----------+ 
|  Yamaha RTX 810  | 
|       R10        |
+-------+----------+
   lan2 | .10
        |
        | 200.0.10.0/24
        |
   eth0 | .1   source NAT : any => 200.0.10.1
+-------+----------+ 
|    VyOS 1.4      | 
|      NAT20       |
+-------+----------+
   eth1 | .1
        |
        | 192.168.20.0/24
        |
   lan2 | .30
+-------+----------+ 
|  Yamaha RTX 810  | 
|       R30        |
+-------+----------+
   lan1 | .1 
        |
        | 192.168.30.0/24
        | 
 ens224 | .30
+-------+----------+
|  RockyLinux 8.4  |
|     host030      |
+------------------+

初期設定

初期設定は以下の通りです。VyOSにはSource NATが設定されています。言い換えれば、R30からR10への接続は許容されますが、逆方向は許容されません。

R10 : Yamaha RTX 810
ip route default gateway 200.0.10.1
ip lan1 address 192.168.10.1/24
ip lan2 address 200.0.10.10/24
ip lan2 nat descriptor 100 
nat descriptor type 100 masquerade
nat descriptor address outer 100 primary 
telnetd host lan
R30 : Yamaha RTX 810
ip route default gateway 192.168.20.1
ip lan1 address 192.168.30.1/24
ip lan2 address 192.168.20.30/24
telnetd host lan
NAT20 : VyOS 1.4
set interfaces ethernet eth0 address '200.0.10.1/24'
set interfaces ethernet eth0 hw-id '00:50:56:90:36:24'
set interfaces ethernet eth1 address '192.168.20.1/24'
set interfaces ethernet eth1 hw-id '00:50:56:90:06:1c'
set interfaces loopback lo
set nat source rule 100 outbound-interface 'eth0'
set nat source rule 100 source address '0.0.0.0/0'
set nat source rule 100 translation address '200.0.10.1'
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確立

グローバルIPアドレスを持つ拠点(R10)では、以下のような設定になります。グローバルアドレスを持つ側は対向拠点のプライベートアドレスを知る術がないので、対向拠点のNAT変換後のグローバルアドレスを「remote address」として指定します。

また、NATトラバーサルの有効化設定も必要です。

[R10:RTX810]
tunnel select 1
 ipsec tunnel 1
  ipsec sa policy 1 1 esp 3des-cbc md5-hmac
  ipsec ike local address 1 200.0.10.10
  ipsec ike pre-shared-key 1 text P@ssw0rd
  ipsec ike nat-traversal 1 on
  ipsec ike remote address 1 200.0.10.1
 tunnel enable 1
tunnel select none
ipsec use on
ipsec auto refresh on

プライベートIPアドレスを持つ拠点(R30)では、以下のような設定になります。自信のIPアドレスを示す「local address」はNAT変換後のグローバルアドレスではなくプライベートアドレスを指定します。

また、NATトラバーサルの有効化設定も必要です。

[R30:RTX810]
tunnel select 1
 ipsec tunnel 1
  ipsec sa policy 1 1 esp 3des-cbc md5-hmac
  ipsec ike local address 1 192.168.20.30
  ipsec ike pre-shared-key 1 text P@ssw0rd
  ipsec ike nat-traversal 1 on
  ipsec ike remote address 1 200.0.10.10
 tunnel enable 1
tunnel select none
ipsec use on
ipsec auto refresh on

IPsecトンネルが確立されている事を確認します。

IPsec設定 両拠点固定IPアドレスCLI編」の検証シナリオではisakmpが2つ確立されていましたが、このシナリオでは1つしか確立されていません。

グローバルIPアドレスでは双方向でIKEの通信が可能ですが、プライベートIPアドレスの場合ではプライベートからグローバルへの片方向の通信しか出来ないためです。

[R10:RTX810]
# show ipsec sa 
Total: isakmp:1 send:2 recv:2

sa   sgw isakmp connection   dir  life[s] remote-id
-----------------------------------------------------------------------------
1     1    -    isakmp       -    24422   200.0.10.1
2     1    1    tun[001]esp  send 24424   200.0.10.1
3     1    1    tun[001]esp  recv 24424   200.0.10.1
4     1    1    tun[001]esp  send 24424   200.0.10.1
5     1    1    tun[001]esp  recv 24424   200.0.10.1

# 
# 
# show ipsec sa 1 detail 
エラー: パラメータの数が不適当です
# show ipsec sa gateway 1 detail 
SA[1] 寿命: 24409秒
自分側の識別子: 200.0.10.10
相手側の識別子: 200.0.10.1
プロトコル: IKE
アルゴリズム: 3DES-CBC, SHA-1, MODP 1024bit
NATトラバーサル: あり, キープアライブ: なし
SPI: 6f db 4b 12 da 90 94 4d 23 7c 46 9a 90 cc d0 4d 
鍵 : ** ** ** ** **  (confidential)   ** ** ** ** **
----------------------------------------------------
SA[2] 寿命: 24411秒

 <omitted>

動作確認 (2) 疎通確認

疎通確認ができるようstatic routeを定義します。

[R10:RTX810]
ip route 192.168.30.0/24 gateway tunnel 1
[R30:RTX810]
ip route 192.168.10.0/24 gateway tunnel 1

host010とhost030間で疎通可能である事を確認します。

[host010:RockyLinux8.4]
[root@host010 ‾]# ping -c 3 192.168.30.30
PING 192.168.30.30 (192.168.30.30) 56(84) bytes of data.
64 bytes from 192.168.30.30: icmp_seq=1 ttl=62 time=1.67 ms
64 bytes from 192.168.30.30: icmp_seq=2 ttl=62 time=1.28 ms
64 bytes from 192.168.30.30: icmp_seq=3 ttl=62 time=1.25 ms

--- 192.168.30.30 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 1.254/1.398/1.665/0.188 ms
[root@host010 ‾]# 

補足説明

IPsec SA クリア時の挙動

仕様理解のため、グローバルIPアドレスを持つ機器(R10)でIPsec SAのクリアをします。

[R10:RTX810]
ipsec refresh sa 

IPSecが再確立するか確認します。以下出力のようにIPsecが再確立しません。

[R10:RTX810]
# show ipsec sa 
# 

これはグローバルIPアドレスを持つ機器(R10)がIPsec Responderだからです。IPsecを確立するのはプライベートIPアドレスを持つ機器(R30)です。プライベートIPアドレスを持つ機器(R30)で、IPsecをクリアすれば再び疎通可能な状態になります。

実務観点でこの挙動で注意すべきは機器更改や移行計画です。よく見られるのが、「IPsec Responder側の機器更改なので、IPsec Initiator側は設定変更なし。IPsec Initiator側は体制不要」という誤った意思決定で、作業当日にIPsec Initiator側でIPsecクリアが出来ずリトライになるパターンを何度か見た事があります。

タイトルとURLをコピーしました