我有 3 个系统分布在 2 个网络中:
- 具有 1 个 NIC 的计算机 1:IP 地址 192.168.10.22
- 具有 1 个 NIC 的计算机 2:IP 地址为 192.168.10.30 和 192.168.11.30
- 具有 1 个 NIC 的计算机 3:IP 地址 192.168.11.33
我想要从计算机 3 到计算机 1 的反向 SSH 隧道。计算机 2 到计算机 3 应使用端口 2222,而计算机 1 到计算机 2 应使用端口 22。在我的情况下,由于某种原因它不起作用。以下是我尝试过的:
在计算机2上:
$sudo sysctl net.ipv4.ip_forward
net.ipv4.ip_forward=1
# External machine connects to 192.168.11.30:22, forwarded to 192.168.10.30:2222
$sudo iptables -t nat -A PREROUTING -p tcp -d 192.168.11.30 --dport 22 -j DNAT --to-destination 192.168.10.30:2222
$sudo iptables -t nat -A POSTROUTING -p tcp -d 192.168.10.30 --dport 2222 -j SNAT --to-source 192.168.11.30
# Internal machine2 connects to 192.168.10.22:2222, forwarded to 192.168.11.30:22
$sudo iptables -t nat -A PREROUTING -p tcp -d 192.168.10.30 --dport 2222 -j DNAT --to-destination 192.168.11.30:22
$sudo iptables -t nat -A POSTROUTING -p tcp -d 192.168.11.30 --dport 22 -j SNAT --to-source 192.168.10.30
#启动反向SSH:
$ssh -N -R 2222:192.168.10.30:22 [email protected]
Warning: remote port forwarding failed for listen port 2222
在计算机3上:
$ssh [email protected]
ssh connect to host 192.168.11.30 port 22: Connection refused.
为什么我会收到警告?如何解决无法连接的问题?