皆さまこんにちは。ネットワーク課の岩元です。
YAMAHAルータを使用したVPN環境の構築に携わらせていただく機会があり、その事前検証として、弊社に余っているRTX830を使って、2点間のVPN環境を構築・検証をしてみました。
検証環境
| 使用機器 | 台数 |
|---|---|
| YAMAHA RTX830 | 2台 |

| YAMAHA01 | YAMAHA02 | |
|---|---|---|
| lan1 | 192.168.100.1 /24 | 192.168.100.2/24 |
| lan2 | 192.168.1.1/24 | 192.168.2.1/24 |
| デフォルトGW | 192.168.1.2 | 192.168.2.2 |
| DHCP範囲 | 192.168.100.10∼15 | 192.168.100.16∼20 |
事前準備
RTX830 が工場出荷状態であれば既存で以下の設定が入っています。
ip lan1 address 192.168.100.1/24 dhcp service server dhcp server rfc2131 compliant except remain-silent dhcp scope 1 192.168.100.2-192.168.100.191/24
ですので、もし出荷状態なら事前に削除しておきましょう。
no ip lan1 address 192.168.100.1/24 no dhcp service server no dhcp server rfc2131 compliant except remain-silent no dhcp scope 1 192.168.100.2-192.168.100.191/24 save
検証1 WAN側IPアドレスとの疎通確認
bridgeメンバー(bridge1)を作成
トンネルインタフェースと物理インタフェースを紐づけます。 bridge1 にはLAN インタフェースの実 MAC アドレスを利用させるために 代理ARP動作も設定させます。
【YAMAHA01】 bridge member bridge1 lan1 tunnel1 ip bridge1 proxyarp on
【YAMAHA02】 bridge member bridge1 lan1 tunnel1 ip bridge1 proxyarp on
IFにIPアドレスを設定・デフォルトゲートウェイを設定
【YAMAHA01】 ip route default gateway 192.168.1.2 ip bridge1 address 192.168.100.1/24 ip lan2 address 192.168.1.1/24
【YAMAHA02】 ip route default gateway 192.168.2.2 ip bridge1 address 192.168.100.2/24 ip lan2 address 192.168.2.1/24
NATの処理を定義
【YAMAHA01】 nat descriptor type 1 masquerade nat descriptor address outer 1 192.168.1.1 nat descriptor address inner 1 auto
【YAMAHA02】 nat descriptor type 1 masquerade nat descriptor address outer 1 192.168.2.1 nat descriptor address inner 1 auto
LAN2(WAN側インタフェース)にNATの定義を適用
【YAMAHA01】 ip lan2 nat descriptor 1
【YAMAHA02】 ip lan2 nat descriptor 1
DHCPを設定
【YAMAHA01】 dhcp service server dhcp server rfc2131 compliant except remain-silent dhcp scope 1 192.168.100.10-192.168.100.15/24
【YAMAHA02】 dhcp service server dhcp server rfc2131 compliant except remain-silent dhcp scope 1 192.168.100.16-192.168.100.20/24
接続確認
互いのWAN側IPアドレスに疎通確認
【YAMAHA01】 yamaha01# ping -c 5 192.168.2.1 received from 192.168.2.1: icmp_seq=0 ttl=252 time=0.288ms received from 192.168.2.1: icmp_seq=1 ttl=252 time=0.245ms received from 192.168.2.1: icmp_seq=2 ttl=252 time=0.241ms received from 192.168.2.1: icmp_seq=3 ttl=252 time=0.234ms received from 192.168.2.1: icmp_seq=4 ttl=252 time=0.234ms 5 packets transmitted, 5 packets received, 0.0% packet loss round-trip min/avg/max = 0.234/0.248/0.288 ms
【YAMAHA02】 yamaha02# ping -c 5 192.168.1.1 received from 192.168.1.1: icmp_seq=0 ttl=252 time=0.302ms received from 192.168.1.1: icmp_seq=1 ttl=252 time=0.262ms received from 192.168.1.1: icmp_seq=2 ttl=252 time=0.244ms received from 192.168.1.1: icmp_seq=3 ttl=252 time=0.240ms received from 192.168.1.1: icmp_seq=4 ttl=252 time=0.239ms 5 packets transmitted, 5 packets received, 0.0% packet loss round-trip min/avg/max = 0.239/0.257/0.302 ms
検証2 L2TPv3トンネル設定
L2TPv3トンネリングの設定を入れます。
L2TPv3はL2フレームをL2TPv3ヘッダでカプセル化してデータを通信します。

- トンネルインタフェースをl2tpv3-rawに指定
- L2TPv3の各種設定を追加
- L2TPv3の有効化
【YAMAHA01】 tunnel select 1 tunnel encapsulation l2tpv3-raw tunnel endpoint address 192.168.100.1 192.168.2.1 l2tp always-on on l2tp tunnel auth on test1234 l2tp keepalive use on 60 3 l2tp keepalive log on l2tp syslog on l2tp local router-id 192.168.100.1 l2tp remote router-id 192.168.100.2 l2tp remote end-id TESTEND tunnel enable 1 l2tp service on l2tpv3
【YAMAHA02】 tunnel select 1 tunnel encapsulation l2tpv3-raw tunnel endpoint address 192.168.100.2 192.168.1.1 l2tp always-on on l2tp tunnel auth on test1234 l2tp keepalive use on 60 3 l2tp keepalive log on l2tp syslog on l2tp local router-id 192.168.100.2 l2tp remote router-id 192.168.100.1 l2tp remote end-id TESTEND tunnel enable 1 l2tp service on l2tpv3
この設定だけでは、まだL2TPv3のトンネル接続は出来ません。 状態を確認すると「Tunnel State: wait_ctl_reply」と出ます。 (wait_ctl_reply:手の応答待ちという意味です)
yamaha01tunnel1# show status l2tp ------------------- L2TP INFORMATION ------------------- Number of control table using Tunnel Control: 1, Session Control: 0 TUNNEL[1]: Tunnel State: wait_ctl_reply ~省略~
NATの定義を追加
L2TPv3トンネルのみ接続させる場合は、明示的にNATの定義に、 L2TPv3用のUDPポート(1701番)は変換せず通過させる設定を入れてあげます。
【YAMAHA01】 nat descriptor masquerade static 1 5 192.168.100.1 udp 1701
【YAMAHA02】 nat descriptor masquerade static 1 5 192.168.100.2 udp 1701
接続確認
L2TPv3トンネルが繋がると、お互いのローカルIP(lan1のIP)と疎通がとれるようになります。
yamaha01# ping -c 5 192.168.100.2 received from 192.168.100.2: icmp_seq=0 ttl=254 time=0.463ms received from 192.168.100.2: icmp_seq=1 ttl=254 time=0.372ms received from 192.168.100.2: icmp_seq=2 ttl=254 time=0.361ms received from 192.168.100.2: icmp_seq=3 ttl=254 time=0.337ms received from 192.168.100.2: icmp_seq=4 ttl=254 time=0.385ms 5 packets transmitted, 5 packets received, 0.0% packet loss round-trip min/avg/max = 0.337/0.383/0.463 ms
yamaha02# ping -c 5 192.168.100.1 received from 192.168.100.1: icmp_seq=0 ttl=254 time=0.436ms received from 192.168.100.1: icmp_seq=1 ttl=254 time=0.354ms received from 192.168.100.1: icmp_seq=2 ttl=254 time=0.342ms received from 192.168.100.1: icmp_seq=3 ttl=254 time=0.337ms received from 192.168.100.1: icmp_seq=4 ttl=254 time=0.337ms 5 packets transmitted, 5 packets received, 0.0% packet loss round-trip min/avg/max = 0.337/0.361/0.436 ms
接続できた時の状態は以下のように確認できます(YAMAHA01側)
yamaha01# show status l2tp
------------------- L2TP INFORMATION -------------------
Number of control table using
Tunnel Control: 1, Session Control: 1
TUNNEL[1]:
Tunnel State: established <- 接続できている状態
Version: L2TPv3
Local Tunnel ID: 51998
Remote Tunnel ID: 27105
Local IP Address: 192.168.100.1 <- 自分のローカル(lan1)アドレス
Remote IP Address: 192.168.2.1 <- 相手のWAN側(lan2)アドレス
Local Src port: 1701
Remote Src port: 1701
Vendor: YAMAHA Corporation
Hostname: RTX830
Next Transmit sequence(Ns): 4
Next Receive sequence(Nr) : 2
Tunnel has 1 session.
Session Information
Session State: established <- 接続できている状態
Local Session ID: 38520
Remote Session ID: 25157
Circuit Status local:UP peer:UP <- 接続できている状態
56 seconds connection.
Received: 0 packet [0 octet]
Transmitted: 0 packet [0 octet]
検証3 IPsec設定
L2TPv3のトンネルを通るデータを、IPsecにより暗号化させることで、 「L2TPv3/IPsec」 によるVPN接続を実現できます。
L2TPv3のパケットのうちUDP(1701番)以上をIPsecで暗号化して、 新しくESPヘッダを付けたパケットで通信させています。

IPsec の通信モードには「トランスポートモード」と「トンネルモード」の2種類があります。 一般的に L2TP/IPsec で扱う際は「トランスポートモード」になります。
トンネルインタフェースの種別を変更
検証2では、l2tpv3-raw でしたがIPsecを併用する場合は、L2TPv3 で設定する必要があります。
| 設定値 | 説明 |
|---|---|
| l2tpv3-raw | L2TPv3トンネル |
| l2tpv3 | L2TPv3/IPsec トンネル |
- 参考:トンネルインタフェースの種別の設定
従って、インタフェースの種別を「L2TPv3/IPsec」に変更しておきましょう。
【YAMAHA01 / YAMAHA02】 tunnel select 1 tunnel encapsulation l2tpv3
IPsec の設定を追加
【YAMAHA01】 tunnel select 1 ipsec tunnel 100 ipsec sa policy 100 1 esp aes-cbc sha-hmac ipsec ike keepalive log 1 on ipsec ike keepalive use 1 on ipsec ike local address 1 192.168.100.1 ipsec ike pre-shared-key 1 text test1234 ipsec ike remote address 1 192.168.2.1 ipsec auto refresh on ipsec transport 1 100 udp 1701
【YAMAHA02】 tunnel select 1 ipsec tunnel 100 ipsec sa policy 100 1 esp aes-cbc sha-hmac ipsec ike keepalive log 1 on ipsec ike keepalive use 1 on ipsec ike local address 1 192.168.100.2 ipsec ike pre-shared-key 1 text test1234 ipsec ike remote address 1 192.168.1.1 ipsec auto refresh on ipsec transport 1 100 udp 1701
NATの設定に定義を追加
鍵交換をISAKMPメッセージのやり取り行いますが、この時使うポート「500」と、 NAT越えのためにポート「4500」を通過させるために定義を追加させます。
【YAMAHA01】 nat descriptor masquerade static 1 1 192.168.100.1 udp 500 nat descriptor masquerade static 1 2 192.168.100.1 esp nat descriptor masquerade static 1 3 192.168.100.1 udp 4500
【YAMAHA02】 nat descriptor masquerade static 1 1 192.168.100.2 udp 500 nat descriptor masquerade static 1 2 192.168.100.2 esp nat descriptor masquerade static 1 3 192.168.100.2 udp 4500
IPsecによる暗号化が正常に行われると、SA(Security Association)の状態は次のように表示されます。
yamaha01# show ipsec sa Total: isakmp:1 send:2 recv:2 sa sgw isakmp connection dir life[s] remote-id ----------------------------------------------------------------------------- 2 1 6 tra[0001]esp send 28777 192.168.2.1 3 1 6 tra[0001]esp recv 28777 192.168.2.1 4 1 6 tra[0001]esp send 28778 192.168.2.1 5 1 6 tra[0001]esp recv 28778 192.168.2.1 6 1 - isakmp - 28775 192.168.2.1
暗号化に失敗した際の挙動
L2TPv3/IPsec で接続時、IPsecによる暗号化に失敗すると、L2TPv3によるトンネル接続も出来なくなります。 以下で試しに暗号化を失敗させてみます。
■暗号化方式の設定を削除 yamaha01# tunnel select 1 yamaha01tunnel1# ipsec tunnel 100 yamaha01tunnel1# no ipsec sa policy 100 1 esp aes-cbc sha-hmac ■SAの状態確認 yamaha01tunnel1# show ipsec sa yamaha01tunnel1# (何も表示されない)
L2TPv3トンネルの接続確認
■状態確認 yamaha01# show status l2tp ------------------- L2TP INFORMATION ------------------- Number of control table using Tunnel Control: 1, Session Control: 0 TUNNEL[1]: Tunnel State: wait_ctl_reply ~省略~ ■疎通確認 yamaha01# ping -c 5 192.168.100.2 5 packets transmitted, 0 packets received, 100.0% packet loss
「L2TPv3/IPsec」では、暗号化に失敗してしまったあと、意図せずに平データでやり取りされてしまうことを防ぐために トンネルも接続できなくなります。
まとめ
VPNの接続方式にはさまざまな種類がありますが、その代表例の一つであるL2TPv3/IPsecについて詳しく学ぶことができ、大変勉強になりました。 合わせて、これまで触れる機会がなかったYAMAHA製のVPNルータの設定にも触れ、コマンド体系や設定ファイルの書き方が他社製品と異なる点を実感しました。設定項目や、デフォルトの挙動、ログの見方など、実機で試すことで様々な違いについて把握できて良かったです。
参考
- YAMAHAルータ コマンドリファレンス
- L2TP/IPsecを使用したリモートアクセス : ルーター コマンド設定
- L2TP/IPsec