如何疑難排解黑洞路由器問題

文章翻譯 文章翻譯
文章編號: 314825 - 檢視此文章適用的產品。
如需本文的 Microsoft Windows 2000 版本,請參閱 159211

重要:本文包含有關修改登錄的相關資訊。修改登錄之前,請務必將它備份起來,並瞭解如何在發生問題時還原登錄。如需有關如何備份、還原和編輯登錄的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
256986 Description of the Microsoft Windows Registry
全部展開 | 全部摺疊

在此頁中

結論

本文定義「黑洞」路由器一詞,說明搜尋黑洞路由器的方法,並提供三種能避免因黑洞路由器而發生資料遺失的方法。

其他相關資訊

在 TCP/IP 的廣域網路 (WAN) 中,如果中繼的網路區段封包大小上限,小於通訊主機的封包大小上限,且如果路由器對於此狀態並未傳送適當的「網際網路控制訊息通訊協定」(ICMP) 回應,則經由某些路由的通訊可能會失敗。有時候,這樣的路由器有時被稱為「黑洞」路由器。

您可以使用 Ping 公用程式來搜尋黑洞路由器,Ping 公用程式是一種隨 Microsoft Windows TCP/IP 協定一同安裝的標準公用程式。 您可以接著使用三種修復黑洞路由器或替代解決方案中的任一種。

當網路路由器收到大小大於通訊網路下一個區段的傳輸單元最大值 (MTU) 的封包,且已標幟該封包的 IP 層 "Don't Fragment" 位元時,則預期路由器會將 ICMP「無法與目的地取得連線」訊息傳回主機。

如果路由器並未傳送訊息,則可能會中斷封包,並依經由失敗的連結來通訊的程式而定,會引發各種不同的錯誤 (如果程式連線至本機子網路上的電腦,就不會發生這些錯誤)。 有些行為看似間歇性,但進一步地檢查,例如從用戶端讀取由遠端主機所傳送的大型檔案,則能顯示此問題的可能重複發生。

用戶端錯誤

用戶端無法建立到遠端電腦的連線。引起這個錯誤的可能原因有:
  • 遠端電腦的遠端連線可能沒有啟用。
  • 遠端電腦的連線已經超過最大極限。
  • 建立連線時發生網路錯誤。
    伺服器端錯誤:事件 ID:1004
    來源:TermService
    描述:終端機伺服器無法發行用戶端授權, 因為變更過 (不相符) 的用戶端授權、記憶體不足或內部錯誤。 此問題的詳細資料可能已經在用戶端的電腦中報告了。

搜尋黑洞路由器

您可以在輸入 ping 命令時,設定 -f-l 參數,以使用 Ping 公用程式來搜尋黑洞路由器。
  • -f 參數會引發 Ping 公用程式傳送含有 IP "do not fragment" 位元組的 ICMP 回應封包。
  • -l 參數會設定緩衝區或內容、ICMP 回應封包的大小。您可在 -l 參數後輸入一個數字來指定此大小。
存在於路由中最小的 MTU,減掉 IP 與 ICMP 標頭 (換句話說,就是最小的 MTU 減掉 28),就等於可傳送的最大未分散緩衝區。例如,乙太網路的 MTU 是 1,500 MB,所以在最佳的情況下,Ping 公用程式可以回應未分散的封包 (加上 ICMP 緩衝區) 為 1,472 MB (1,500 減 28)。此例中的 ping 命令語法是:
ping computer_name or IP_address -f -l 1472
至於所有的本機 IP 位址,預期的結果如下:
  • 如果路由連線每一個區段的 MTU 至少有 1,500,就能成功傳回封包。
  • 如果中繼區段的 MTU 較小,且路由器傳回適當的 ICMP「無法與目的地取得連線」封包,則 Ping 公用程式會顯示「封包必須分散但 DF 須設定」訊息。
  • 如果中繼區段的 MTU 較小,且路由器未傳回適當的 ICMP「無法與目的地取得連線」封包,則 Ping 公用程式會顯示「要求逾時」訊息。
在後續的 Ping 中增加 -l 參數,就可以指定未分散的封包要多大,才能經由某個路由傳送。常用的最小 MTU 是 576 位元組,所以您可以放心地從 548 的 ICMP 緩衝區開始,然後從該處工作。例如,如果命令 Ping computer_name or IP_address -f -l 972 傳回封包,但是 Ping computer_name or IP_address -f -l 973 並不會傳回封包,路由中最大的 MTU 是 1,000 (972 加 28)。在下列的「Microsoft 知識庫」文件中,說明一般網路媒體的預設 MTU:
314496 Default MTU Size for Different Network Topology

修復黑洞路由器或替代解決方案

警告:不當使用「登錄編輯程式」可能會導致嚴重的問題,甚至必須重新安裝作業系統。Microsoft 並不保證可以解決您不當使用「登錄編輯程式」所導致的問題。請自行承擔使用「登錄編輯程式」的一切風險。

下列三項是修復黑洞路由器的方法或替代解決方案。

方法 1

啟用 Windows 主機上經由 WAN 連線來通訊的「PMTU 黑洞偵測」。請依照下列步驟執行:
  1. 啟動 [登錄編輯程式] (Regedit.exe)。
  2. 找出登錄中的下列機碼:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcpip\parameters
  3. [編輯] 功能表上,按一下 [新增值],然後新增下列登錄值:
    數值名稱:EnablePMTUBHDetect
    資料類型: REG_DWORD
    數值: 1
  4. 結束 [登錄編輯程式],然後重新啟動電腦。

方法 2

設定中繼路由器來傳送「ICMP 類型 3 密碼 4」訊息 (「無法與目的地取得連線,「勿分散」(DF) 位元已傳送且需要分散」)。 這可能需要將路由器軟體或韌體升級、重新設定路由器,或替換路由器。

方法 3

將主機介面的 MTU 大小設定為黑洞路由器所能處理的最大值,以確保盡可能透過連線傳送最大的封包。 然而,請注意本機流量會接著使用比所需更小的封包,而使用沒有問題的路由連線方式的流量也是如此。

這項替代解決方案,是假設您已識別出 MTU 及主機可能使用的所有連結。在您識別出受支援的最大 MTU 大小後,請手動設定 MTU。請依照下列步驟執行:
  1. 按一下 [開始],再按一下 [控制台]
  2. 按兩下 [網路和網際網路連線],然後按一下以開啟 [網路連線] 資料夾。
  3. 如果列出超過一個的網路連線,則請在每一個連線上按兩下,然後在開啟的 [狀態] 介面上,按一下 [支援] 索引標籤。顯示 [預設閘道] 項目的連線,可能就是用於連線至網際網路的網路連線。請注意連線的名稱 (例如「本機區域連線 2」)。
  4. 啟動 [登錄編輯程式] (Regedit.exe)。
  5. HKEY_LOCAL_MACHINE 樹狀目錄下,移至下列機碼:
    SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\
  6. 在該機碼下是一或多個具有數字識別碼的機碼。每一個機碼都有 [Connection] 子機碼。請檢查類似如下的每一個機碼:
    ID_for_Adapter\Connection
    [Connection] 子機碼中的 [Name] 子機碼提供了用於 [網路連線] 資料夾的網路連線名稱。當您找到符合在步驟 3 中所找到的名稱時,請記錄網路連線名稱所屬的 ID_for_Adapter
  7. 返回 HKEY_LOCAL_MACHINE,然後搜尋下列機碼
    SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\ID_for_Adapter
    其中 ID_for_Adapter 是您在步驟 6 中所記錄的數字。當您反白選取此機碼時,螢幕右側會顯示幾個值,包括 DefaultGatewayEnableDHCP
  8. 用滑鼠右鍵按一下螢幕右方,按一下 [新增],然後按一下 [DWORD 值]。命名 MTU 值。
  9. 按兩下值就可以編輯它,將 [基本] 變更為 [小數點],然後輸入可接受的最大 MTU 大小,也就是您使用 Ping 測試所識別出的大小。
  10. 結束 [登錄編輯程式]。
請注意如果您仍然遭遇某些伺服器上的問題,您可能需要將 MTU 設定為低於 Ping 所測試出的大小,這是由於該特定路徑中有其他的路由器所致。每次重複降低 10 單位的 MTU,直到成功存取那些站台為止。

如需有關手動設定 MTU 的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
314053 Windows XP 的 TCP/IP 及 NBT 設定參數

如需詳細資訊,請參閱<網際網路 RFC 1191 與 RFC 1435>(英文),可從下列的 Internic 網站取得:
http://www.internic.net/

屬性

文章編號: 314825 - 上次校閱: 2005年6月6日 - 版次: 1.1
這篇文章中的資訊適用於:
  • Microsoft Windows XP Home Edition (家用版)
  • Microsoft Windows XP Professional Edition (商用版)
關鍵字:?
kbenv kbinfo kbnetwork KB314825
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com