我有一台位于 DMZ 中的 Ubuntu 服务器。该服务器有一个私有 IP 地址 (10.xxx),而防火墙有一个公共 IP 地址。从互联网到公共 IP 的所有网络流量都从防火墙转发到 DMZ 服务器。这很好用。
我的问题是防火墙不会将来自 DMZ 内部服务器到公共 IP 地址的流量路由回去。防火墙不在我的控制范围内,因此我希望将服务器配置为从不将传出流量路由到网关,而是在本地处理。
我一直在尝试使用 iptables DNAT 和 MASQUERADE,但到目前为止没有任何收获。我需要添加哪些规则才能实现这一点?
我在使用桥接网络的服务器上的正常传出流量和来自 docker 容器的传出流量都遇到了同样的问题。
答案1
我最终自己找到了答案:
iptables -t nat -A PREROUTING -d X.X.X.X -j DNAT --to-destination Y.Y.Y.Y
iptables -t nat -A OUTPUT -d X.X.X.X -j DNAT --to-destination Y.Y.Y.Y
其中XXXX是FW的公网IP地址,YYYY是服务器的IP地址。