环境:PVE和虚拟机都可以申请独立的IPV6。假设IPV6网关为:

1111:2222:3333:4444::1

可申请的IPV6段为:

1111:2222:3333:4444::/64

PVE配置

这里vmbr0直通物理网卡,vmbr1用于PVE内的NAT。IPV6走vmbr0。

假设给PVE的IPV6申请了

1111:2222:3333:4444::2/64

vi /etc/network/interfaces

root@pve:~# cat /etc/network/interfaces
auto lo
iface lo inet loopback

iface enp1s0 inet manual

iface wlp2s0 inet manual

auto vmbr0
iface vmbr0 inet static
        address 11.22.33.2/24  
        gateway 11.22.33.1
        bridge-ports enp1s0
        bridge-stp off
        bridge-fd 0
iface vmbr0 inet6 static
        address 1111:2222:3333:4444::2/64
        gateway 1111:2222:3333:4444::1
auto vmbr1
iface vmbr1 inet static
        address 192.168.233.10/24
        #gateway 192.168.233.1
        bridge_ports none
        bridge_stp off
        bridge_fd 0

应用配置

systemctl restart networking

可以通过

curl 6.ipw.cn

验证IPV6是否开启。

接下来编辑

vi /etc/sysctl.conf

确保这两行的开启

net.ipv6.conf.all.forwarding=1                                                                                                                                                                                   
net.ipv6.conf.all.proxy_ndp=1

执行 sysctl -p 生效。

接下来配置ndp代理。使用 ndppd 比较方便。

apt install ndppd

接下来 vi /etc/ndppd.conf

route-ttl 30000
proxy vmbr0 {
    rule 1111:2222:3333:4444::/64 {
        auto
    }
}

启动服务:systemctl enable –now ndppd

虚拟机配置

虚拟机使用上面的vmbr0网桥,然后手动配置IPV6即可,例如ubuntu的netplan。

如果要为docker container使用IPV6,可以在docker启动的时候添加参数--network host直接使用HOST的IPV6。