なんとも不可解
IPv6のルーティングについては,なんとも不可解である.以下の話は,参考リンクに挙げた,Andyさんの,On Going Struggleの記事による(一部自分で確認して情報を追加).
Stateless Address Auto-Configuration (SLAAC)
Linux Kernelが,ルーターモードでないと判断したら,SLAACが効いて,IPアドレス(IPv6のアドレス.以後も断りなければIPv6限定の話)の取得とルーティングを行うが,ルーターモードになると,SLAACは無効になって,各インターフェースのIPアドレスとルートを手動で設定しなおす必要が出てくる.
では,どのようにルーターモードであるか判断するかというと,/proc/sys/net/ipv6/conf/all/forwardingが1の時,つまり,
echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
が実行されるとルーターモードになる.このコマンドを実行したら,各インターフェースのIPアドレスとルートを手動で設定しなければならない.
ルーターでもSLAAC
ただし,Linux Kernel 2.6.37以降では,ルーターモードでもSLAACを活かすことができるということである.そのためには,
echo 2 > /proc/sys/net/ipv6/conf/<IF name>/accept_ra
とするということである.本来はバイナリーなのに”2″を書き込む.
<IF name>は”all”では効果がなく,それぞれのインターフェースごとに行う必要があるようだ.
参考ページ
Andyさんの,”The Ongoing Struggle”から,