简单的端口转发

当我尝试使用第二台服务器设置反向代理时,我遇到了一些麻烦。 我的想法是让防火墙将https转发到反向代理并将端口29418(gerrit ssh)转发到第二台服务器。 现在我的合作IT人说:不能! 两个端口都转到服务器1,或者两个端口都转到服务器2。

好吧,作为一个解决方法,我尝试在端口29418的反向代理上设置端口转发 – > server2:29418

细节:

  • Ubuntu 12.04.2 LTS上的Server1 IP:10.0.0.132和192.168.10.2
  • Ubuntu 12.04.2 LTS上的Server2 IP:10.0.0.133和192.168.10.3

现在,https和端口29418都从防火墙转到10.0.0.132,IT说这是唯一的方法。 🙁

所以请告诉我如何从10.0.0.132:29418 – > 192.168.10.3:29418或10.0.0.133:29418转发

当我在10.0.0.132上工作时,我可以连接到10.0.0.133:29418和192.168.10.3:29418,因此端口是打开的。

– 更新 –

我的iptables -t nat -L看起来像这样:

 root @ dev:/ root#iptables -t nat -L
 Chain PREROUTING(政策接受)
目标prot opt源目的地
 DNAT tcp  -  dev.example.com tcp dpt:29418到:10.0.0.133

 Chain INPUT(政策接受)
目标prot opt源目的地

 Chain OUTPUT(政策接受)
目标prot opt源目的地

链条后置(政策接受)
目标prot opt源目的地
 root @ dev:/ root #cat / proc / sys / net / ipv4 / ip_forward
 1

如果其他人正在寻找一种实际可行的方式。 尽管@HorsePunchKid在他的建议中是正确的,但我发现这个演练填补了缺少的步骤:

http://www.debuntu.org/how-to-redirecting-network-traffic-to-a-new-ip-using-iptables/

在本质上:

启用IP转发:

sysctl net.ipv4.ip_forward=1 

添加转发规则(使用nnnn:port):

 iptables -t nat -A PREROUTING -p tcp -d 10.0.0.132 --dport 29418 -j DNAT --to-destination 10.0.0.133:29418 

要求IPtables伪装:

 iptables -t nat -A POSTROUTING -j MASQUERADE 

就是这样! 无论如何它对我有用:)

如果您在10.0.0.132上安装了iptables,我认为这将非常简单:

 iptables -t nat -A PREROUTING -j DNAT -d 10.0.0.132 -p tcp --dport 29418 --to 10.0.0.133 

这表示在10.0.0.132可能尝试执行的任何其他路由之前,将在端口29418上进入10.0.0.132的流量发送到10.0.0.133,而不是在同一端口上。 如果运行此命令并且遇到问题,请将-A标志替换为-D以将其删除。

如果您希望在10.0.0.132启动时自动运行此规则,请考虑在/ etc / network / interfaces中将上述命令添加为“post-up”规则。

如果有人在寻找临时方法,请尝试以下解决方案。

  ssh -L 192.168.0.10:8080:10.0.0.10:80 root@10.0.0.10 

以上命令将基本计算机上端口8080的所有连接重定向到虚拟机的80端口。 您可以通过访问网页http://192.168.0.10:8080来测试工作,它将显示客户机上的网页。

这适用于所有端口:)

最后,我不得不在我的ESXi服务器中安装pfSense作为路由器,以便将流量路由到不同的VM,因为我无法让它在Ubuntu中运行。

Interesting Posts