我正在尝试使用 venet 在我的 Debian 节点(OpenVZ)上启用 IPv6;我的主机采用 Proxmox 2.2(内核 2.6.32-16-pve),但似乎路由失败。
我的主机可以正确地 ping 所有节点;所有节点都可以 ping 我的主机,但没有一个节点可以 ping 另一个节点或外部世界。当我从我的计算机运行到我的节点的跟踪路由时,它在到达我的主机之前就停止了(到我的节点的跟踪路由运行良好)。
这是我的网络配置:
- 我的 ISP 提供的网络掩码:2001:41d0:2:52ae::/56
- 主机网络掩码:2001:41d0:2:52ae::/64
- 主机 IPv6:2001:41d0:2:52ae::1
- 节点
X
网络掩码:2001:41d0:2:520X
::/64 - 节点
X
IPv6:2001:41d0:2:520X
::1
在我的主机上,vmbr0
配置是(来自/etc/network/interfaces
):
iface vmbr0 inet6 static
address 2001:41d0:2:52ae::1
netmask 64
gateway 2001:41d0:2:52ff:ff:ff:ff:ff
post-up ip -6 route add 2001:41d0:2:52ff:ff:ff:ff:ff/128 dev vmbr0 #gateway
post-up ip -6 route add default via 2001:41d0:2:52ff:ff:ff:ff:ff #gateway
post-up ip -6 route add 2001:41d0:2:520X::/64 dev vmbr1 # node X
post-up ip -6 neigh add proxy 2001:41d0:2:52ff:ff:ff:ff:ff dev vmbr1
post-up ip -6 neigh add proxy 2001:41d0:2:520X::1 dev vmbr0 # node X
在每个节点上(来自/etc/network/interfaces
,由proxmox自动生成):
iface venet0 inet6 manual
up ifconfig venet0 add 2001:41d0:2:520X::1/128
down ifconfig venet0 del 2001:41d0:2:520X::1/128
up route -A inet6 add default dev venet0
down route -A inet6 del default dev venet0
我是否遗漏了什么,或者根本无法通过 venet 实现?
编辑:ip -6 route show
这是我的主机上的输出:
2001:41d0:2:520X::1 dev venet0 metric 1024 mtu 1500 advmss 1440 hoplimit 4294967295
2001:41d0:2:52ae::/64 dev vmbr0 proto kernel metric 256 mtu 1500 advmss 1440 hoplimit 4294967295
2001:41d0:2:5200::/56 dev vmbr0 proto kernel metric 256 expires 0sec mtu 1500 advmss 1440 hoplimit 4294967295
fe80::1 dev venet0 proto kernel metric 256 mtu 1500 advmss 1440 hoplimit 4294967295
fe80::/64 dev dummy0 proto kernel metric 256 mtu 1500 advmss 1440 hoplimit 4294967295
fe80::/64 dev vmbr1 proto kernel metric 256 mtu 1500 advmss 1440 hoplimit 4294967295
fe80::/64 dev vmbr0 proto kernel metric 256 mtu 1500 advmss 1440 hoplimit 4294967295
fe80::/64 dev eth0 proto kernel metric 256 mtu 1500 advmss 1440 hoplimit 4294967295
fe80::/64 dev venet0 proto kernel metric 256 mtu 1500 advmss 1440 hoplimit 4294967295
default via fe80::5:73ff:fea0:0 dev vmbr0 proto kernel metric 1024 expires 0sec mtu 1500 advmss 1440 hoplimit 64
在我的节点上:
2001:41d0:2:520X::1 dev venet0 proto kernel metric 256 mtu 1500 advmss 1440 hoplimit 0
fe80::/64 dev venet0 proto kernel metric 256 mtu 1500 advmss 1440 hoplimit 0
default dev venet0 metric 1 mtu 1500 advmss 1440 hoplimit 0
编辑2:我从 venet 切换到 veth,它运行正常,没有任何问题。但是,我仍然想找到一种方法让它通过 venet 工作... 使用ip -6 route show
veth 会显示网关路由,而使用 venet 则不会出现这种情况。也许这就是原因...
答案1
您显示的 /etc/network/interfaces 配置不可能起作用。
您正在将默认网关指向您在主机上配置的本地地址。您的默认网关(几乎肯定)需要指向提供商网络上的某个地址。
您没有在 eth0 接口上放置任何公共 IPv6 地址来与您的提供商通信(最有可能的是,这是您的 2001:41d0:2:52ae::1/64 地址应该去的地方,并且最有可能的是您的默认网关应该是 2001:41d0:2:52ff:ff:ff:ff:ff 通过设备 eth0。
一旦在 eth0 上完成了基本网络运行,您就可以将 /56 中的其他 /64 路由到其他虚拟机。