如何让 NAT 显示原始 IP 地址?

如何让 NAT 显示原始 IP 地址?

我正在尝试让我们的 NAT Ubuntu 服务器将所有外部内部流量发送到我们的防火墙 Untrust 接口。我看到防火墙上的流量,但所有流量的来源都来自 10.5.5.5(NAT 的私有 IP)。我知道这与伪装规则有关,但如果我删除该规则,我就不会收到任何流量。

有谁能帮我获取流量以显示原始 IP 地址吗?任何帮助都将不胜感激!

防火墙私有 IP:10.5.1.4
NAT 私有 IP:10.5.5.5

到目前为止,我的规则如下:

sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 50022 -j DNAT --to 10.5.5.5:22
sudo iptables -t nat -A PREROUTING -i eth0 -j DNAT --to-destination 10.5.1.4
sudo iptables -A FORWARD -i eth0 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -j MASQUERADE

编辑-我想要实现的目标:我们在 Azure 中部署了 Palo Alto 防火墙。Azure 只允许每个 VM 有一个公共 IP。在这种情况下,我们需要分配给防火墙管理接口的公共 IP。因此,我们需要一个具有公共 IP 的 NAT VM,以便将所有流量从其公共接口转发到 Palo Alto 防火墙的 Untrust 接口。我需要防火墙查看原始的外部互联网流量。NAT VM 和防火墙 VM 位于 Azure 中的同一个 VNET 中。

答案1

问题在于,你的MASQUERADE规则适用于所有流量,无论接口是什么。你应该几乎总是限制MASQUERADE在预期的传出接口上,在你的情况下应该是eth0

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

相关内容