NSD-G1000TとND Proxy
NURO光のCPEであるNSD-G1000Tだが,なぜかこのシリーズだけND Proxyが動作しないという報告がある
ND Proxyは基本的に
1. WAN側からNeighbor Solicitationを受け取る
2. LAN側にTarget Addressが存在するか確認する
LAN側でNDPを使って確認してもいいし,サブネットが異なるのなら単純にプレフィックスを見て一致を確認するだけでも動きはする
3. 存在するならWAN側にNeighbor Advertisementを返信する
というような挙動をする
ここでNeighbor SolicitationはSolicitated-Nodeマルチキャストアドレスに向けて送出されるので基本的にこれに対応するホスト以外は受け取ることができないが,一般的なND ProxyはネットワークインターフェースをPromiscuousモードで動作させ,自分宛てではないNeighbor Solicitationを受信して応答するような挙動をする
おそらくフレッツ環境ではこれで正常に動作するのだろう
しかしNSD-G1000TはMLDスヌーピング的な挙動を実装していて,実際にSolicitated-Nodeマルチキャストアドレスのグループに入っているホストが存在するポート以外にはNeighbor Solicitationを送らない。この結果としてND ProxyはNeighbor Solicitationを受け取ることができず,正常に動作しない
Solicitated-Nodeマルチキャストアドレスは$ 2^{24} \approx 10^7程度の空間を持つので,偶然受け取れるというのはあまり考えにくい
解決策 (検討中)
NSD-G1000Tシリーズを親,ND Proxyを動作させているルーターを子とする
親のLAN空間と子のLAN空間の間にもう一つマシンを置く。このとき,マシンの親側のポートと子ルーターの親側のポートはハブなどを使って親の同一ポートから繋がるようにする
マシンは子のLAN空間からMulticast Listener Reportメッセージを受信し,Solicitated-Nodeマルチキャストアドレスがあったら親のLAN空間でそのグループに加入する