IPv6 が使用可能かつ Router Advertisement が流れているネットワークにおいて、サーバの IPv6 アドレスを手動というか、Static に設定する際になかなか意図する設定に出来なかったので、その解決のメモです。
■条件
サーバに割り当てる IPv6 アドレス : xxxx:yyyy:zzzz::2/64
IPv6 ゲートウェイ : xxxx:yyyy:zzzz::1
■設定
- /etc/sysctl.conf
net.ipv6.conf.all.forwarding = 0 net.ipv6.conf.all.accept_ra = 0 net.ipv6.conf.all.autoconf = 0 net.ipv6.conf.all.accept_ra_defrtr = 0 net.ipv6.conf.all.accept_redirects = 0
IPv6 の自動設定を全てで OFF にしているのだが・・・。
- /etc/network/interfaces
auto eth0 iface eth0 inet6 static address xxxx:yyyy:zzzz::2 netmask 64 gateway xxxx:yyyy:zzzz::1 pre-up echo 0 > /proc/sys/net/ipv6/conf/eth0/forwarding pre-up echo 0 > /proc/sys/net/ipv6/conf/eth0/accept_ra pre-up echo 0 > /proc/sys/net/ipv6/conf/eth0/autoconf pre-up echo 0 > /proc/sys/net/ipv6/conf/eth0/accept_ra_defrtr pre-up echo 0 > /proc/sys/net/ipv6/conf/eth0/accept_redirects
何故かインタフェース名を明示しないと設定が効かない。
なお、この方法以外に pre-up で設定している内容と同等の設定をしかるべき書式で /etc/sysctl.conf で行っても良い。
上記のように、/etc/network/interfaces で、あらためて IPv6 の自動設定を無効にしているのは、/etc/sysctl.conf で本来なら効くはずの設定が何故か効かないからです。
/etc/sysctrl.conf に書いている内容だけでは、手動設定した IPv6 アドレスと、MAC アドレスをもとに自動生成された IPv6 アドレスの併用となってしまいます。(別にそういう運用もありかと思いますが・・・)
私の中では、net.ipv6.conf.all (設定の上書き) が一番強制力が強く、次に net.ipv6.conf.if名、最後に net.ipv6.conf.default (未指定時のデフォルト値) だと思っていたので、意外でした。
■参考にさせて頂いた URL