YAMAHA RTX1210でL2TPv3/IPsecとL2TP/IPsecの同時使用(不安定)

#1.はじめに

[YAMAHA RTX1210 2台を使用したフレッツ網折り返し通信によるL2TPv3/IPsec通信 - Qiita](https://qiita.com/mayo00/items/774b650215959925d89c)
と
[YAMAHA RTX1210でL2TP/IPsec接続 - Qiita](https://qiita.com/mayo00/items/3823674d33d30a32303d)
を組み合わせて、L2TPv3/IPsecとL2TP/IPsecを同時に使用できるようにしました。
L2TPv3/IPsecはIPv6 IPoE接続、L2TP/IPsecはIPv4 PPPoE接続です。

但し、かなり不安定で、L2TPv3/IPsecは大丈夫なのですが、L2TP/IPsecで接続後にリモートデスクトップが繋がりません。回避策を後述しています。

2019/12/31補足：インターネット接続がPPPoE経由になって遅かったのを修正しました。「7.重要部分」に記述しています。「9.L2TP/IPsec接続失敗時の回避策」を、「9.L2TP/IPsec接続後のリモートデスクトップ失敗の回避策」に変更しました。

#2.ネットワーク構成

[YAMAHA RTX1210 2台を使用したフレッツ網折り返し通信によるL2TPv3/IPsec通信 - Qiita](https://qiita.com/mayo00/items/774b650215959925d89c)の構成です。

![20191201.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534247/0d9a435e-8b87-5593-50a1-ada864568753.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.90-94|L2TPで払い出すIPアドレス|
|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.95-99|L2TPで払い出すIPアドレス|
|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ファイアウォール機能|無効|

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

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

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

|項目|値|
|---|---|
|L2TPv3/IPsec事前共有鍵|任意|
|L2TPトンネル認証パスワード|任意|
|拠点1 DDNSホスト名|i.open.ad.jpで取得する|
|拠点1更新専用ホスト名|i.open.ad.jpで取得する|
|拠点1プロバイダユーザー名||
|拠点1プロバイダパスワード||
|拠点1L2TP/IPsec事前共有鍵|任意|
|拠点1VPN接続ユーザー名|任意|
|拠点1VPN接続パスワード|任意|
|拠点2 DDNSホスト名|i.open.ad.jpで取得する|
|拠点2更新専用ホスト名|i.open.ad.jpで取得する|
|拠点2プロバイダユーザー名||
|拠点2プロバイダパスワード||
|拠点2L2TP/IPsec事前共有鍵|任意|
|拠点2VPN接続ユーザー名|任意|
|拠点2VPN接続パスワード|任意|

#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 lan1 proxyarp on
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 ＜L2TPv3/IPsec事前共有鍵＞
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
nat descriptor type 2 masquerade
nat descriptor address outer 2 ipcp
nat descriptor address inner 2 auto
nat descriptor masquerade static 2 1 192.168.2.1 esp
nat descriptor masquerade static 2 2 192.168.2.1 udp 500
nat descriptor masquerade static 2 3 192.168.2.1 udp 1701
nat descriptor masquerade static 2 4 192.168.2.1 udp 4500
ipsec transport 1 101 udp 1701
ipsec transport 2 102 udp 1701
ipsec auto refresh on
ip filter 1001 pass 192.168.2.1 * * * *
ip route default gateway 192.168.1.1 gateway pp 1 filter 1001
schedule at 1 */* *:*:00 * lua -e "rt.command(\"ping6 ＜拠点1更新専用ホスト名＞.i.open.ad.jp\")"
pp select 1
pp always-on on
pppoe use lan2
pp auth accept pap chap
pp auth myname ＜拠点1プロバイダユーザー名＞ ＜拠点1プロバイダパスワード＞
ppp lcp mru on 1454
ppp ipcp ipaddress on
ppp ipcp msext on
ppp ccp type none
ip pp mtu 1454
ip pp nat descriptor 2
pp enable 1
pp select none
pp select anonymous
pp bind tunnel2
pp auth request mschap-v2
pp auth username ＜拠点1VPN接続ユーザー名＞ ＜拠点1VPN接続パスワード＞
ppp ipcp ipaddress on
ppp ipcp msext on
ip pp remote address pool 192.168.2.90-192.168.2.94
ip pp mtu 1258
pp enable anonymous
pp select none
tunnel select 2
tunnel encapsulation l2tp
ipsec tunnel 102
ipsec sa policy 102 2 esp aes-cbc sha-hmac
ipsec ike keepalive use 2 off
ipsec ike local address 2 192.168.2.1
ipsec ike nat-traversal 2 on
ipsec ike pre-shared-key 2 text ＜拠点1L2TP/IPsec事前共有鍵＞
ipsec ike remote address 2 any
l2tp tunnel disconnect time off
l2tp keepalive use on 10 3
l2tp keepalive log on
l2tp syslog on
ip tunnel tcp mss limit auto
tunnel enable 2
tunnel select none
l2tp service on l2tp 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 lan1 proxyarp on
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 ＜L2TPv3/IPsec事前共有鍵＞
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
nat descriptor type 2 masquerade
nat descriptor address outer 2 ipcp
nat descriptor address inner 2 auto
nat descriptor masquerade static 2 1 192.168.2.2 esp
nat descriptor masquerade static 2 2 192.168.2.2 udp 500
nat descriptor masquerade static 2 3 192.168.2.2 udp 1701
nat descriptor masquerade static 2 4 192.168.2.2 udp 4500
ipsec transport 1 101 udp 1701
ipsec transport 2 102 udp 1701
ipsec auto refresh on
ip filter 1001 pass 192.168.2.2 * * * *
ip route default gateway 192.168.1.1 gateway pp 1 filter 1001
schedule at 1 */* *:*:00 * lua -e "rt.command(\"ping6 ＜拠点2更新専用ホスト名＞.i.open.ad.jp\")"
pp select 1
pp always-on on
pppoe use lan2
pp auth accept pap chap
pp auth myname ＜拠点2プロバイダユーザー名＞ ＜拠点2プロバイダパスワード＞
ppp lcp mru on 1454
ppp ipcp ipaddress on
ppp ipcp msext on
ppp ccp type none
ip pp mtu 1454
ip pp nat descriptor 2
pp enable 1
pp select none
pp select anonymous
pp bind tunnel2
pp auth request mschap-v2
pp auth username ＜拠点2VPN接続ユーザー名＞ ＜拠点2VPN接続パスワード＞
ppp ipcp ipaddress on
ppp ipcp msext on
ip pp remote address pool 192.168.2.95-192.168.2.99
ip pp mtu 1258
pp enable anonymous
pp select none
tunnel select 2
tunnel encapsulation l2tp
ipsec tunnel 102
ipsec sa policy 102 2 esp aes-cbc sha-hmac
ipsec ike keepalive use 2 off
ipsec ike local address 2 192.168.2.2
ipsec ike nat-traversal 2 on
ipsec ike pre-shared-key 2 text ＜拠点2L2TP/IPsec事前共有鍵＞
ipsec ike remote address 2 any
l2tp tunnel disconnect time off
l2tp keepalive use on 10 3
l2tp keepalive log on
l2tp syslog on
ip tunnel tcp mss limit auto
tunnel enable 2
tunnel select none
l2tp service on l2tp 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.重要部分

コンフィグの内容は、ほとんど
[YAMAHA RTX1210 2台を使用したフレッツ網折り返し通信によるL2TPv3/IPsec通信 - Qiita](https://qiita.com/mayo00/items/774b650215959925d89c)
と
[YAMAHA RTX1210でL2TP/IPsec接続 - Qiita](https://qiita.com/mayo00/items/3823674d33d30a32303d)
を組み合わせた記述です。

但し1点、強引な記述ですが、IPv6 IPoEの場合の
ip route default gateway 192.168.1.1
と、IPv4 PPPoEの場合の
ip route default gateway pp 1
を組み合わせて両方を使い分ける下記の記述にしています。
デフォルトゲートウェイとしてpp 1を指定しないと、L2TP/IPsec接続が全くできなかったため、入れています。但し、pp 1だけだと、通信が全てPPPoE側に回ってしまって遅いため、ルータ関連(拠点1の場合にソースアドレスが192.168.2.1。ルータ発通信を表す0.0.0.0も試しましたが駄目でした)の通信はデフォルトゲートウェイをPP 1とし、それ以外は192.168.1.1としています。
ルータ関連がPPPoEになることにより、L2TPv3/IPsecがフレッツ網折返し通信を通らずに激遅にならないか心配したのですが、ファイル転送速度を測った限りではPPPoE接続を追加する前と同じ速度でPPPoE接続より速いため、大丈夫ではなかろうかと考えています。(この記述でPPPoEにならない理由は不明ですが)

```
# 2019/12/31修正後
ip filter 1001 pass 192.168.2.1 * * * *
ip route default gateway 192.168.1.1 gateway pp 1 filter 1001
```

最初は下記のように記述していたのを、インターネット接続がPPPoE経由になって遅くなったため、上記の内容に修正しました。

```
# 2019/12/31修正前
ip filter 1001 pass * 192.168.2.5-192.168.2.254 * * *
ip route default gateway pp 1 gateway 192.168.1.1 filter 1001
```

L2TP/IPsecとL2TPv3/IPsecの両方を使用するため、l2tpコマンドに両方を指定しています。

```
l2tp service on l2tp l2tpv3
```

#8.備考

- DNSサーバはGoogleを使用しています。

#9.L2TP/IPsecでのリモートデスクトップの接続失敗の回避策

上記設定を行った場合に、L2TPv3/IPsecは問題なく接続されるのですが、L2TP/IPsecは接続後にリモートデスクトップが繋がりません。回避策は下記の通りです。

拠点1、拠点2のうち接続したい側(両方なら両方とも)で、下記のコマンドでブリッジを一度無効にします。両方の場合は、同時に行う必要はありません。

```
no bridge member bridge1 lan1 tunnel1
```

ブリッジが無効な間はL2TPv3/IPsec接続はできません。ブリッジが無効な間に、接続したい側の拠点(両方なら両方とも)に、L2TP/IPsec接続を行います。接続が成功したら、リモートデスクトップ接続を行い、切断します。L2TP/IPsec接続も切断します。

そして、下記コマンドでブリッジを復活させます。

```
bridge member bridge1 lan1 tunnel1
```

そうすると、L2TPv3/IPsec接続ができるようになります。また、先程L2TP/IPsecでリモートデスクトップ接続を行った拠点も、リモートデスクトップができたりできなかったりします。できなかった場合にはもう一度行うと成功しました。

このため、この回避策を行う場合には、
- L2TP/IPsecを行いたい側の拠点に物理的に行くことができる
- L2TP/IPsec、L2TPv3/IPsec以外の手段(Chromeリモートデスクトップ、OpenVPN等)で拠点に接続できる
のいずれかの必要があります。

この回避策で確実に復旧できるかは、まだ試行回数が少なく、分かっていません。また、前述の通り、1回で復旧しない場合もありました。しばらくしてまた繋がらなくなることもありました。