我有一个基于 Debian 的 Linux 安装,它可以解决:
它开始于物理系统,然后我将操作系统移至 VMware 容器中,然后移至 Xen 容器中。作为物理和 VMware 安装,这/etc/network/interfaces
有效:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet6 auto
privext 0
post-up ip a a fe80::1337/64 dev eth0
post-up ip a a fc0e::1337/64 dev eth0
工作意味着 eth0 已启动,并且在 eth0 上配置了所有地址/子网,并且禁用了隐私扩展。
当作为 Xen VM 运行时,隐私扩展已启用 ( /proc/sys/net/ipv6/conf/eth0/use_tempaddr
is 2
),eth0 已启动,但它只有其链接本地 fe80::/64 地址。我可以登录虚拟机并手动执行
ip a a fe80::1337/64 dev eth0
ip a a fc0e::1337/64 dev eth0
,工作起来没有任何问题。正如人们所期望的那样,我可以使用这些手动分配的地址访问这台机器......并且它过去在操作系统是物理机或 VMware VM 时可以工作。
那么 (pv) Xen guest 有何不同,这不起作用?日志文件中有两个非常可疑的条目:
syslog:Oct 31 10:41:48 hostname kernel: [ 6.926601] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
syslog:Oct 31 10:41:48 hostname kernel: [ 9.842540] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
可疑,因为它们发生在同一挂钟时间。我尝试创建虚拟机,但将其暂停,以便 Open vSwitch 在虚拟机完全启动之前有时间处理它的事情。但这并不能改变现状。
我还尝试添加post-up sleep 5
并 pre-up sleep 5
帮助解决计时问题...但它仍然是一个虚拟机...
对我来说这似乎是一个时间问题。我怎样才能解决这个问题?
答案1
你说接口up了,但是到底是就upip link
还是就up呢ifup
?命令失败post-up
意味着后者。要调试 IPv6 ND 不起作用的原因,您必须运行数据包跟踪器(tcpdump
、tshark
、 ...)之类的东西,并查看是否收到路由器通告。如果是,请验证其/proc/sys/net/ipv6/{default,eth0}/accept_ra
已打开。看http://www.tldp.org/HOWTO/Linux+IPv6-HOWTO/proc-sys-net-ipv6..html更多细节。