答案1
筆記:此訊息是您正在嘗試解決的問題的症狀。了解該訊息的原因將最終引導您解決問題。
訊息「連線被拒絕」有兩個主要原因:
- 沒有任何內容正在偵聽您嘗試連線的 IP:連接埠。
- 該連接埠被防火牆封鎖。
沒有進程正在監聽。
這是迄今為止該消息最常見的原因。首先確保您正在嘗試連接到正確的系統。如果您要確定這是否是問題所在,請在遠端系統上執行網路統計或者SS1例如,如果您期望進程偵聽連接埠 22222
sudo netstat -tnlp | grep :22222
或者
ss -tnlp | grep :22222
對於 OSX,合適的命令是
sudo netstat -tnlp tcp | grep '\.80 '
如果沒有任何東西在監聽,那麼上面的程式碼將不會產生任何輸出。如果您看到一些輸出,請確認它是您所期望的,然後查看下面的防火牆部分。
如果您無權存取遠端系統並希望在向相關管理員報告之前確認問題,則可以使用 tcpdump(wireshark 或類似工具)。
當嘗試連接到沒有任何監聽的 IP:連接埠時,遠端系統對初始 SYN 封包的回應是設定了 RST、ACK 標誌的封包。這將關閉連線並導致連線被拒絕訊息,例如
$ 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,win 29200,選項[mss 1460,sackOK,TS val 15306344 ecr 0,nop,wscale 7],長度0
12:31:27.020162 IP 192.0.2.[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. > 192.0。
請注意,這也告訴我們阻塞防火牆在哪裡。
現在您知道導致連線被拒絕訊息的原因,您應該採取適當的措施,例如聯絡防火牆管理員或調查進程不監聽的原因。
1可能還有其他工具可用。
答案2
答案3
是什麼原因導致「連線被拒絕」訊息?
- 不正確指定的 IP 位址或連接埠號碼。
- 伺服器應用程式是沒有運行監聽該連接埠。
- 伺服器應用程式正在運行,但是不在聽在指定連接埠上。
- 本地/遠端防火牆阻止連線。
- 伺服器過載或資源耗盡。