使用 Proxmox 2.2 通过 OpenVZ 启用 IPv6

tmu*_*uet 5 networking ipv6 openvz proxmox

我正在尝试使用 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:520 X::/64
  • 节点XIPv6:2001:41d0:2:520 X::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
Run Code Online (Sandbox Code Playgroud)

在每个节点上(来自/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
Run Code Online (Sandbox Code Playgroud)

我是不是遗漏了什么,或者根本不可能通过 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
Run Code Online (Sandbox Code Playgroud)

在我的节点上:

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
Run Code Online (Sandbox Code Playgroud)

Edit2:我从 venet 切换到 veth,它可以正常工作。然而,我仍然对找到一种通过ip -6 route showvenet使其工作的方法感兴趣......与 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 路由到其他虚拟机。