Ssh

為 tcp 讀取 netstat 的輸出

  • March 7, 2016

如果我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 地址”

在 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. 它在功能上等同於 IPv4127.0.0.1並執行相同的角色。

所以在第一個輸出中,該tcp6行正在偵聽 IPv6 環回地址,而不是所有地址,因此在外部不可見。

第二個範例 ( :::5901) 顯示未指定的 IPv6 地址::,後跟一個額外的冒號和埠號。這在功能上等同於帶有埠的未指定 IPv4 地址,0.0.0.0:5901因此通過任何 IPv6 地址對網路開放。

引用自:https://unix.stackexchange.com/questions/268178