問題現象
當嘗試通過特定連接埠串連ECS執行個體時失敗,用戶端提示Connection timed out(連線逾時)或Connection refused(串連被拒絕)。
問題原因
網路存取控制攔截:請求資料包在到達目標伺服器的應用程式之前,被安全性群組或系統內防火牆策略靜默丟棄,用戶端收不到任何響應,導致長時間等待後逾時(對應
Connection timed out)。目標連接埠未監聽:請求資料包已經成功到達執行個體作業系統但是應用程式在目標連接埠未在目標連接埠上配置監聽來接收請求,作業系統因此直接拒絕了該請求。(對應
Connection refused)。
方式一、使用自助問題排查工具
阿里雲的自助問題排查工具可以協助快速檢測安全性群組配置、執行個體內部防火牆以及常見應用連接埠監聽狀態,並給出明確的診斷報告。
單擊進入自助問題排查頁面,並切換至目標地區。
如果自助問題排查工具未能定位問題,請繼續以下步驟進行排查。
方式二、手動定位排查
情境一:連線逾時(Connection timed out)
檢查安全性群組規則。確保入方向規則允許了目標連接埠的訪問,且未被高優先順序的拒絕規則覆蓋。
前往ECS控制台-執行個體單擊目標執行個體ID進入執行個體詳情頁。
在執行個體詳情頁切換至安全性群組頁簽,單擊目標安全性群組ID進入安全性群組詳情頁。
在入方向列表中檢查規則。
檢查拒絕規則:查看是否存在優先順序較高的拒絕策略,阻斷了業務訪問。
檢查允許存取規則:確認是否已添加允許目標連接埠和源IP訪問的策略。
檢查執行個體內部防火牆。
Alibaba Cloud Linux
登入ECS執行個體。
訪問ECS控制台-執行個體。在頁面左側頂部,選擇目標資源所在的資源群組和地區。
進入目標執行個體詳情頁,單擊遠端連線,選擇通過Workbench遠端連線。根據頁面提示登入,進入終端頁面。
查看防火牆中已開放的連接埠。
firewall-cmd --list-all如果目標連接埠未在列表中,需添加防火牆規則。永久開放指定的TCP連接埠,允許外部存取(將
<PORT>替換為實際連接埠號碼)。firewall-cmd --zone=public --add-port=<PORT>/tcp --permanent重啟防火牆使規則生效。
firewall-cmd --reload
Ubuntu
登入ECS執行個體。
訪問ECS控制台-執行個體。在頁面左側頂部,選擇目標資源所在的資源群組和地區。
進入目標執行個體詳情頁,單擊遠端連線,選擇通過Workbench遠端連線。根據頁面提示登入,進入終端頁面。
查看ufw狀態和已配置的規則。
sudo ufw status如果目標連接埠未在列表中,需添加防火牆規則。將命令中
<PORT>修改為目標連接埠。sudo ufw allow <PORT>/tcp重啟防火牆使規則生效。
sudo ufw reload
Windows
登入ECS執行個體。
訪問ECS控制台-執行個體。在頁面左側頂部,選擇目標資源所在的資源群組和地區。
進入目標執行個體詳情頁,單擊遠端連線,選擇通過Workbench遠端連線。選擇串連方式為終端串連,輸入帳號和密碼,登入圖形化終端頁面。
開啟進階安全防火牆。
在工作列搜尋方塊,輸入伺服器管理並開啟。
在伺服器管理員右上方,選擇。
檢查並啟用遠端管理規則。
檢查防火牆狀態。如果防火牆已關閉,則無需後續操作。
如果防火牆已啟用。在左側面板中,單擊入站規則。
在規則列表中,找到Windows 遠端管理-相容模式(HTTP-In)。
如果該規則未啟用,按右鍵它並選擇啟用規則(E)。
檢查連接埠是否可以訪問。在本地用戶端(不要在目標ECS上自測),使用
telnet命令測試。telnet <公網IP> <連接埠號碼>若返回
Connected to ...,說明網路和連接埠均已通暢。
情境二:串連被拒絕(Connection refused)
Linux
登入ECS執行個體。
訪問ECS控制台-執行個體。在頁面左側頂部,選擇目標資源所在的資源群組和地區。
進入目標執行個體詳情頁,單擊遠端連線,選擇通過Workbench遠端連線。根據頁面提示登入,進入終端頁面。
檢查連接埠監聽狀態(將
<PORT>替換為實際連接埠號碼)。netstat -an | grep <PORT>分析結果。
正常監聽:輸出結果State對應值為
LISTEN,表示連接埠正常監聽。重要如果監聽地址是127.0.0.1,說明服務僅接受本地訪問。請檢查服務組態檔(如Nginx服務的nginx.conf、SSH服務的sshd_config等),將監聽地址更改為0.0.0.0或執行個體公網IP。
未在監聽:無任何輸出,或輸出中不包含
LISTEN狀態,則表示服務未啟動,需啟動服務。
Windows
登入ECS執行個體。
訪問ECS控制台-執行個體。在頁面左側頂部,選擇目標資源所在的資源群組和地區。
進入目標執行個體詳情頁,單擊遠端連線,選擇通過Workbench遠端連線。選擇串連方式為終端串連,輸入帳號和密碼,登入圖形化終端頁面。
使用PowerShell檢查連接埠。
在工作列搜尋方塊,輸入PowerShell並開啟。
檢查連接埠監聽狀態(將
<PORT>替換為實際連接埠號碼)。netstat -ano | findstr "<PORT>"分析結果。
正常監聽:輸出包含
LISTEN狀態,表示連接埠正常監聽。如果監聽地址為127.0.0.1,表明服務僅接收來自執行個體內部的串連。需修改服務組態檔,將監聽地址127.0.0.1更改為0.0.0.0或執行個體的公網IP。未在監聽:無任何輸出,或輸出中不包含
LISTEN狀態,則表示服務未啟動,需啟動服務。