RTX1100 で v4 PPPoE + DS-Lite をできたが困っている
茨城 OCN の回線品質が微妙に悪い*1のに嫌気が差し、 IIJmio FiberAccess/NF を契約した。ついで v6 インターネットに出られるプレフィックスが IPoE で自動的に降ってくるようになるので、いろいろ楽しくなる。
家のフレッツ回線は 1Gbps タイプなのだが、IIJ が提供している PPPoE 接続の問題で夕方は 10-20Mbps ほどまでに落ち込んでしまうので、v4 インターネットには DS-Lite で出ることにする。DS-Lite そのものに関しては以下の資料が分かりやすい。v6 インターネットへの接続はそもそも回線が空いていることもあり、5-600Mbps ほど出るので、v4 のパケットを乗せても回線の都合で遅くなったりすることはないだろう。
この記事は DS-Lite が本題ではないので、先に進む。
作りたいネットワーク
- PC やスマートフォンなどは速い DS-Lite トンネル経由で v4 インターネットに出る
- CGN が挟まっていると困る自宅サーバーは PPPoE 経由で v4 インターネットに出る/接続を受け入れる
- 接続を使い分けやすくするために VLAN を切る(DS-Lite トンネルに出したいのは VLAN1 (
192.168.1.0/24
), PPPoE 経由で出したいのは VLAN2 (192.168.2.0/24
)) - VLAN は RTX1100 のポートVLAN (
port-based-ks8995m=divide-network
) で実現する - v6 に関しては RTX1100 で DHCPv6-PD を受け*2、RA でプレフィックスをみんなに配る
起きている問題
- VLAN を設定した瞬間にあらゆる通信が激遅になった (10Mbpsぐらい)
192.168.1.0/24
から192.168.2.0/24
への通信ができなくなってしまった
前者は RTX1100 の性能の問題? 後者の理由は↓。
現在の設定
(1) (2) (3) が重要で、要するに VLAN 1 から来たパケットを forward filter で (デフォルトゲートウェイである) pp 1
ではなく tunnel 1
に流している。
フィルターの適用はルーティングの前に実行され、あらゆる通信が tunnel 1
に向かってしまうので、本来隣にルーティングされるべきパケットがインターネットに出ていってしまい、路頭に迷う*3。
# デフォルトゲートウェイは PPPoE ip route default gateway pp 1 lan type lan1 port-based-ks8995m=divide-network # VLAN 1 ip lan1.1 address 192.168.1.1/24 ip lan1.1 forward filter 100 # (1) 192.168.1.0/24 から来るパケットを ip forward filter 1000 (下の (3)) に流す # VLAN 2 ip lan1.3 address 192.168.2.1/24 ip filter 1 pass * * * * * # (2) 全てのパケットを ip filter 1001 pass 192.168.2.100 * tcp 55522 * ip forward filter 100 1 gateway tunnel 1 filter 1 # (3) tunnel 1 に流す # IPv6 用の設定 ipv6 lan2 address dhcp ipv6 lan2 dhcp service client ipv6 route default gateway dhcp lan2 ipv6 prefix 1 dhcp-prefix@lan2::/64 ipv6 icmp echo-reply send on ipv6 lan2 address dhcp ipv6 lan2 dhcp service client ipv6 lan1.1 address dhcp-prefix@lan2::1/64 ipv6 lan1.1 rtadv send 1 o_flag=on ipv6 lan1.3 address dhcp-prefix@lan2::11/64 ipv6 lan1.3 rtadv send 1 o_flag=on ngn type lan2 ntt # PPPoE pp select 1 pp name IIJmio_FiberAccess-NF ( PPPoE 用の設定 ) pp enable 1 # DS-Lite トンネル tunnel select 1 tunnel name DS-Lite tunnel encapsulation ipip tunnel endpoint address 2404:8e00::feed:100 ip tunnel mtu 1500 ip tunnel intrusion detection in on reject=on ip tunnel tcp mss limit auto tunnel enable 1 nat descriptor type 1 masquerade nat descriptor masquerade static 1 1 192.168.2.10 tcp 55522 dhcp service server dhcp scope 1 192.168.1.10-192.168.1.100/24 dhcp scope 2 192.168.2.10-192.168.2.200/24 dns server dhcp lan2 dns private address spoof on
試したこと
filter の除外条件を設定する
dest が 192.168.2.0/24
だったら tunnel 1
に向けないで通常のルーティングをしてもらえれば良い
ip filter 2 reject * 192.168.2.0/24 * * *
→ 普通にパケットが落とされてどこにも届かなかった。除外みたいなことはできないらしい
VLAN の netmask を変えてみる
DHCP で振るアドレスを 192.168.1.0/16
と 192.168.2.0/16
にして Proxy ARP してもらう。
でも filter の src はなんとなく /24 にする
ip filter 1 pass 192.168.1.0/24 * * * *
→ 意味なし
ポート VLAN とかやめて、ルーターを増やす
RTX1100 を DS-Lite 専用機にして、家にある IX2015 を PPPoE 専用機にする*4。お互いを繋いでスタティックルートを書いてあげる