使用iptables端口转发localhost:端口到LAN:端口 – 如何?

有没有一种方法可以将127.0.0.1:3389映射到192.168.1.2:3389 (使用iptables?也就是说,所有到localhost:3389连接将被redirect到我的LAN机器?

原因如下:我的iPhone RDP应用程序可以执行SSH隧道,但不提供调整SSH参数的选项。 所以,它通过SSH连接到我的路由器,build立到127.0.0.1:3389的隧道,然后尝试连接到iPhone上的localhost:3389 。 失败。

我不想在我的LAN机器上运行SSH服务器,而是想使用路由器的SSH服务器(运行Tomato的华硕RT-N16)。 那可行吗? 这不起作用:

 $ iptables -t nat -A OUTPUT -p tcp -d 127.0.0.1 --dport 3389 -j DNAT --to-destination 192.168.1.2 

看看rinetd,它似乎做你想做的事情。 这里有更多关于安装和使用的信息

你的iptables命令有一些错误:

1)你试图在OUTPUT表中捕捉到这个,但是对于这样的redirect,你需要在PREROUTING

2)你也没有redirect到端口。 你只是告诉iptables发送这些数据包到一个特定的IP而不指定端口。

所以你的命令应该是这样的:

 iptables -t nat -A PREROUTING -d 127.0.0.1 -p tcp --dport 3389 -j DNAT --to 192.168.1.2:3389 

我的iptables-fu可能有点生疏,所以如果它不起作用,请尝试在INPUT表中运行相同的命令(-A INPUT)。 如果什么都行不通,请回到这里,我们会find一个解决办法。