忽略具有绑定接口的静态地址的 IPv6 路由器通告

忽略具有绑定接口的静态地址的 IPv6 路由器通告

我需要指定静态 IPv6 地址(不使用自动配置的地址,并忽略路由器通告)。对于 eth0 等标准接口,可以按如下方式完成此操作

iface eth0 inet6 static
  address myprefix:mysubnet::myip
  gateway myprefix:mysubnet::mygatewayip
 netmask 64
 pre-up /sbin/sysctl -q -w net.ipv6.conf.$IFACE.autoconf=0
 pre-up /sbin/sysctl -q -w net.ipv6.conf.$IFACE.accept_ra=0

但是,对于绑定接口,该如何实现这一点呢?使用“全部”接口则不起作用。

系统是Ubuntu 10.04,2.6.24-24-server。(12.04好像也一样)。

如果对 bond0 使用上述 sysctl 命令,网络会在启动时挂起,因为 /proc/sys/net/ipv6/conf/bond0 尚不存在且无法写入。

系统启动后 /proc/sys/net/ipv6/conf/bond0 就会存在,因此启动后的一个解决方案是在 /etc/rc.local 中添加以下内容:

 /sbin/sysctl -q -w net.ipv6.conf.bond0.autoconf=0
 /sbin/sysctl -q -w net.ipv6.conf.bond0.accept_ra=0
 /etc/init.d/networking restart

并且达到了预期效果,autoconfig v6 地址消失了。不过这似乎有点儿像 hack,有更好的解决方案吗?

答案1

你有没有尝试过

iface bond0 inet6 static
    address myprefix:mysubnet::myip
    gateway myprefix:mysubnet::mygatewayip
    netmask 64

    post-up /sbin/sysctl -q -w net.ipv6.conf.bond0.autoconf=0
    post-up /sbin/sysctl -q -w net.ipv6.conf.bond0.accept_ra=0

如果这不起作用,我可能会尝试使用脚本/etc/network/if-up.d/

相关内容