YAMAHA RTX1210 2台を使用したフレッツ網折り返し通信によるL2TPv3/IPsec通信

#1.はじめに

ルータ素人ながらRTX810でL2TP/IPsecを5年ほど使っていて、半年ほど前に、RTX1210 2台を使用したフレッツ網折り返し通信によるL2TPv3/IPsec通信に変更したので、その結果をまとめました。

MAP-E(IPv4 over IPv6)はHGW(PR-500KI)に任せて、HGWの配下にRTX1210を繋ぐ二重ルータ構成にしています。
ネットワーク素人が色々なサイトの内容を組み合わせて試行錯誤した内容のため、余計な設定や誤りがある可能性があります。


#2.ネットワーク構成

![20191201.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534247/815e4695-36db-2178-e8f2-d2f6c4da0023.png)

- 拠点1
  - NTT東日本圏内
  - ドコモ光
  - BIGLOBE IPv6オプション
  - ひかり電話契約あり(固定電話を一応用意しているけど使っていない)

|IPアドレス|内容|
|---|---|
|192.168.1.1|PR-500KI|
|192.168.1.254|RTX1210 LAN2|
|192.168.2.1|RTX1210 LAN1|
|192.168.2.3|RTX1210 bridge1　※IPアドレスが必要なのかよく分かっていない|
|192.168.2.10-49|DHCP(DHCPサーバは拠点1のRTX1210)|
|192.168.2.100-199|固定IPアドレス範囲(自分でこの範囲を使っているだけで、コンフィグに特に記述なし)|

- 拠点2
  - NTT東日本圏内
  - ドコモ光
  - BIGLOBE IPv6オプション
  - ひかり電話契約あり

|IPアドレス|内容|
|---|---|
|192.168.1.1|PR-500KI|
|192.168.1.254|RTX1210 LAN2|
|192.168.2.2|RTX1210 LAN1|
|192.168.2.4|RTX1210 bridge1　※IPアドレスが必要なのかよく分かっていない|
|192.168.2.50-89|DHCP(DHCPサーバは拠点2のRTX1210)|
|192.168.2.200-249|固定IPアドレス範囲(自分でこの範囲を使っているだけで、コンフィグに特に記述なし)|

※拠点1、2で192.168.2.0/24をL2TPv3で共用する。192.168.1.0/24は拠点毎の別ネットワーク。


#3.PR-500KI設定

拠点1、拠点2どちらも同じです。

- IPv6パケットフィルタ設定（IPoE）
  - IPv6セキュリティのレベル

|項目|値|
|---|---|
|IPv6ファイアウォール機能|有効(初期値)|
|IPv6セキュリティのレベル|標準(初期値)　※フレッツ網折り返し通信を許容する|

- LAN側静的ルーティング設定
  - LAN側静的ルーティングエントリ

|項目|値|
|---|---|
|有効/無効|チェックあり(編集後に一覧で設定)|
|エントリ番号|1(任意)|
|宛先IPアドレス/マスク長|192.168.2.0/24|
|ゲートウェイ|192.168.1.254|


#4.事前に用意する情報

|項目|値|
|---|---|
|事前共有鍵|任意|
|L2TPトンネル認証パスワード|任意|
|拠点1 DDNSホスト名|i.open.ad.jpで取得する|
|拠点2 DDNSホスト名|i.open.ad.jpで取得する|
|拠点1更新専用ホスト名|i.open.ad.jpで取得する|
|拠点2更新専用ホスト名|i.open.ad.jpで取得する|

#5.拠点1コンフィグ

```
console lines infinity
login timer 300
no dhcp service
no dhcp server rfc2131 compliant except remain-silent
no dhcp scope 1
no ip lan1 address
console prompt kyoten1
ip lan1 address 192.168.2.1/24
ip lan2 address 192.168.1.254/24
ip lan2 nat descriptor 1
ip filter 500000 restrict * * * * *
ipv6 routing on
ipv6 lan2 address auto
ipv6 prefix 1 ra-prefix@lan2::/64
ipv6 lan1 address ra-prefix@lan2::1/64
ipv6 lan1 rtadv send 1 o_flag=on
ipv6 lan1 dhcp service server
description lan2 toHGW
ipv6 lan2 dhcp service client ir=on
ipv6 lan2 secure filter in 101000 101001 101002 101003 101004 101005 101006 101078
ipv6 lan2 secure filter out 101079 dynamic 101080 101081 101082 101083 101084 101085 101098 101099
ipv6 filter 101000 pass * * icmp6 * *
ipv6 filter 101001 pass * * tcp * ident
ipv6 filter 101002 pass * * udp * 546
ipv6 filter 101003 pass * * esp * *
ipv6 filter 101004 pass * * udp * 500
ipv6 filter 101005 pass * * udp * 1701
ipv6 filter 101006 pass * * udp * 4500
ipv6 filter 101078 reject * * * * *
ipv6 filter 101079 pass * * * * *
ipv6 filter dynamic 101080 * * ftp
ipv6 filter dynamic 101081 * * domain
ipv6 filter dynamic 101082 * * www
ipv6 filter dynamic 101083 * * smtp
ipv6 filter dynamic 101084 * * pop3
ipv6 filter dynamic 101085 * * submission
ipv6 filter dynamic 101098 * * tcp
ipv6 filter dynamic 101099 * * udp
dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.2.10-192.168.2.49/24
dhcp scope option 1 router=192.168.2.1
dhcp scope option 1 dns=192.168.2.1
dns host lan1
dns service fallback on
dns server 2001:4860:4860::8888 2001:4860:4860::8844
dns server select 500000 dhcp lan2 any .
dns private address spoof on
dashboard accumulate traffic on
bridge member bridge1 lan1 tunnel1
ip bridge1 address 192.168.2.3/24
pp disable all
no tunnel enable all
tunnel select 1
tunnel encapsulation l2tpv3
tunnel endpoint name ＜拠点2 DDNSホスト名＞.i.open.ad.jp fqdn
ipsec tunnel 101
ipsec sa policy 101 1 esp aes-cbc sha-hmac
ipsec ike keepalive use 1 on
ipsec ike keepalive log 1 on
ipsec ike nat-traversal 1 on
ipsec ike pre-shared-key 1 text ＜事前共有鍵＞
ipsec ike remote address 1 ＜拠点2 DDNSホスト名＞.i.open.ad.jp
l2tp hostname kyoten1-host
l2tp always-on on
l2tp tunnel auth on ＜L2TPトンネル認証パスワード＞
l2tp tunnel disconnect time off
l2tp keepalive use on 5 10
l2tp keepalive log on
l2tp syslog on
l2tp remote end-id vpn
ip tunnel tcp mss limit auto
tunnel enable 1
tunnel select none
nat descriptor type 1 masquerade
nat descriptor address outer 1 primary
nat descriptor address inner 1 auto
nat descriptor masquerade static 1 1 192.168.2.1 esp
nat descriptor masquerade static 1 2 192.168.2.1 udp 500
nat descriptor masquerade static 1 3 192.168.2.1 udp 1701
nat descriptor masquerade static 1 4 192.168.2.1 udp 4500
ipsec transport 1 101 udp 1701
ipsec auto refresh on
ip route default gateway 192.168.1.1
schedule at 1 */* *:*:00 * lua -e "rt.command(\"ping6 ＜拠点1更新専用ホスト名＞.i.open.ad.jp\")"
l2tp service on l2tpv3
tunnel select 1
ip tunnel secure filter in 1 2
ip filter 1 reject * * udp dhcps,dhcpc dhcps,dhcpc
ip filter 2 pass * *
tunnel select none
heartbeat2 myname keepalive
heartbeat2 transmit 1 auth keepalive 192.168.2.2
heartbeat2 transmit interval 30
heartbeat2 transmit enable 1
tftp host 192.168.2.1-192.168.2.255
httpd host 192.168.2.1-192.168.2.255
```

#6.拠点2コンフィグ

```
console lines infinity
login timer 300
no dhcp service
no dhcp server rfc2131 compliant except remain-silent
no dhcp scope 1
no ip lan1 address
console prompt kyoten2
ip lan1 address 192.168.2.2/24
ip lan2 address 192.168.1.254/24
ip lan2 nat descriptor 1
ip filter 500000 restrict * * * * *
ipv6 routing on
ipv6 lan2 address auto
ipv6 prefix 1 ra-prefix@lan2::/64
ipv6 lan1 address ra-prefix@lan2::1/64
ipv6 lan1 rtadv send 1 o_flag=on
ipv6 lan1 dhcp service server
description lan2 toHGW
ipv6 lan2 dhcp service client ir=on
ipv6 lan2 secure filter in 101000 101001 101002 101003 101004 101005 101006 101078
ipv6 lan2 secure filter out 101079 dynamic 101080 101081 101082 101083 101084 101085 101098 101099
ipv6 filter 101000 pass * * icmp6 * *
ipv6 filter 101001 pass * * tcp * ident
ipv6 filter 101002 pass * * udp * 546
ipv6 filter 101003 pass * * esp * *
ipv6 filter 101004 pass * * udp * 500
ipv6 filter 101005 pass * * udp * 1701
ipv6 filter 101006 pass * * udp * 4500
ipv6 filter 101078 reject * * * * *
ipv6 filter 101079 pass * * * * *
ipv6 filter dynamic 101080 * * ftp
ipv6 filter dynamic 101081 * * domain
ipv6 filter dynamic 101082 * * www
ipv6 filter dynamic 101083 * * smtp
ipv6 filter dynamic 101084 * * pop3
ipv6 filter dynamic 101085 * * submission
ipv6 filter dynamic 101098 * * tcp
ipv6 filter dynamic 101099 * * udp
dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.2.50-192.168.2.89/24
dhcp scope option 1 router=192.168.2.2
dhcp scope option 1 dns=192.168.2.2
dns host lan1
dns service fallback on
dns server 2001:4860:4860::8888 2001:4860:4860::8844
dns server select 500000 dhcp lan2 any .
dns private address spoof on
dashboard accumulate traffic on
bridge member bridge1 lan1 tunnel1
ip bridge1 address 192.168.2.4/24
pp disable all
no tunnel enable all
tunnel select 1
tunnel encapsulation l2tpv3
tunnel endpoint name ＜拠点1 DDNSホスト名＞.i.open.ad.jp fqdn
ipsec tunnel 101
ipsec sa policy 101 1 esp aes-cbc sha-hmac
ipsec ike keepalive use 1 on
ipsec ike keepalive log 1 on
ipsec ike nat-traversal 1 on
ipsec ike pre-shared-key 1 text ＜事前共有鍵＞
ipsec ike remote address 1 ＜拠点1 DDNSホスト名＞.i.open.ad.jp
l2tp hostname kyoten2-host
l2tp always-on on
l2tp tunnel auth on ＜L2TPトンネル認証パスワード＞
l2tp tunnel disconnect time off
l2tp keepalive use on 5 10
l2tp keepalive log on
l2tp syslog on
l2tp remote end-id vpn
ip tunnel tcp mss limit auto
tunnel enable 1
tunnel select none
nat descriptor type 1 masquerade
nat descriptor address outer 1 primary
nat descriptor address inner 1 auto
nat descriptor masquerade static 1 1 192.168.2.2 esp
nat descriptor masquerade static 1 2 192.168.2.2 udp 500
nat descriptor masquerade static 1 3 192.168.2.2 udp 1701
nat descriptor masquerade static 1 4 192.168.2.2 udp 4500
ipsec transport 1 101 udp 1701
ipsec auto refresh on
ip route default gateway 192.168.1.1
schedule at 1 */* *:*:00 * lua -e "rt.command(\"ping6 ＜拠点2更新専用ホスト名＞.i.open.ad.jp\")"
l2tp service on l2tpv3
tunnel select 1
ip tunnel secure filter in 1 2
ip filter 1 reject * * udp dhcps,dhcpc dhcps,dhcpc
ip filter 2 pass * *
tunnel select none
heartbeat2 myname keepalive
heartbeat2 transmit 1 auth keepalive 192.168.2.1
heartbeat2 transmit interval 30
heartbeat2 transmit enable 1
tftp host 192.168.2.1-192.168.2.255
httpd host 192.168.2.1-192.168.2.255
```

#7.重要部分

ブリッジの設定です。

```
bridge member bridge1 lan1 tunnel1
ip bridge1 address 192.168.2.3/24
```

IPsecトンネルの設定です。

```
tunnel select 1
tunnel encapsulation l2tpv3
tunnel endpoint name ＜拠点2 DDNSホスト名＞.i.open.ad.jp fqdn
ipsec tunnel 101
ipsec sa policy 101 1 esp aes-cbc sha-hmac
ipsec ike keepalive use 1 on
ipsec ike keepalive log 1 on
ipsec ike nat-traversal 1 on
ipsec ike pre-shared-key 1 text ＜事前共有鍵＞
ipsec ike remote address 1 ＜拠点2 DDNSホスト名＞.i.open.ad.jp
l2tp hostname kyoten1-host
l2tp always-on on
l2tp tunnel auth on ＜L2TPトンネル認証パスワード＞
l2tp tunnel disconnect time off
l2tp keepalive use on 5 10
l2tp keepalive log on
l2tp syslog on
l2tp remote end-id vpn
ip tunnel tcp mss limit auto
tunnel enable 1
tunnel select none
```

NAT設定です。IPsecなのでUDP 1701だけでも大丈夫ですが、L2TPv3のみの場合のためにESP、UDP 500、4500も入れています。

```
nat descriptor type 1 masquerade
nat descriptor address outer 1 primary
nat descriptor address inner 1 auto
nat descriptor masquerade static 1 1 192.168.2.1 esp
nat descriptor masquerade static 1 2 192.168.2.1 udp 500
nat descriptor masquerade static 1 3 192.168.2.1 udp 1701
nat descriptor masquerade static 1 4 192.168.2.1 udp 4500
```

IPsec関連です。

```
ipsec transport 1 101 udp 1701
ipsec auto refresh on
```

i.open.ad.jpへのIPv6アドレスの自動更新です。i.open.ad.jpサイトの説明通りです。

```
schedule at 1 */* *:*:00 * lua -e "rt.command(\"ping6 ＜拠点1更新専用ホスト名＞.i.open.ad.jp\")"
```

L2TPv3を有効にします。

```
l2tp service on l2tpv3
```

トンネルにDHCP関連のパケットを通さず、DHCPサーバとして、各拠点のRTX1210を使用するようにしています。(ヤマハサイトの説明通り)

```
tunnel select 1
ip tunnel secure filter in 1 2
ip filter 1 reject * * udp dhcps,dhcpc dhcps,dhcpc
ip filter 2 pass * *
tunnel select none
```

heartbeat設定です。これで良いのか自信がありません。

```
heartbeat2 myname keepalive
heartbeat2 transmit 1 auth keepalive 192.168.2.2
heartbeat2 transmit interval 30
heartbeat2 transmit enable 1
```

#8.通信速度

拠点1と拠点2は1都2県離れていて、L2TPv3/IPsecで、Windows 10同士のファイル共有(SMBv3)のファイルコピーが約75Mbpsです。暗号化方式はAES、3DESのどちらでも同じくらいの速度です。
L2TPv3だけでIPsecなしにした場合は、約560Mbps出ていました。2021/07/29補足：目測でなくiPerf3で計測したら、もっと遅かったと思います。速度失念。
どちらもネットワーク構成の図の通り、RTX1210はHGW(PR-500KI)配下です。

IPsecなしの速度は魅力的ですが、安全性のためにIPsecありで使用しています。

#9.備考

- 二重ルータ構成にしたのは、HGWのUNIポートにRTX1210を繋いでIPIPトンネルでMAP-Eの通信をした場合に、すぐに通信できなくなったためです。(HGWとのIPv6アドレスの取り合い)
- DNSサーバはGoogleを使用しています。
- Nintendo Switch(有線LAN接続)はRTX1210配下でも通信できますが、スプラトゥーン2の通信がわずかでも速くなるようにと、気分的にルータ1段目につけています。拠点2のRTX1210配下にもう一台Nitendo Switchをぶら下げています。
- LAN1配下にIPv6アドレスがRAで配布されません。bridge memberコマンドの仕様です。bridgeをなくすと(L2TPv3をやめると)RAで配布されます。L2TPv3を使いつつIPv6アドレスを自動配布する方法はないものか…。
- 片方の拠点で、PR-500KIを初期状態にしてもIPv6 IPoEに切り替わらず、BIGLOBEのIPv6オプションを申し込んでいる状態から、
BIGLOBE IPv6オプションライトを申し込んでIPv6オプションを解約状態にし、直後にIPv6オプションを申し込んで2日後(土曜日に申し込んで月曜日)に
IPoEに切り替わりました。ライトを申し込んだらIPv6オプションが解約になるのは、BIGLOBEの電話サポートで教えてもらった情報です。
HGWを初期状態にしても駄目だったら、そういう手もあると。
- tunnelのMTUはデフォルトの1280のままです。


#10.参考サイト

[YAMAHA ルータでの使用方法 - OPEN IPv6 ダイナミック DNS for フレッツ・光ネクスト](https://i.open.ad.jp/config/yamaha.aspx)
[YAMAHAルーター「RTX1200」を使って「IPv6折り返し通信」L2TPv3の設定方法（ソフトイーサーOPEN DDNS利用）](https://bacque.biz/archives/7088)
[フレッツ網の快適なIPv6でVPNを構築する方法](https://qiita.com/notoken3331/items/b59ff4432635e067ff60)
[YAMAHA 社内ネットワーク（L2TPv3）](https://rin-ka.net/l2tpv3/)
[YAMAHA RTX シリーズからの L2TPv3 を用いた VPN 接続方法 (IPv4, IPv6 対応) - SoftEther VPN プロジェクト](https://ja.softether.org/4-docs/2-howto/Other_VPN_Appliance_Setup_Guide/9-yamaha-rtx-l2tpv3)
[RTX1000 が VPN で packet loss するわけがないじゃないか - してみむとて](http://d.hatena.ne.jp/blooper/20120212/1329056996)
[IPv6 の DNSサーバーを Public DNS に設定する：（仮）タイトルいつ決めるのさ：So-netブログ](https://villas-windmill.blog.so-net.ne.jp/2017-01-08)

#11.YAMAHA公式情報

[L2TPv3を用いたL2VPN](http://www.rtpro.yamaha.co.jp/RT/docs/l2tpv3/index.html)
[ブリッジインタフェース(ブリッジ機能)](http://www.rtpro.yamaha.co.jp/RT/docs/bridge/index.html)
[IPsec 設定ガイド](http://www.rtpro.yamaha.co.jp/RT/docs/ipsec/guide.html)
[2つの拠点間で同一セグメントのネットワークを構築する](https://network.yamaha.com/setting/router_firewall/vpn/connect/l2tpv3_ipsec-rtx1200)
[VPN(IPsec)接続ができない](https://network.yamaha.com/setting/router_firewall/ts_router/vpn_connect)
[v6プラス対応機能](http://www.rtpro.yamaha.co.jp/RT/docs/v6plus/index.html)