将特定端口上的stream量转发到另一台机器的最佳方式是什么?

我的设置是这样的:

[client01] <-A-> [server01] <-B-> [server02]

client01可以访问client01上的端口9300(连接A )。 server01只能通过ssh访问server02 (连接B上的 9300端口。 使端口9300server01所有stream量到达server01端口9300的最佳方法是什么?

我可以用client01server01server02的ssh隧道成功地做到这server02 ,但我不想在client01上运行ssh。 当我从server01server02转发端口9300( ssh -g -L9300:localhost:9300 server02上的ssh -g -L9300:localhost:9300 server02 server01 ),它不起作用 – 我使用错误的命令?

编辑:添加server02只能通过SSH访问

你可以使用iptables DNAT规则来做到这一点 – 例如:

 iptables -A PREROUTING -p tcp -d xxxx --dport 9300 -j DNAT --to-destination yyyy:9300 

用server01的IP地址代替xxxx ,用server02的地址代替yyyy然后设置。

当然,这一切都假设你在server01上运行iptables。 这也假定server02正在使用server01将stream量路由回互联网。 如果server02不是,那么这不是做你想做的事情。

根据机器之间的纯SSH连接进行编辑:

除了在“L”和“9300”之间需要一个空格之外,您的SSH端口转发命令行看起来不错。 您还需要确保server01计算机将接受端口9300上的入站连接。查看filter表( iptables -L INPUT )中的iptables INPUT链以确保允许stream量进入。

你也需要让这个隧道一直保持下去。