Ssh
為 tcp 讀取 netstat 的輸出
如果我
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 地址”
在 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 地址對網路開放。