如何将 dnat 配置为 ssh 转发端口

如何将 dnat 配置为 ssh 转发端口

我有两台机器,但只能从一台机器通过 ssh 连接到另一台机器(为什么?有时再问我一次......)。所以我想破解这个,这样我就可以有效地进行双向 ssh。

我做了一个叫做的设备h-linux-a(其IP地址是10.10.20.20)

ssh -R 2222:127.0.0.1:22 h-linux-b

在 h-linux-b 上,我测试过可以通过执行以下操作成功连接回 h-linux-a

ssh -p 2222 127.0.0.1

所以在 h-linux-b 上我添加了:

iptables -t nat -A OUTPUT -p tcp -d 10.10.20.20 --dport 22 -j DNAT --to-destination 127.0.0.1:2222

当我这样做时

ssh 10.10.20.20

我的 ssh 就挂在那里。我看到 iptables 上的命中计数器上升(增加了 1,因此无需重试),并且我检查了 h-linux-a 上临时端口上的 tcpdump,以查看流量​​是否返回(我没有看到任何内容)除了保活)。

所以看来我的 iptables 命令是问题所在。我不太使用 INPUT 链,主要是 PREROUTING 和 POSTROUTING,所以我不知道其中的细微差别。

答案1

代替:

iptables -t nat -A OUTPUT -p tcp -d 10.10.20.20 --dport 22 -j DNAT --to-destination 127.0.0.1:2222

尝试:

iptables -t nat -A OUTPUT -p tcp -d 10.10.20.20 --dport 22 -j REDIRECT --to-ports 2222

重定向链允许您将流量环回同一台机器。

相关内容