我的设置是这样的:
[client01] <-A-> [server01] <-B-> [server02]
client01
可以访问server01
(连接A
)上的端口 9300。server01
只能访问(连接)9300
上的端口server02
B
通过 ssh。使端口上的所有流量都9300
流向server01
端口的最佳方法是什么?9300
server02
client01
我可以使用从到server01
的ssh 隧道成功完成此操作server02
,但我不想在 上运行 ssh client01
。当我从server01
到server02
转发端口 9300(ssh -g -L9300:localhost:9300 server02
在 上server01
)时,它不起作用 - 我使用了错误的命令吗?
编辑:添加了 server02 只能通过 ssh 访问
答案1
您可以使用 iptables DNAT 规则执行此操作 - 例如:
iptables -A PREROUTING -p tcp -d x.x.x.x --dport 9300 -j DNAT --to-destination y.y.y.y:9300
将 server01 的 IP 地址替换为 server01 的 IP 地址,x.x.x.x
将 server02 的地址替换为 server02 的 IP 地址,y.y.y.y
即可设置完成。
当然,这一切都假设您在 server01 上运行 iptables。这还假设 server02 正在使用 server01 将流量路由回 Internet。如果 server02 没有这样做,那么这将无法实现您的期望。
根据机器之间的 SSH 连接进行编辑:
您的 SSH 端口转发命令行看起来不错,只是需要在“L”和“9300”之间留一个空格。您还需要确保 server01 计算机将接受端口 9300 上的入站连接。查看过滤表 ( iptables -L INPUT
) 中的 iptables INPUT 链,以确保允许流量进入。
您还需要持续维护该隧道。