根据 HostHatch 官方文档和 PVE 的环境特性,HostHatch 不支持 SLAAC 或 DHCPv6 自动分配,必须进行静态配置。
你之前尝试脚本抓不到 RA 信号是正常的,因为 HostHatch 根本没有广播 RA。要让 IPv6 通,关键点在于:必须使用 fe80::1 作为网关,并开启 on-link 路由。
以下是为你的 PVE 环境量身定制的 /etc/network/interfaces 修复方案:
1. 核心配置逻辑
在 PVE (Debian) 中,当网关是链路本地地址(fe80::1)且不在同一个子网时,必须强制指定路由。
请将 /etc/network/interfaces 中的 IPv6 部分修改为:
iface vmbr0 inet6 static
address 你的IPv6地址/64
# 这里的网关填 HostHatch 官方要求的 fe80::1
gateway fe80::1
# 核心:因为 fe80::1 不在你的公网段内,必须通过 post-up 强制建立链路路由
post-up ip -6 route add fe80::1 dev vmbr0
post-up ip -6 route add default via fe80::1 dev vmbr0
2. 检查内核参数 (/etc/sysctl.conf)
HostHatch 明确要求关闭自动配置并允许接收特定的报文。请确保 /etc/sysctl.conf 包含以下行:
# 允许网桥接收 IPv6 流量
net.ipv6.conf.all.accept_ra = 2
net.ipv6.conf.vmbr0.accept_ra = 2
net.ipv6.conf.all.autoconf = 0
net.ipv6.conf.vmbr0.autoconf = 0
# 开启转发(如果你希望虚拟机也能用 IPv6)
net.ipv6.conf.all.forwarding = 1
执行生效: sysctl -p
3. 排查 HostHatch 面板设置 (非常重要)
HostHatch 的 IPv6 有时需要“手动激活”:
- 添加地址:在 HostHatch 控制面板的 "Networking" -> "IPv6" 中,确保你已经手动添加了一个地址(例如
...::1)。如果没有手动 Add,网口是不会通的。 - 重新配置网络:点击面板上的 "Reconfigure Networking",然后执行一次面板里的 "Power Cycle"(注意:是面板里的冷关机重启,不是在 SSH 里打
reboot)。这一步是为了刷新宿主机机架交换机的 MAC 绑定。
4. 验证与诊断
修改并重启网络后,请按顺序执行:
- 检查地址是否挂载成功:
ip -6 addr show vmbr0 - 检查路由表是否包含 fe80::1:
ip -6 route
*你应该看到一条default via fe80::1 dev vmbr0* - 测试网关连通性:
ping6 -I vmbr0 fe80::1
如果这个 ping 不通,说明 HostHatch 面板那边的网络还没刷新或者物理网卡没接通。 - 测试外网:
ping6 google.com
特别提示:
如果按照上述配置后 ping6 fe80::1 依然提示 Destination unreachable,请检查你的 vmbr0 绑定的物理网卡名(如 enp1s0 或 eth0)。如果网卡名变了,tcpdump 报错 interface disappeared 就是因为网卡在配置应用时被重命名或由于错误配置导致掉线了。
需要我帮你核对一下你的 ip addr 输出结果,确认物理网卡绑定是否正确吗?