【发布时间】:2015-03-14 16:06:14
【问题描述】:
我想将来自外部服务器 linnode 的 http 流量转发到仅允许使用 NAT 进行传出连接的专用网络中的服务器。我是这个领域的新手,所以我随机尝试了socat 和ssh tunnel,但没有运气。这里的一个关键问题是我无法控制这个私有网络,包括防火墙和网关,因此我无法在网关上设置任何东西来重定向来自那里的流量。
我知道如何为该私人服务器设置反向 ssh,但那是另一回事。我不知道这会有什么帮助。
[添加我的 ssh 隧道尝试]
让我们看看我的 linnode 服务器是具有已知 IP 的 A。我的私人服务器是 B 并且显然具有未知的外部 IP 地址。目标是将流量从 A 重定向到 B,所以我在 B 中运行它:
ssh -N -f -R 8000:localhost:80 user@[A's ip]
这应该建立一条从 A:8000 到 B:80 的隧道。但是当我使用netcat检查时,A上没有建立连接。
【问题讨论】:
-
一个 ssh 隧道应该能够提供您正在寻找的东西。您是否介意分享您迄今为止的尝试,以便我们可以共同制定如何实现这一目标?基本上,您通过 ssh 从内部服务器连接到 linnode 系统并指示设置附加隧道。这行得通,如果你可以像那样连接到 linnode。
-
我添加了我的尝试。请检查。谢谢。 @arkascha
-
我刚刚再次检查,这对我有用。但是,有几点需要记住: 1. 只有 root 可以转发特权端口,例如 80。所以您必须使用
sudo实用程序。 2. 在这种情况下,您可能还必须使用-i标志指定 ssh 密钥,因为您切换了用户。 3. 注意 A 上的 ssh 服务器确实使用默认端口或使用-p标志指定端口。由于您使用的是-N标志,因此您不会看到连接问题。观察远程节点上的系统日志文件是个好主意。 -
@arkascha 1. 你如何验证它的工作原理? 2.如何查看系统日志文件?
-
好吧,我通过连接到远程端口进行了验证,该端口可以正常工作并传递结果,就像连接到本地系统的开放端口一样。关于检查日志文件:您正在使用 ssh 之类的东西并且不知道如何查看日志文件?嗯...无论如何:像
tail -f /var/log/messages或类似的东西,取决于 linux 发行版。
标签: bash networking ssh tunnel socat