简单的端口转发
当我尝试使用第二台服务器设置反向代理时,我遇到了一些麻烦。 我的想法是让防火墙将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中运行。