是什麼導致“連接被拒絕”消息?
這是一個關於連接被拒絕的典型問題
我們看到很多關於大意的問題
當我嘗試連接到系統時,我收到一條消息
連接被拒絕
為什麼是這樣 ?
注意:此消息是您嘗試解決的問題的症狀。了解消息的原因最終將引導您解決問題。
消息“連接被拒絕”有兩個主要原因:
- 您嘗試連接的 IP:Port 上沒有任何內容正在監聽。
- 該埠被防火牆阻止。
沒有程序在監聽。
到目前為止,這是該消息最常見的原因。首先確保您嘗試連接到正確的系統。如果您要確定這是否是問題所在,請在遠端系統上執行netstat或ss 1例如,如果您希望程序正在偵聽埠 22222
sudo netstat -tnlp | grep :22222
或者
ss -tnlp | grep :22222
對於 OSX,一個合適的命令是
sudo netstat -tnlp tcp | grep '\.80 '
如果沒有任何東西在聽,那麼上面的內容將不會產生任何輸出。如果您看到一些輸出,請確認這是您所期望的,然後查看下面的防火牆部分。
如果您無權訪問遠端系統並且想在向相關管理員報告問題之前確認問題,您可以使用 tcpdump(wireshark 或類似)。
當嘗試連接到沒有任何內容的 IP:port 時,遠端系統對初始 SYN 數據包的響應是一個帶有 RST,ACK 標誌的數據包。這會關閉連接並導致 Connection Refused 消息,例如
$ sudo tcpdump -n 主機 192.0.2.1 和埠 22222
tcpdump:詳細輸出被抑制,使用 -v 或 -vv
在 enp14s0 上進行完整協議解碼偵聽,連結類型 EN10MB(乙太網),擷取大小 262144 字節
12:31:27.013976 IP 192.0.2.2.34390 > 192.0.2.1.22222:標誌**$$ S $$**, seq 1207858804, 贏 29200, 選項
$$ mss 1460,sackOK,TS val 15306344 ecr 0,nop,wscale 7 $$,長度 0
12:31:27.020162 IP 192.0.2.1.22222 > 192.0.2.2.34390:標誌**$$ R. $$**, seq 0, ack 1207858805, win 0, 長度 0
請注意,tcpdump 使用**.** 來表示 ACK標誌。
埠被防火牆阻止
如果埠被防火牆阻止並且防火牆已配置為響應,
icmp-port-unreachable
這也會導致連接被拒絕消息。同樣,您可以使用 tcpdump (或類似的)看到這一點$ sudo tcpdump -n icmp
tcpdump:詳細輸出被抑制,使用 -v 或 -vv
在 enp14s0 上進行完整協議解碼偵聽,連結類型 EN10MB(乙太網),擷取大小 262144 字節 13:03:24.149897 IP 192.0.2.1 > 192.0。 2.2:ICMP 192.0.2.1 tcp埠22222不可達,長度68
請注意,這也告訴我們阻止防火牆的位置。
所以現在您知道是什麼導致了連接被拒絕消息,您應該採取適當的措施,例如聯繫防火牆管理員或調查程序未偵聽的原因。
1其他工具可能可用。