情况就是这样。
我的机器 主机 1 主机 2
这三台机器都是 Ubuntu 机器。我的机器和主机 1 都有面向公众的 IP。
主机 2 具有 NAT IP,并且只能从主机 1 通过 NAT IP 访问。
我在主机 1、主机 2 和我的机器上具有具有 sudo 权限的 SSH 访问权限。
我在主机 2 上的端口 6550 上运行了一个服务,我想从我的机器访问该服务。
需要做什么?
另外,我确实知道在主机 2 的 8080 端口上有另一个服务正在运行,该服务通过主机 1 的 IP 向公众公开。即 host2-nat-ip:8080 映射到 -> host1-public-ip:4567
答案1
我在主机 1、主机 2 和我的机器上具有具有 sudo 权限的 SSH 访问权限。
如果你可以通过 SSH 从你的机器连接到主机 2,那么你可以使用SSH 端口转发。
SSH 的端口转发功能可以将各种类型的互联网流量偷运进或出网络。这可用于避免网络监控或嗅探器,或绕过互联网上配置不当的路由器。
可以实现更复杂的应用
另一种方法是使用类似socat
在 host1 上设置 TCP 中继
socat TCP4-LISTEN:www TCP4:www.domain.org:www
安装一个简单的 TCP 端口转发器。使用 TCP4-LISTEN,它会监听本地端口“www”,直到有连接进入,接受该连接,然后连接到远程主机 (TCP4) 并开始数据传输。
您可以用任意数字端口号代替 www (80)。有选项可使其成为处理多个并发和连续连接的持久中继。