首先,假设正常安装系统(Debian、CentOS等)有:
单个 IPv4:123.1.2.3/22
,
网关为 123.1.2.1
IPv6 /64 子网:240e:abcd:abcd:abcd::/64
网关 fe80::1
目标是开 IPv4 NAT+独立 IPv6 的小鸡,所以要开启 IPv4 和 IPv6 转发,并且 IPv6 还需要开启 NDP 代理:
简单来说就是三条配置,修改 /etc/sysctl.conf
:
1 2 3
| net.ipv4.ip_forward=1 net.ipv6.conf.all.forwarding=1 net.ipv6.conf.ens3.proxy_ndp=1
|
前两条应该都有,把前面的 # 号去掉启用就行。
第三条中的 ens3 是我的接口名,修改成你自己的。
之后修改 /etc/network/interfaces
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| auto lo iface lo inet loopback
auto ens3 iface ens3 inet static address 123.1.2.3/22 gateway 123.1.2.1
iface ens3 inet6 static address 240e:abcd:abcd:abcd::1/128 gateway fe80::1
iface vmbr0 inet static address 10.0.0.1/24 bridge-ports none bridge-stp off bridge-fd 0
iface vmbr0 inet6 static address 240e:abcd:abcd:abcd::2/64
post-up iptables -t nat -A POSTROUTING -s '10.0.0.0/24' -o ens3 -j $ post-down iptables -t nat -D POSTROUTING -s '10.0.0.0/24' -o ens3 -j $ post-up iptables -t raw -I PREROUTING -i fwbr+ -j CT --zone 1 post-down iptables -t raw -D PREROUTING -i fwbr+ -j CT --zone 1 post-up ip neigh add proxy 240e:abcd:abcd:abcd::3 dev ens3 pre-down ip neigh del proxy 240e:abcd:abcd:abcd::3 dev ens3
|
还是注意 ens3 是我机器接口的名字,所有都要改成你自己的。
这样配置好后,开小鸡时,选择桥接 vmbr0,IPv4 和 IPv6 都配置为静态,然后手动输入:
IPv4/CIDR:10.0.0.2/24
网关(IPV4):10.0.0.1
IPv6/CIDR:240e:abcd:abcd:abcd::3/128
网关(IPV6):240e:abcd:abcd:abcd::2
小鸡的 IPv4 没什么,不要和网关的 10.0.0.1
重复就行,10.0.0.5
、10.0.0.15
啥的都可以。
IPv6 要和配置文件的最后两行对应,每新增一个小鸡,末尾要手动增加对应的两行。比如再开一个小鸡,IPv6 为 240e:abcd:abcd:abcd::4/128
:
1 2
| post-up ip neigh add proxy 240e:abcd:abcd:abcd::4 dev ens3 pre-down ip neigh del proxy 240e:abcd:abcd:abcd::4 dev ens3
|
以上都是在 Proxmox 防火墙为黑名单模式(默认 ACCEPT)情况下设置的,在白名单模式(默认 DROP)下行不通,需要调整防火墙规则,我就不弄了,有兴趣自己折腾。
关于对 NAT 小鸡进行端口映射
假设目标小鸡 IPv4 为 10.0.0.2
,修改 /etc/network/interfaces
,开放单个 80 端口在最后加上:
1 2
| post-up iptables -t nat -I PREROUTING -p tcp -i ens3 --dport 80 -j DNAT --to 10.0.0.2:80 post-down iptables -t nat -D PREROUTING -p tcp -i ens3 --dport 80 -j DNAT --to 10.0.0.2:80
|
开放 10000-20000 端口则加上:
1 2
| post-up iptables -t nat -I PREROUTING -p tcp -i ens3 --dport 10000:20000 -j DNAT --to 10.0.0.2:10000-20000 post-down iptables -t nat -D PREROUTING -p tcp -i ens3 --dport 10000:20000 -j DNAT --to 10.0.0.2:10000-20000
|
注意将 ens3 换成你自己的接口。