VPNのためにPPPoEを追加契約した
次のエントリに書いた通り、自宅のネットが遅くて仕事にならなかったのでIPv4 PPPoEからIPv6 IPoE + DS-Liteに乗り換えて問題は解消した。PPPoEが詰まって速度が出ない人は試す価値がある。
ところで上記エントリの最後でちょっと触れたが、この方法ではこれまで利用できていたネットボランチDNSが使えなくなる1。ネットボランチDNSは唐突にYAMAHAルータ愛を吐露するにも書いたが、無料かつメンテナンスフリーなDDNSのようなものだ。自宅サーバを公開したり拠点間VPNを固定IPなしに実現するのに非常に便利だ。 近々引っ越しの予定があり、拠点間VPNを構築する必要があるため、悩んだのだが安直にPPPoEを追加で再契約してIPoEと両立させることにした。
ということでいきなりRTX1200での設定例を載せる。IPoE + DS-Liteを使いつつ特定の用途のためにPPPoEを追加するという人は余り多いとはとても思えないが、インターネットに情報を載せておくことで誰かが助かるかもしれないのでとりあえず掲載する。
(2021-01-18追記:フィルタの設定が間違っていてRTX1200からネットボランチDNSまでパケットが届かない設定でした。既に設定を修正済みです。)
administrator password * login user papa * security class 2 off off off console character ascii console prompt "[RTX1200] " login timer 3600 ip route default gateway tunnel 1 filter 1 3 gateway pp 1 filter 2 ipv6 prefix 1 ra-prefix@lan2::/64 ip lan1 address 192.168.11.1/24 ipv6 lan1 address ra-prefix@lan2::1/64 ipv6 lan1 rtadv send 1 o_flag=on ipv6 lan1 dhcp service server ipv6 lan2 secure filter in 1010 1011 1012 2000 ipv6 lan2 secure filter out 3000 dynamic 100 101 102 103 104 105 106 ipv6 lan2 dhcp service client ir=on ip lan3 address 192.168.22.1/24 pp select 1 pp name PPPoE pp always-on on pppoe use lan2 pppoe auto connect on pppoe auto disconnect off pp auth accept pap chap pp auth myname * * 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 1 netvolante-dns hostname host pp server=1 * pp enable 1 tunnel select 1 tunnel name DS-Lite tunnel encapsulation ipip tunnel endpoint address 2404:8e00::feed:100 tunnel enable 1 ip filter 1 pass 192.168.11.0/24 * ip filter 2 pass 192.168.22.0/24 * ip filter 3 pass 0.0.0.0 * * * * nat descriptor type 1 masquerade nat descriptor address outer 1 ipcp nat descriptor address inner 1 192.168.22.1-192.168.22.254 nat descriptor masquerade incoming 1 discard nat descriptor masquerade static 1 1 192.168.22.1 udp 500 nat descriptor masquerade static 1 2 192.168.22.1 esp nat descriptor masquerade static 1 3 192.168.22.200 tcp 22 nat descriptor masquerade static 1 4 192.168.22.200 tcp www nat descriptor masquerade static 1 5 192.168.22.200 tcp https nat descriptor masquerade static 1 6 192.168.22.200 tcp 8080 ipv6 filter 1010 pass * * icmp6 * * ipv6 filter 1011 pass * * tcp * ident ipv6 filter 1012 pass * * udp * 546 ipv6 filter 2000 reject * * * * * ipv6 filter 3000 pass * * * * * ipv6 filter dynamic 100 * * ftp ipv6 filter dynamic 101 * * domain ipv6 filter dynamic 102 * * www ipv6 filter dynamic 103 * * smtp ipv6 filter dynamic 104 * * pop3 ipv6 filter dynamic 105 * * tcp ipv6 filter dynamic 106 * * udp telnetd service off dhcp service server dhcp server rfc2131 compliant except remain-silent dhcp scope 1 192.168.11.100-192.168.11.199/24 expire 12:00 maxexpire 12:00 dhcp scope 2 192.168.22.100-192.168.22.199/24 expire 12:00 maxexpire 12:00 dns server dhcp lan2 sshd service on sshd host lan1 sshd host key generate *
簡単に解説する。 lan2はインターネットに出ていく経路でIPoEとPPPoEで共有する。 lan1は192.168.11.0/24のLANでここにぶら下がったクライアントはtunnel (IPoE + DS-Lite)でインターネットに出ていく。 lan3は192.168.22.0/24のLANでここにぶら下がったクライアントはpp1 (PPPoE)でインターネットに出ていく。pp1はネットボランチDNSでホスト名をもらっている。VPNの対向ではこれを目掛けて接続する。 また、lan3はstatic natでホームゲートウェイを公開している。これはちょっとしたプログラムを動かしたり自宅ネットワークへの踏み台として利用しており、我が家では伝統的にRaspberry Piが担当している。
設定の肝は
ip route default gateway tunnel 1 filter 1 3 gateway pp 1 filter 2 ... ip filter 1 pass 192.168.11.0/24 * ip filter 2 pass 192.168.22.0/24 * ip filter 3 pass 0.0.0.0 * * * *
の部分だけで、ここでIPに応じてgatewayを切り替えている。filter 3はルータ自身がWANで出るときのIPで、これを設定しないとインターネットへの経路がないことからネットボランチDNS等に到達できない。
余談だがフィルタの部分はたとえば次のようにkeepaliveを設定することで片方の経路からインターネットに出られなくなったらもう片方の経路から出ると言った設定も容易く行える。ISPを複数契約してマルチホーミングしたり、光ファイバの系統すら冗長化することも可能だろう。
ip route default gateway pp 1 keepalive 1 gateway pp 2 weight 0 ip keepalive 1 icmp-echo 5 3 8.8.8.8
個人的にこのフィルターの柔軟さなどがYAMAHAルータの魅力である。YAMAHAルータの魅力はいくらでもしゃべれるがこんなことをしている場合ではないのでこのへんで。
ちなみに今回はVPNのためだけに安直にPPPoEを追加契約したので、もっとよいアイディアがあったら是非コメントください。