VM 主机上的桥接网络和发夹式 NAT

VM 主机上的桥接网络和发夹式 NAT

我有一台运行 Proxmox VE 的主机。

我设置了 3 个虚拟网桥vmbr[0-2]来满足我的网络需求:vmbr0直接在具有公共 IP 的虚拟机的主接口上运行,vmbr1允许 NATed 虚拟机,并且vmbr2是仅主机网络。假设我的主要公共 IP 是 12.34.56.78。

为了使 NAT 正常工作,我设置了以下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

现在假设我有一台vmbr1IP 为 192.168.1.102 的虚拟机。

这台机器不能使用公网 IP 12.34.56.78 访问 192.168.1.101 的网络服务器。

我最初认为POSTROUTING上述指令足以使发夹式 NAT 发挥作用。

读过经典从本地网络环回到转发的公共 IP 地址 - Hairpin NAT以及关于同一变体的多个其他答案,我尝试过:

  • 在主机上临时设置-P [INPUT|FORWARD|OUTPUT] ACCEPT,检查是否由某些过滤规则导致

  • 添加到规则集,在当前规则-A POSTROUTING -d 192.168.1.101 -p tcp --dport 80 -j MASQUERADE之前和之后尝试POSTROUTING

但它仍然不起作用。

有想法吗?

谢谢。

答案1

要执行发夹 NAT 方法,您需要输入以下命令。

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

相关内容