IPTABLES将端口redirect到另一个IP

我已经尝试了几个post来configuration此redirect,但不工作,这是我所需要的

我正在接收端口8080上的数据包,我想将数据包redirect到另一个IP在同一台服务器,为什么? 因为某些原因,它不会发送到互联网。

让我再详细一点。

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

服务器B有2个IP,一个是VPN服务器1,连接到服务器A,另一个IP有Internet访问。 我需要什么,或者我认为我需要的是将stream量从tun1redirect到具有Internet访问权限的IP,我尝试了不同的configuration,但是不起作用。

任何帮助将不胜感激。

欢迎来到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 

如果这回答你的问题,一定要点击左边的复选标记button✔。