我正在使用 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
。