将传入端口转发到外部服务不起作用

将传入端口转发到外部服务不起作用

我正在尝试将某个端口上的传入流量转发到另一台服务器,例如:myserver.com:8081-> externalserver.com:15081

我的具体用例是 SSH,但我设置了http://port81.helpfulseb.com:81(无 SSL)来测试解决方案这个问题.但是没有起到作用。

以下是我运行的命令:

iptables -t nat -A PREROUTING -p tcp --dport 81 -j DNAT --to-destination 158.69.48.226:81
iptables -t nat -A POSTROUTING -p tcp -d 158.69.48.226 --dport 81 -j SNAT --to-source <my external IP address, i.e. 51.68...>

158.69.48.226是地址port81.helpfulseb.com

当我尝试连接时,myserver.com:81请求超时。输出iptables -t nat -v -L显示少量传入数据包,但没有传出数据包。我假设这些是收到的控制数据包,但由于某种原因,响应没有被正确路由。

$ iptables -t nat -v -L -n --line-number

Chain PREROUTING (policy ACCEPT 16632 packets, 665K bytes)
num   pkts bytes target     prot opt in     out     source               destination
1       27  1276 DNAT       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:81 to:158.69.48.226:81

Chain INPUT (policy ACCEPT 16632 packets, 665K bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 492 packets, 33023 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 492 packets, 33023 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 SNAT       tcp  --  *      *       0.0.0.0/0            158.69.48.226        tcp dpt:81 to:<my external IP>

我正在使用 Ubuntu 18.04 LTS,如果有帮助的话。

答案1

如果你不受 iptables 的束缚,那么还有 socat 解决方案:

[email protected]# /usr/bin/socat TCP-LISTEN:8081,fork,reuseaddr TCP:externalserver.com:15081

相关内容