動機
ひかり電話を使うにはHGWが必要。でもHGWでは機能不足。
HGW1と他のルーター2を共存させるには。
要件
- ひかり電話が使えること
- SIPで内線も使えること
- 他のルーターの機能が全て使えること
HGWのみ
- メリット: 想定された使い方のため、問題が起こらない
- デメリット: hgwは機能不足
HGWと他のルーターを並列でつなぐ
HGWにDHCPv6-PDクライアントをさせる
- メリット: routerはhgwを経由しないため、hgw性能の影響を受けない
- デメリット: IPv6はhgw経由となり、routerの機能が使えない
IPoEが使えない我が家では、routerで別拠点とフレッツの網内通信でトンネルを掘って、IPv6を使っていた。
フレッツのIPoEはDHCPv6-PDクライアント(hgw)に経路が向くが、フレッツの網内通信はDHCPv6-PDクライアント以外のルーター(router)からも使えたようだ。
結果、フレッツ網内プレフィックスと別拠点のプレフィックスでマルチプレフィックスになっていたが、longest matchで救われていたようだ。
ただ、トンネルの制約でIPv6のMTUが1280になり、QUICが使えないという問題3があったため、IPoEへ移行したいと思っていた。
後日、我が家でもIPoEが開通し、IPv6のMTUが1500となりQUICが使えるようになったが、別拠点とのトンネルも併用したい。routerでトンネルしつつ、外へはIPoEのアドレスへnat6するために、以下の案を検討した。
他のルーターにDHCPv6-PDクライアントをさせる
- メリット: routerの機能をIPv4/IPv6の両方で使える
- デメリット: hgwに対しDHCPv6-PDさせないフィルタが必要
HGWをVoIPアダプタ化するこの案は、こちらが大変詳しい。
hgwとrouterでのDHCPv6-PDの奪い合いを止めたいが、HGWにはDHCPv6-PDクライアントを停止する機能がないため、HGWのWAN側にDHCPv6-PDのフィルターが必要。これにより網内のRAも止まるはず。
…と思っていたが、HGW1は、DHCPv6-PDが取れないと、過去にリースされたプレフィックスを、期限切れ後も使い続け、LAN側にRAしてくるようだ。プレフィックスを忘れさせるため完全初期化すると、DHCPv6-PDが通らない限り、ひかり電話を含めた全ての機能が有効にならない。ひかり電話の設定プロトコルはIPv4で行われると思っていたのに、残念…。
この時点で、HGW性能の影響を受けない並列化をあきらめ、HGWのPPPoEパススルー機能を使った直列化を検討。
HGWと他のルーターを直列でつなぐ
LANにHGWを接続し、SIPクライアントの内線を使えるようにする
- メリット: 直列でありながら、local1から内線が使える
- デメリット: hgwのRAを止めるためにフィルターが必要
routerがブリッジになった瞬間、ループ発生の危うい構成。
フィルターも面倒だし、もっとスマートな解があるのでは…。
他のルーターのWAN側にIPアドレスを付与する
- メリット: フィルター不要で内線が使える
- デメリット: hgw性能の影響を受ける
HGWはDHCPv6-PDサーバーにもなるし、IPv4のスタティックルートを設定できるので、この構成が取れる。192.168.1.0/24のgatewayは192.168.0.2を設定すればよい。
routerはIPv4はPPPoEなので、WAN側にアドレスを付与していないのは盲点だった。
直列はSEILの公式blogでも解説されているし、トンネルアダプタのガイドラインでも想定されているので、安心感はある。
これをしばらく使うことにした。
今後
PPPoEをなくす
IPoEが開通してIPv6はPPPoE不要となったが、IPv4はPPPoE。こちらの議論などを読むと、PPPoEを終端するNTEがネックになっていそうなので、DS-LiteやMAP-EでIPv4もPPPoEから脱出したい。
SPI
HGWのセキュリティログにSPIでいっぱいひっかかっているパケットが出るようになってしまった。Android端末に多そう。何故だ…。
おまけ
図はnwdiag
で書きました。さいこー。
Ubuntuではsudo apt install python-nwdiag
でインストール完了。簡単。