■IPv4, IPv6の2つのプロトコルを同じネットワークに乗せてやっていますが、IPv6はアドレスが長いだけに扱いにくい。というか、覚えにくい。一番やっかいなのはルーティングの設定が安定しないことで、もともとIPv6はLANの外に出すつもりがないのでデフォルトゲートウェイも設けていない。サーバーとクライアントのP2P状態での設定なので、相手だけが見えていればいいはずなのだけど、パケットキャプチャしてみるとIPv6のアドレス問い合わせが時々出ている。なんか、こう、落ち着かない。
ちょっと設定を変えてIPv6のインターフェースを上げ下げするとルーティングテーブルが初期化されて不通になったりと、これまた煩わしいので、RADVDを立ち上げることにしました。
IPv6アドレスの自動配布が目的ではなく、サーバーをデフォルトゲートウェイのように見せかけるのが目的なのであまり凝ったことはしません。IPv6ネットワークのプレフィックス、ルーティング情報の配布と、配布先クライアントの特定設定のみになります。ルーティングといいつつも、IPv6は孤立したネットワークになるので、ブロードバンドを経由して上流へは流れません。もともとMTUサイズを大きく変更しているので、外部と通信させるとかえって遅いということもあるし、使っているブロードバンドルーターが古くてIPv6を捌けないということもあります。
/etc/radvd.conf を次のように作成しました。
interface eth.ipv6
{
AdvSendAdvert on;
MinRtrAdvInterval 30;
MaxRtrAdvInterval 100;
prefix fd00:xx:xx:1::/64
{
AdvOnLink on;
AdvAutonomous on;
};
route ::/0
{
AdvRoutePreference high;
AdvRouteLifetime infinity;
};
clients
{
fe80::xx:xx:xx:xx;
};
};
prefixセクションはIPv6ネットワークのアドレス設定しています。fd00::/8でユニークローカルIPv6ユニキャストの領域を利用し、さらに48ビットを利用してプライベートなネットワークアドレスとしました。今は外部のIPv6ネットワークとリンクしていないため問題にはなりませんが、今後上流のISPがIPv6アドレスを配布するようになると、上流側と整合を改めて取らなければならなくなるでしょう。
routeセクションはいわゆるデフォルトゲートウェイの設定ですが、ブロードキャストのようになっています。IPv4のルーティングでは0.0.0.0相当で、Windowsクライアント側ではゲートウェイとしてRADVDのサーバー自身が設定されます。
clientsセクションではradvdの配布先を限定するため、クライアントのリンクローカルIPv6アドレスを設定しています。クライアントはまず自身のリンクローカルIPv6アドレスを使ってルータ通知を求めます。radvd側はそのリンクローカルアドレスを使って適切なクライアントかどうかを判断しています。IPv4のDHCPでクライアントを選別するのにつかうMACアドレスのような使われ方をしているように思います。