我需要指定静态 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/