如果我ssh root@server -R 5901:localhost:5900
和netstat -an
我得到:
Active Internet connections (servers and established) │
Proto Recv-Q Send-Q Local Address Foreign Address State │
tcp 0 0 127.0.0.1:5901 0.0.0.0:* LISTEN │
tcp6 0 0 ::1:5901 :::* LISTEN │
而如果我允许GatewayPorts yes
我的 ssh_config 并执行相同的操作,我会得到
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:5901 0.0.0.0:* LISTEN
tcp6 0 0 :::5901 :::* LISTEN
(并且我的服务可以从外部网络访问)
您如何阅读该格式::1:5901
(而不是:::5901
)?
编辑 :
你怎么读到不向公共网络开放?
0.0.0.0 表示“本地计算机上的所有 IP 地址”
答案1
在 IPv6 术语中,::1
是环回地址(例如127.0.0.1
在 IPv4 术语中)。
它本质上是0:0:0:0:0:0:0:1
(或者更准确地说,但无趣的是,0000:0000:0000:0000:0000:0000:0000:0001
)所有的 0 都折叠成::1
。它在功能上与 IPv4 等效127.0.0.1
并执行相同的角色。
因此,在第一个输出中,该tcp6
线路正在侦听 IPv6 环回地址,而不是所有地址,因此在外部不可见。
第二个示例 ( :::5901
) 显示未指定的 IPv6 地址::
,后跟一个附加冒号和端口号。这在功能上相当于带有端口的未指定 IPv4 地址0.0.0.0:5901
,因此可通过任何 IPv6 地址向网络开放。