简单的端口转发


19

我在尝试建立反向代理和第二台服务器时遇到了麻烦。我的想法是让防火墙将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
  • Server2 IP:在Ubuntu 12.04.2 LTS上为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
链优先(政策接受)
目标prot opt源目的地
DNAT tcp-任何地方dev.example.com tcp dpt:29418至:10.0.0.133

链输入(接受政策)
目标prot opt源目的地

链输出(接受政策)
目标prot opt源目的地

连锁投篮(接受政策)
目标prot opt源目的地
root @ dev:/ root#cat / proc / sys / net / ipv4 / ip_forward
1个

Answers:


32

如果其他人正在寻找一种切实可行的方法。尽管@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

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


1
这是我在这个问题上找到的最佳答案。
Victor Piousbox 2014年

使用此解决方案后,我的Docker容器失去了连接。不得不删除规则。Rule正常运行,但丢失了所有其他流量。我不建议这样做。
Dyin

iptables -t nat -A POSTROUTING -j MASQUERADE哦,就是这样,谢谢!用了几个小时搜索网络并弄清楚了。这是如此简单且有效。
虾车

7

如果您在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,而不是发送。如果运行此命令并遇到问题,请用-D替换-A标志以将其删除。

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


那正是我所做的,但是没有用。我在/etc/sysctl.conf中取消了net.ipv4.ip_forward = 1的注释,但是在连接到10.0.0.132:29418时仍然收到错误消息
uncletall 2013年

6

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

    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来测试其工作情况,它将在访客计算机上显示该网页。

这适用于所有端口:)


0

最后,我不得不在我的ESXi服务器中安装pfSense作为路由器,以将流量路由到其他VM,因为我无法在Ubuntu中使用它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.