針對 Azure 中 虛擬機器上的應用程式連線問題進行疑難排解
適用於:✔️ Linux VM ✔️ Windows VM
您無法啟動或連線到在 Azure 虛擬機上執行的應用程式時,有各種原因。 原因包括應用程式未在預期的埠上執行或接聽、已封鎖接聽埠,或網路規則未正確將流量傳遞至應用程式。 本文說明尋找並更正問題的有條理方法。
如果您在使用 RDP 或 SSH 連線到 VM 時遇到問題,請先參閱下列其中一篇文章:
- 針對 Windows 型 Azure 虛擬機的遠端桌面連線進行疑難解答
- 針對 Linux 型 Azure 虛擬機的安全殼層 (SSH) 連線進行疑難解答。
如果在本文章中有任何需要協助的地方,您可以連絡 MSDN Azure 和 Stack Overflow 論壇上的 Azure 專家。 或者,您也可以提出 Azure 支援事件。 請移至 Azure 支援網站,然後選取 [取得支援]。
快速入門疑難解答步驟
如果您在連線到應用程式時遇到問題,請嘗試下列一般疑難解答步驟。 在每個步驟之後,再次嘗試連線到您的應用程式:
- 重新啟動虛擬機器
- 重新建立端點/防火牆規則/網路安全組 (NSG) 規則
- 從不同的位置連線,例如不同的 Azure 虛擬網路
- 重新部署虛擬機
- 重新建立虛擬機
如需詳細資訊,請參閱針對端點連線能力進行疑難解答(RDP/SSH/HTTP 等失敗)。
詳細的疑難解答概觀
有四個主要區域可針對在 Azure 虛擬機上執行的應用程式存取進行疑難解答。
- 在 Azure 虛擬機上執行的應用程式。
- 應用程式本身是否正常執行?
- Azure 虛擬機。
- VM 本身是否正常執行並回應要求?
- Azure 網路端點。
- 傳統部署模型中虛擬機的雲端服務端點。
- Resource Manager 部署模型中虛擬機的網路安全組和輸入 NAT 規則。
- 流量是否可以從使用者流向預期的埠上的 VM/應用程式?
- 您的因特網邊緣裝置。
- 防火牆規則是否已就緒,以防止流量正確流動?
對於透過站對站 VPN 或 ExpressRoute 連線存取應用程式的用戶端電腦,可能會導致問題的主要區域是應用程式和 Azure 虛擬機。
若要判斷問題的來源及其修正,請遵循下列步驟。
步驟 1:從目標 VM 存取應用程式
嘗試從其執行所在的 VM,使用適當的用戶端程式存取應用程式。 使用本機主機名、本機 IP 位址或回送位址 (127.0.0.1)。
例如,如果應用程式是網頁伺服器,請在 VM 上開啟瀏覽器,並嘗試存取裝載在 VM 上的網頁。
如果您可以存取應用程式,請移至 步驟 2。
如果您無法存取應用程式,請確認下列設定:
- 應用程式正在目標虛擬機上執行。
- 應用程式正在接聽預期的 TCP 和 UDP 連接埠。
在 Windows 和 Linux 型虛擬機上 ,使用 netstat -a 命令來顯示作用中的接聽埠。 檢查應用程式應該接聽之預期埠的輸出。 重新啟動應用程式,或將其設定為視需要使用預期的埠,並嘗試再次在本機存取應用程式。
步驟 2:從相同虛擬網路中的另一個 VM 存取應用程式
嘗試從不同的 VM 存取應用程式,但在相同的虛擬網路中,使用 VM 的主機名或其 Azure 指派的公用、私人或提供者 IP 位址。 對於使用傳統部署模型建立的虛擬機,請勿使用雲端服務的公用IP位址。
例如,如果應用程式是網頁伺服器,請嘗試從相同虛擬網路中不同 VM 上的瀏覽器存取網頁。
如果您可以存取應用程式,請移至 步驟 3。
如果您無法存取應用程式,請確認下列設定:
- 目標 VM 上的主機防火牆允許輸入要求和輸出回應流量。
- 在目標 VM 上執行的入侵檢測或網路監視軟體允許流量。
- 雲端服務 端點或網路安全組允許流量:
- 在測試 VM 與 VM 之間路徑中執行的個別元件,例如負載平衡器或防火牆,允許流量。
在以 Windows 為基礎的虛擬機上,使用具有進階安全性的 Windows 防火牆來判斷防火牆規則是否排除應用程式的輸入和輸出流量。
步驟 3:從虛擬網路外部存取應用程式
嘗試從虛擬網路外部的計算機存取應用程式,作為應用程式執行所在的 VM。 使用不同的網路作為原始客戶端電腦。
例如,如果應用程式是網頁伺服器,請嘗試從不在虛擬網路的計算機上執行的瀏覽器存取網頁。
如果您無法存取應用程式,請確認下列設定:
針對使用傳統部署模型建立的 VM:
- 確認 VM 的端點組態允許連入流量,特別是通訊協定 (TCP 或 UDP) 和公用和私人埠號碼。
- 確認端點上的訪問控制清單 (ACL) 不會防止來自因特網的連入流量。
- 如需詳細資訊,請參閱 如何設定虛擬機的端點。
針對使用 Resource Manager 部署模型建立的 VM:
- 確認 VM 的輸入 NAT 規則組態允許連入流量,特別是通訊協定 (TCP 或 UDP) 和公用和私人埠號碼。
- 確認網路安全組允許輸入要求和輸出回應流量。
- 如需詳細資訊,請參閱 什麼是網路安全組?
如果虛擬機或端點是負載平衡集的成員:
- 確認探查通訊協定 (TCP 或 UDP) 和埠號碼正確無誤。
- 如果探查通訊協定和埠與負載平衡集通訊協定和埠不同:
- 確認應用程式正在接聽探查通訊協定 (TCP 或 UDP) 和埠號碼 (在 目標 VM 上使用 netstat –a )。
- 確認目標 VM 上的主機防火牆允許輸入探查要求和輸出探查回應流量。
如果您可以存取應用程式,請確定您的因特網邊緣裝置允許:
- 輸出應用程式會要求從用戶端電腦到 Azure 虛擬機的流量。
- 來自 Azure 虛擬機的輸入應用程式回應流量。
步驟 4 如果您無法存取應用程式,請使用 IP 驗證來檢查設定
如需詳細資訊,請參閱 Azure 網路監視概觀。
其他資源
針對 Windows 型 Azure 虛擬機的遠端桌面連線進行疑難解答
針對 Linux 型 Azure 虛擬機的安全殼層 (SSH) 連線進行疑難解答
與我們連絡,以取得說明
如果您有問題或需要相關協助,請建立支援要求,或詢問 Azure community 支援。 您也可以向 Azure 意見反應社群提交產品意見反應。