我有一台主机运行Proxmox VE。
我设置了3个虚拟网桥vmbr[0-2]来处理我的networking需求: vmbr0直接在具有公有IP的虚拟机的主接口上运行, vmbr1允许vmbr1虚拟机,而vmbr2是仅主机networking。 假设我的主要公开IP是12.34.56.78。
为了使NAT工作,我build立了以下iptables规则集:
-A PREROUTING -d 12.34.56.78 -i vmbr0 -p tcp -m multiport --dports 80,443 -j DNAT --to-destination 192.168.1.101 # and other rules like this one for different ports to different local IPs -A POSTROUTING -s 192.168.10.0/24 -o vmbr0 -j SNAT --to-source 12.34.56.78
现在让我们说,我有一个虚拟机在vmbr1与IP 192.168.1.102。
本机无法使用公共IP 12.34.56.78访问192.168.1.101的networking服务器。
我最初以为上面的POSTROUTING指令足以让发夹式NAT工作。
阅读规范回送转发公共IP地址从本地networking – 发夹NAT和多个其他答案在同一个变种,我试过了:
在主机上临时设置-P [INPUT|FORWARD|OUTPUT] ACCEPT ,以检查是否可能由某些过滤规则引起
将-A POSTROUTING -d 192.168.1.101 -p tcp --dport 80 -j MASQUERADE到规则集,在当前POSTROUTING规则之前和之后尝试
但仍然不起作用。
想法?
谢谢。
要做发夹NAT方法,你需要input下面的命令。
iptables -t nat -A PREROUTING -d 12.34.56.78 -i vmbr1 -p tcp -m multiport --dports 80,443 -j DNAT \ --to-destination 192.168.1.101 iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o vmbr1 -d 192.168.1.254 -p tcp \ --dport 80 -j SNAT --to-source 192.168.1.101