很多人配置好 PVE 之后,发现自己的 PVE 主机没有 IPv6 地址,无法远程访问,排查了很久依然无法获取地址,这其实是因为 PVE 内置的安全策略导致的,必须开启 IPv6 相关报文转发才能正常通过 DHCPv6 或 SLAAC 获取 IPv6 地址


按下面的操作修改配置文件后即可正常获取 IPv6。
注意:本教程是让你的 PVE 主机 和 LXC 容器获取 IPv6 地址,如果你虚拟机和其他下连设备出现问题,请先确定是不是你自己的问题

  • 修改配置文件 nano /etc/sysctl.conf
  • 把文件内容替换为/在末尾加上下面的内容
net.ipv6.conf.all.accept_ra=2
net.ipv6.conf.default.accept_ra=2
net.ipv6.conf.vmbr0.accept_ra=2
net.ipv6.conf.all.autoconf=2
net.ipv6.conf.default.autoconf=2
net.ipv6.conf.vmbr0.autoconf=2
  • 重启主机

另外备注一下:LXC 容器 获取 IPv6 地址要设置成 SLAAC 才能获取地址(设置为 SLAAC 后既可以 DHCPv6 有状态,也可以 SLAAC 无状态,设置为 DHCP 只能拿到Link-Local 链路地址)
LXC 容器修改完网络设置重启对应容器即可

重启之后检查一下 PVE 主机和 LXC 容器有没有拿到地址

# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.20.6.9  netmask 255.224.0.0  broadcast 10.31.255.255
        inet6 2408:8210::18a9:1eff:fee2:600c  prefixlen 64  scopeid 0x0<global>
        inet6 2408:8210::10:20:6:9  prefixlen 128  scopeid 0x0<global>
        inet6 fe80::18a9:1eff:fee2:600c  prefixlen 64  scopeid 0x20<link>
        ether 1a:a9:1e:e2:60:0c  txqueuelen 1000  (Ethernet)
        RX packets 134  bytes 33534 (33.5 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 126  bytes 24570 (24.5 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

可以看到同时通过 DHCPv6 和 SLAAC 拿到了地址

Last modification:March 3, 2022
请我喝杯咖啡 - 为 MBRjun 和 Moefire Studio 提供支持