Debian GNU/Linux 6.0 で固定 IPv6 設定

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