我不确定该用什么词来表达,也不知道该用什么工具。我唯一拥有的是一个我想实现的目标。
我有两台 Linux 机器(A 和 B)和一个远程服务。该服务正在监听端口 16000。防火墙阻止了来自机器 A 端口 16000 的传出连接,但阻止了 B 上的传出连接。我需要从 A 访问该服务。因此,它可能需要通过 B 进行路由(正确的说法?)。我无法修改访问该服务的程序(因此它将始终尝试端口 16000)。
我知道有很多关于类似主题的教程,但我不知道应该遵循哪一个,因为显然有很多可能性。我对这两台机器都有完全访问权限。我是一个简单的开发人员,而不是 Linux 管理员,但这对我来说确实是一个障碍 :( 实现这一目标的最佳方法是什么?我应该在机器 A 和机器 B 上执行什么?
谢谢。
答案1
我不知道最好的方法,有几种
修复防火墙
我觉得这最好。从你的问题中看不出防火墙在哪里(它是一个独立的设备、路由器的一个功能,还是 A 上的软件防火墙?)
路由
您也许可以将所有流量从 A 路由到 B,但我会避免这样做。
您必须为 A 配置一个静态网络配置,将 B 的地址作为默认网关。
您必须将 B 配置为单臂路由器。
您可能必须在真正的 LAN-Internet 路由器上执行一些额外的 NAT 技巧,以便将 A 的返回流量传送到 B。
将 A 单独放在子网上并为 B 添加 NIC 可能会更容易。
等待看看是否有人能想出一个简单的解决方案。我会先尝试下面的另一个想法。
转发
例如,您可以/etc/host
在 A 上添加一个条目,将服务的 DNS 名称与 B 的 IP 地址关联起来。通常,名称解析器首先查阅 /etc/hosts(如果不是,您可以指定顺序 - 详细信息取决于操作系统)
答案2
如果从服务器 A 到 16000 的任何传出连接被阻止,并且应用程序只能连接到端口 16000,那么您唯一的希望就是允许您连接到本地端口 16000(服务器 A 中的本地)。
如果可能的话,只需设置从本地端口 16000 到服务器 B 的 SSH 端口转发:
ssh -L 16000:service:16000 server_b