我希望将本地端口2221转发到远程计算机(192.168.2.100),其中ssh监听端口2222。
连接到远程机器工作:
ssh -p 2222 192.168.2.100
user@192.168.2.100's password:iptables的设置非常简单,只有一条规则:
sudo iptables -t nat -A PREROUTING -p tcp --dport 2221 -j DNAT --to-destination 192.168.2.100:2222
>sudo iptables -t raw -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
>sudo iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- anywhere anywhere tcp dpt:2221 to:192.168.2.100:2222
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
>sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination 当我现在试图连接到(大概)转发端口上的ssh时,它失败了:
>ssh -p 2221 127.0.0.1
ssh: connect to host 127.0.0.1 port 2221: Connection refused我可能错过了一些基本的东西。我如何调试它呢?
更新:根据https://www.debuntu.org/how-to-redirecting-network-traffic-to-a-new-ip-using-iptables/,您需要添加伪装:
sudo iptables -t nat -A POSTROUTING -j MASQUERADE并确保启用了端口转发:
echo "1" > sudo /proc/sys/net/ipv4/ip_forward但是,它仍然对我不起作用。
如果有人能解释如何获得进一步的调试信息,那就太好了。
发布于 2016-07-27 15:46:54
我在这篇文章中找到了一个基于socat的解决方案:
https://superuser.com/a/536295/621970
所以,这样做的诀窍是:
sudo socat TCP-LISTEN:2221,su=nobody,fork,reuseaddr TCP-CONNECT:192.168.2.100:2222它连接本地主机上的端口2221和远程计算机上的端口2222 ( 192.168.2.100 )
苏多需要向任何人宣泄。
叉子选项意味着它将重新协商传入端口,这样它就不会阻塞。
https://askubuntu.com/questions/802643
复制相似问题