RTX1200でDS-LiteとPPPoEデュアル接続時のL2TP/IPsec

先日、RTX1200を弟宅に設置したと書きました。

gentoolinux.hatenablog.com

いつかDS-LiteのAFTRアドレスが変更になって、「なんかネット繋がらなくなったぞ!」と、言われたときの保守用に、札幌ー帯広間をNGN網内でのIPSec接続をしています。
札幌のRTX810と帯広のRTX1200のIPv6アドレスを、「OPEN IPv6 ダイナミック DNS for フレッツ・光ネクスト」を使ってDNS登録し、接続相手先をFQDN指定して、IPv6アドレスが変更されても接続できるようにしています。

しかし、念には念を入れて、IPv4L2TP/IPsecでも接続できるようにします。
が、またもここでもハマりました。

まず、RTX1200ではDHCPスコープを192.168.1.20-192.168.1.100/24に設定しており、フィルタールーティングを使い、

ip route default gateway tunnel 1 gateway pp 1 filter 200200
ip filter 200200 pass 192.168.1.101-192.168.1.102 * * * *

として、192.168.1.101と102はPPPoEへ、それ以外(DHCPクライアント等)はDS-Liteを設定したtunnel1へ、ルーティングするようにしました。
L2TP/IPsecで接続してきた端末には192.168.1.101を付与し、PPPoEで通信させる、という意図です。

L2TP/IPsecの設定はYAMAHAサイトの設定(アドレス不定)の通りにします。

network.yamaha.com

もちろん、IPアドレスが変わっても良いように、netvolante-dnsの設定をpp1に入れておきます。

Windows10マシンから自宅のRTX810にアクセスするVPN設定を複製し、帯広のRTX1200にアクセスできるように、接続先アドレス、ユーザー名、事前共有キーを書き換えます。
RTX1200をsyslog debug onにして、札幌からアクセスしてみると、接続できずにタイムアウトします。
RTX810に接続できたログと比較すると、IKEのSA交換で失敗し、次のようなログが吐かれていました。

[IKE] [8] retransmission timeout

これを元にして調べると、なんと、ごちゃんねるに解決策が!!
DS-LiteとPPPoEで接続し、PPPoE側でL2TP/IPsecが接続できずに困っている」って、まるで俺か⁉︎
どうやら、RTX1200がSAキーを返そうとしているが、Windows側が応答していないとのことで、その理由は、Windows→RTX1200はPPPoEを経由しているのに対し、RTX1200→WindowsDS-Liteを経由しているから、ということのようです。
IPv4グローバルアドレスが与えられてFirewallがない丸裸のWindowsだったら応答していたでしょうが、札幌側のWindowsはRTX810のNATの内側にいるので、RTX810にはじかれてWindows側に届いていないのです。
そこで、フィルタールーティングの対象IPアドレスにRTX1200のアドレス192.168.1.1も含めるようにします。
具体的には、

ip route default gateway tunnel 1 gateway pp 1 filter 200200
ip filter 200200 pass 192.168.1.1,192.168.1.101-192.168.1.102 * * * *

YAMAHAルーターの良いところはIPアドレスを「,」で区切ったり「-」で範囲指定するなど、複数のIPアドレスを一度に指定できるところですね。
RTX1200をPPPoE経由でインターネットに出れるように設定したところ、L2TP/IPsecで接続できるようになりました。
もちろん、Mac OSからもL2TP/IPsecできています。

まさかごちゃんねるに助けられるとは・・・。