读取 TCP 的 netstat 输出

读取 TCP 的 netstat 输出

如果我ssh root@server -R 5901:localhost:5900netstat -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 地址向网络开放。

相关内容