CentOS 与 AutoSSH、端口转发说明

CentOS 与 AutoSSH、端口转发说明

我正在使用 autossh 并按以下示例所示进行设置:http://surniaulula.com/2012/12/10/autossh-startup-script-for-multiple-tunnels/

我发现它工作得很好,但需要一些澄清。特别是以下示例中 127.0.0.1 和 * 之间的区别:

ForwardPort=(
    "L 127.0.0.1:3397:127.0.0.1:3306"
)

相对

ForwardPort=(
    "L *:3397:127.0.0.1:3306"
)

如果来自主机本身,第一个似乎会进行重定向,而第二个似乎是从任何地方转发。对我来说,这意味着 * 代表任何转发流量的 IP,但有人告诉我,它只是代表机器上的任何适配器。我很好奇它是任何IP还是任何适配器?我认为最终结果是相同的,但希望澄清我自己的理解。

更新

我更新了测试以包含我正在使用的网络的特定 IP,然后尝试连接到该端口,发现它不适用于指定的特定端口,例如

ForwardPort=(
    "L x.x.x.x:3397:127.0.0.1:3306"
    "L 127.0.0.1:3397:127.0.0.1:3306"
)

由于这不起作用,这让我相信我的朋友对适配器的看法是正确的。如果有人能为我提供一些有关适配器工作原理的详细信息,或者提供一篇解释它的好文章的链接,我将不胜感激。

答案1

找出我的答案,想我会发布我的答案,以防有人感兴趣或像我一样用谷歌搜索答案但找不到它。

所以当我x.x.x.x这样做时,这是我的远程服务器的 WAN IP。 autossh 对此一无所知,因为该 IP 不是其适配器之一。如果您ifconfig在服务器上运行,那么您将获得本地环回127.0.0.1和其他适配器,例如eth0,它们将具有 WAN IP。通过执行此操作*,它可以转发来自本地环回以及来自 WAN 的任何请求。因此,*路由所有请求,其中127.0.0.1仅路由来自机器本身的请求。

如果您想允许外部转发,但限制谁可以这样做,您可以通过执行*然后限制服务器的通信来实现此目的iptables

相关内容