IPTABLES 将端口重定向到另一个 IP

IPTABLES 将端口重定向到另一个 IP

我已尝试过多次帖子来配置此重定向,但没有工作,这就是我需要的

我在端口 8080 上接收数据包,我想将数据包重定向到同一服务器中的另一个 IP,为什么?因为出于某种原因,它没有将其发送到互联网。

让我提供更多细节。

服务器 A 正在将端口 2525 发送到服务器 B,但它们不在同一个网络中。我可以看到数据包进入服务器 B,但它们没有传出到互联网。

服务器 B 有 2 个 IP,一个是连接到服务器 A 的 VPN tun1,另一个 IP 可以访问互联网。我需要,或者我认为我需要的是将流量从 tun1 重定向到可以访问互联网的 IP,我尝试了不同的配置,但不起作用。

任何帮助将不胜感激。

答案1

欢迎来到 Serverfault。

如果我理解正确的话,您正试图在公共地址 167.114.185.238 上公开 10.0.10.172 的 25 端口,该地址由服务器 10.0.9.6 拥有

您拥有 PREROUTING 权利:

iptables -t nat -A PREROUTING -d 167.114.185.238 -p tcp --dport 25 -j DNAT --to 10.0.9.6

但是你还需要一个相应的POSTROUTING:

iptables -t nat -A POSTROUTING -d 10.0.9.6 -j SNAT --to 10.0.10.172

您还提到了以下 FORWARD 规则,它是正确的:

iptables -A FORWARD -d 10.0.9.6 -p tcp --dport 25 -j ACCEPT 

但只有当您在 FORWARD 表上有任何 DROP 规则或策略 (-P) 时才需要它,默认情况下不存在。如果您有任何 DROP 规则,则需要放置 ACCEPT在 DROP 规则之前,否则将不起任何作用。

最后,你还需要启用 IPv4 转发:

sysctl -w net.ipv4.ip_forward=1

以下内容实际上不是必需的,因为到端口 25 的连接源自您的服务器外部,并且它们已经包含您的公共 IP 167.114.185.238 作为目的地:

iptables -t nat -A POSTROUTING -o venet0:0 -j MASQUERADE

如果这回答了您的问题,请务必单击左上方的复选标记按钮✔。

相关内容