TCP/IP 通訊疑難排解指導
試用虛擬助理 - 其可協助您快速找出並修正常見 Active Directory 複寫問題。
本文旨在協助您針對 TCP/IP 通訊問題進行疑難解答。
疑難排解工具
ping 命令有助於測試基本連線能力。 然而,您不該依賴此工具來證明整體連線能力。 Telnet 和 PsPing 更實用,原因如下:
- 這些工具可以使用 TCP 或 UDP (僅限 PsPing) 作為傳輸通訊協定來測試與應用程式層的連線能力。
- 您可以指定將要使用的連接埠。 因此,您可以瀏覽防火牆上開啟的連接埠。
- 您可以連線到目的地節點上任一「接聽」連接埠,以確認特定應用程式的連接埠的存取權。
疑難排解檢查清單
步驟 1:擷取網路圖表
擷取網路圖表,詳細說明受影響區域路徑中的裝置。 具體而言,請注意下列裝置:
- 防火牆
- IPS (入侵保護/預防系統)
- DPI (深層封包檢查)
- WAN 加速器
此圖表可協助您可視化並識別要尋找問題原因的位置。
步驟 2:網路追蹤
網路追蹤很適合用來查看問題發生時在網路層級發生的狀況。
步驟 3:Ping 計算機的本機 IP 位址
嘗試偵測電腦的本機IP位址。
如果節點無法偵測其本機 IP,本機堆疊將無法運作。 請注意所顯示的任何錯誤訊息。
如果您收到一 般失敗 錯誤,此錯誤表示沒有有效的介面可處理要求。 此問題可能是硬體問題或堆疊問題所造成。
檢查您是否在系統匣的 [網络連線] 圖示上看到紅色的 “X” 字元或黃色驚嘆號。 紅色 X 表示 Windows 未偵測到網路連線。 黃色驚嘆號表示網路連線狀態指示器 (NSCI) 未通過探查檢查。
若要針對此問題進行疑難解答,請確認網路適配器報告連線能力。 請確定網路適配器已插入,且節點連線所在的交換器埠未處於錯誤狀態。 您可以變更纜線、交換器埠和網路適配器,以縮小發生此問題的位置。 不過,歸根結底,問題不在OS之外。 若要進一步調查,請連絡硬體廠商。
網路驅動程式與 Windows 之間也可能發生問題。 此問題通常是因為堆疊中的損毀。 使用下列疑難解答步驟:
請確定節點上的最新位 (TCP/IP、NDIS、AFD、Winsock 等等)。
執行下列命令來重設IP和 Winsock。 備份所有網路設定。
netsh -c interface dump > C:\netConfig.txt netsh int ip reset netsh winsock reset
重新啟動節點。
在重新啟動之後還原網路設定。 只有在介面名稱尚未變更,或腳本更新為使用新名稱時,此作業才有效。
netsh -f C:\netConfig.txt
視需要卸載或重新安裝網路適配器驅動程式。
檢查並移除第三方篩選驅動程式(例如防病毒軟體)。
嘗試使用網路以安全模式啟動電腦。 如果使用網路的安全模式運作,請停用 MSConfig 內的所有第三方應用程式和服務,以執行「全新開機」程式,然後逐一重新啟用它們,直到問題傳回為止。 然後,您可以連絡廠商以取得支援。
- 如果這些項目都沒有成功,問題可能是登錄損毀。
- 如果您有登錄的備份復本(例如實體備份或系統還原點),您可以嘗試將節點還原至先前運作中的組態。 捕捉腐敗的根本原因可能很困難,而且非常耗時。 即使找到腐敗,也知道是什麼導致了它更具挑戰性。 手動修改損毀的登錄機碼會將節點置於不支援的狀態。 因此,我們建議客戶還原或重載節點,以更正損毀。
如果 NSCI 失敗其探查檢查 (黃色驚嘆號),這不一定表示連線問題。 請確定一般通訊應該發生。
- 如果是,調查應該特別著重於 NCSI 為何無法進行探查檢查。 這一點的詳細數據會涵蓋在個別的主題中。
- 如果沒有,請先調查連線問題,因為這在還原連線之後可能會更正。
步驟 4:針對 Ping 或 telnet 測試期間發生的錯誤訊息進行疑難解答
如果節點可以 Ping 或 telnet 到相同子網或網路區段上的節點,這會確認外部連線正常運作。 還需要進一步測試,才能瞭解是否有基本連線問題存在。
如果節點無法 Ping/telnet 到相同子網/網路區段上的節點。 請注意所顯示的任何錯誤訊息。
目的地主機無法 連線錯誤表示節點所傳送的ARP要求不會收到回應。
從您要測試的節點收集兩端追蹤。 請確定來源節點所傳送的 ARP 要求到達目的地節點,且目的地節點會據此回復。 此回復應該會在來源追蹤中看到。 如果此程式失敗,問題可能是設定錯誤或其他影響基礎結構的問題。
可能的原因可能是:
- 不正確的或不相符的 VLAN。
- 不正確的交換器埠組態(主幹與存取埠)。
- 其他硬體問題。
要求 逾 時錯誤表示 ARP 要求收到回應,但節點所傳送的 ICMP 回應要求未取得 ICMP 回應回應。 單獨而言,這並不表示問題。 網路上的網路或防火牆軟體可能會封鎖ICMP流量。 關閉防火牆配置檔 (Windows) 或透過防火牆廠商支援的ICMP測試方法加以停用可能很有説明。
- Telnet 和 PsPing 更適合用於測試。 從來源節點執行 Telnet 或 PsPing 到接聽埠上的目的地節點(例如 445)。
- 如果步驟 1 成功,外部連線就會正常運作。 繼續測試基本連線能力。
- 如果步驟 1 未成功(且防火牆配置檔已停用),請收集雙面
netsh netconnection
案例追蹤以進一步進行疑難解答。
步驟 5:Ping 或 Telnet 至預設閘道
當節點可以 Ping 其預設閘道時,可以從來源節點存取外部連線能力(例如現成連線能力)。 還需要進一步測試,才能瞭解是否有基本連線問題存在。 如果節點無法 Ping 或 Telnet 至其預設閘道,這表示 ICMP 回復會在路由器上停用。
步驟 6:檢查影響特定目的地節點的問題
如果來源節點可以 Ping、Telnet 或 PsPing 至目的地子網上的其他節點,則基礎結構內的基本連線和路由正在運作。 此結果指出會影響特定目的地節點的問題。
嘗試將 Telnet 或 PsPing 移至應用程式正在接聽的特定埠(例如 SMB 的 TCP 連接埠 445)。 如果連線成功,則可以確認基本的應用層級連線。 在此情況下,您必須連絡應用程式廠商,以協助調查應用程式未連線的原因。
注意
例如,如果問題無法連線到共用,則應用程式廠商可能會Microsoft。 在這些情況下,採取雙面 netsh netconnection 案例追蹤來收集其他資訊並協助您確認網路堆疊中沒有任何問題,會很有用。
如果連線到特定埠未成功:
- 請確定埠處於「接聽」狀態:
CMD:netstat -nato | findstr :<port>
PowerShell:Get-NetTcpConnection -LocalPort <port>
- 暫時停用所有防火牆配置檔。 (注意:只停用配置檔。請勿停用服務。
如果成功,則必須重新設定防火牆,以允許其特定埠上的應用程式流量。 - 一次移除任何第三方應用程式,並在每個移除之間進行測試。
如果成功,請連絡有問題的軟體廠商。 - 嘗試使用網路功能的安全模式。
如果成功,請使用 MSConfig 執行節點的「清除開機」來隔離原因,然後逐一啟用第三方應用程式和服務,直到問題再次發生為止。 - 當您重現連線嘗試時,您應該從來源執行 netsh netconnection 案例追蹤至受影響的目的地節點。 網路 SDP 也很有説明。
- 請確定埠處於「接聽」狀態:
如果節點無法 Ping、Telnet 或 PsPing 至目的地子網上的其他節點,問題可能與基礎結構相關。 同樣地,ICMP 可能會在環境中遭到封鎖。 因此,使用 Telnet 或 PsPing 連線到已知接聽埠來確認連線能力。 此時,必須有雙端網路追蹤,才能顯示網路上發生封包遺失的位置。 在嘗試連線測試之前,請確定這兩個追蹤都在執行,以便擷取問題。
常見問題與解決方案
主機的 TCP/IP 連線似乎已停止
發生此問題的原因是 TCP 和 UDP 佇列中的數據遭到封鎖,或有網路或使用者層級的軟體延遲問題。
若要針對此問題進行疑難解答,請使用 netstat -a
命令來顯示本機計算機上 TCP 和 UDP 連接埠上所有活動的狀態。
在傳送和接收佇列中有零個字節時,會建立良好 TCP 連線的狀態。 如果數據在佇列中遭到封鎖,或狀態不規則,則連線可能發生錯誤。 如果沒有,您可能遇到網路或用戶層級的軟體延遲。
使用 Lmhosts 進行名稱解析時的長時間連線時間
之所以發生此問題,是因為 Lmhosts 檔案會循序剖析,以找出沒有 #PRE 選項的專案。
若要針對此問題進行疑難解答,請將常用專案放在檔案頂端附近,並將 #PRE 專案放在底部附近。 如果專案新增至大型 Lmhosts 檔案的結尾,請使用 #PRE 選項,將 Lmhosts 中的專案標示為預先載入的專案。 然後,執行 nbtstat -R
命令以立即更新本機名稱快取。
發生系統錯誤 53
如果使用 命令時 net use
,特定計算機名稱的名稱解析失敗,則會傳回系統錯誤 53。
如果計算機位於本機子網上,請確認名稱已正確拼字,且目標計算機也正在執行 TCP/IP。 如果電腦不在本機子網上,請確定其名稱和IP位址對應可在 Lmhosts 檔案或 WINS 資料庫中使用。 如果所有 TCP/IP 元素似乎都已正確安裝,請使用 ping
命令與遠端電腦一起確認其 TCP/IP 軟體是否正常運作。
無法連線到特定伺服器
之所以發生此問題,是因為 NetBIOS 名稱解析無法解析名稱,或是解析錯誤的 IP 位址。
若要針對此問題進行疑難解答,請使用 nbtstat -n
伺服器上的 命令來判斷網路上註冊的伺服器名稱。 您嘗試連線的電腦電腦名稱應該位於顯示的清單中。 如果未列出名稱,請嘗試顯示的其他其中一個唯一計算機名稱 nbtstat
。
如果遠端電腦所使用的名稱與命令所顯示 nbtstat -n
的名稱相同,請確定遠端電腦具有WINS 伺服器或其 Lmhosts 檔案中的伺服器名稱專案。
無法新增預設閘道
之所以發生此問題,是因為預設網關的IP位址不在與IP位址相同的IP網路標識碼上。
若要針對此問題進行疑難解答,請比較預設網關與計算機任何網路適配器的網路標識符,判斷預設網關是否位於與計算機網路適配器相同的邏輯網路上。
例如,計算機具有單一網路適配器,其IP位址為192.168.0.33,子網掩碼為255.255.255.0.0。 這需要預設閘道的格式為 「192.168。<y>.<z>“,因為IP介面的網路標識碼部分是192.168.0.0。
資料收集
在連絡Microsoft支援之前,您可以收集問題的相關信息。
必要條件
- TSS 必須由本機系統上具有系統管理員許可權的帳戶執行,而且必須接受 EULA(一旦接受 EULA,TSS 將不會再次提示)。
- 我們建議本機電腦
RemoteSigned
PowerShell 執行原則。
注意
如果目前的 PowerShell 執行原則不允許執行 TSS,請採取下列動作:
- 執行 Cmdlet
PS C:\> Set-ExecutionPolicy -scope Process -ExecutionPolicy RemoteSigned
來RemoteSigned
設定進程層級的執行原則。 - 若要確認變更是否生效,請執行 Cmdlet
PS C:\> Get-ExecutionPolicy -List
。 - 因為進程層級許可權僅適用於目前的 PowerShell 工作階段,一旦指定的 PowerShell 視窗在 TSS 執行時關閉,進程層級的指派許可權也會回到先前設定的狀態。
在連絡Microsoft支援之前收集重要資訊
在所有節點上下載 TSS ,並將它解壓縮到 C:\tss 資料夾中。
從提升許可權的 PowerShell 命令提示字元開啟 C:\tss 資料夾。
使用下列 Cmdlet 在來源和目的地伺服器上啟動追蹤:
TSS.ps1 -Scenario NET_General
如果追蹤第一次在來源或目的地伺服器上執行,請接受EULA。
允許錄製 (PSR 或視訊)。
輸入 Y 之前重現問題。
注意
如果您在用戶端和伺服器上收集記錄,請在這兩個節點上等候此訊息,再重現問題。
輸入 Y 以在重現問題之後完成記錄收集。
追蹤會儲存在 C:\MS_DATA 資料夾中的 zip 檔案中,以便上傳至工作區進行分析。