此方法适合任何希望建立nat-ipv4加独立ipv6虚拟机的Proxmox平台使用。建议在有救援模式/IPMI的独立服务器上操作。

快捷操作

直接编辑 /etc/network/interfaces 文件。建议先备份interfaces以免出问题

auto lo
iface lo inet loopback

auto vmbr0
iface vmbr0 inet static
        address 104.***.***.***/24
        netmask 255.255.255.252
        gateway 104.***.***.77
        bridge_ports eth1
        bridge_stp off
        bridge_fd 0

iface vmbr0 inet6 static
address 2604:****:0:6b::2/64
gateway 2604:****:0:6b::1

auto vmbr1
iface vmbr1 inet static
        address 192.168.0.1
        netmask 255.255.255.0
        bridge_ports none
        bridge_stp off
        bridge_fd 0
        post-up echo 1 > /proc/sys/net/ipv4/ip_forward
        post-up iptables -t nat -A POSTROUTING -s '192.168.0.0/24' -o vmbr0 -j MASQUERADE
        post-down iptables -t nat -D POSTROUTING -s '192.168.0.0/24' -o vmbr0 -j MASQUERADE

按照自己的ip地址将配置文件中的地址修改好,重启网络服务即可。

systemctl restart networking

此时你的宿主机已经应当可以访问ipv6网络了,可以测试一下。如果不通请检查三遍interfaces有无配置错误,并看下面的疑难解答。

ping -6 google.com

接下来为小鸡开启ipv6转发,以便虚拟机访问ipv6网络。

echo “net.ipv6.conf.all.forwarding = 1” >> /etc/sysctl.conf && sysctl -p

使用ndppd来分配ipv6地址

apt -y install ndppd

nano /etc/ndppd.conf
写入如下配置,ipv6地址块换成你自己的:

proxy vmbr0 {
rule 2001:41d0:*:****::/64 {
static
}
}

启动ndppd并设置开机自启

systemctl restart ndppd.service
systemctl enable ndppd.service

疑难排查

1.部分服务器有多个网卡,网线不一定插在第一个口上。所以这样配置vmbr0可能导致网络不通。查看你的具体网卡是哪一个,并且确定一下哪个有网络。

cat /proc/net/dev

对应的名字去修改vmbr0中 bridge_ports eth1 的这个位置。eth1改为你的物理网卡名字。