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

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

我的设置是这样的:

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

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

client01我可以使用从到server01的ssh 隧道成功完成此操作server02,但我不想在 上运行 ssh client01。当我从server01server02转发端口 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 链,以确保允许流量进入。

您还需要持续维护该隧道。

相关内容