
我注意到,對於某些路由器/網關,
當我在「內部」電腦中發出追蹤路由或追蹤時,
躍點總是失敗:
請求超時
有人可以澄清這一點嗎?
每跳輸出和輸入哪些資訊?
應該在路由器中配置什麼來解決這個問題?
答案1
這裡至少有兩種可能的情況:
一:如果您位於 NAT(具體來說,標準稱為 NAPT,或者專有的思科術語稱為“PAT”)網關後面,並且沒有任何如果您的追蹤路由中的躍點報告了正確的訊息,則您的 NAT 網關代碼正在錯誤地處理 ICMP「目標無法到達;逾時」訊息。由於「逾時」訊息與任何其他「目標無法到達」訊息相比不需要任何特殊的 NAT 處理,因此您的 NAT 可能不會處理任何ICMP「目標無法到達」訊息正確。對於大多數 NAT 實現,我不認為這是一個配置錯誤;您的 NAT 程式碼庫很可能不包含處理此類訊息的工作程式碼。因此,雖然您可以嘗試查看 NAT 網關的配置 UI 和手冊,看看是否可以啟用某種當前禁用的 ICMP 處理,但我懷疑您不會通過這種方式獲得任何結果,您只需替換將當前的NAT實施替換為更好的實施(這可能需要用更好的路由器替換您的路由器)。
第二:如果某些躍點返回有用的信息,但其他躍點沒有返回,則表示「失敗」躍點的路由器根本不會返回 ICMP「目標無法到達;超時」。這可能是實現錯誤(bug),但更有可能配置為不這樣做(一些系統管理員擔心響應 ping 和追蹤路由會洩露太多有關網路的資訊)。由於您可能不會擁有或不影響 Internet 上其他網路上的其他路由器,因此您無法讓這些路由器傳送允許 Traceroute 工作所需的 ICMP 訊息。
最後一件事:這幾乎是第三種情況,但它更像是第二種情況的特殊情況。如果某些早期躍點有效,但在某個時刻,一躍點和所有後續躍點均失敗,則表示防火牆可能會丟棄所有後續路由器的所有相關 ICMP 訊息。許多公司/機構網路在其網路邊緣都有防火牆,出於(誤導性的,恕我直言)「安全」原因,該防火牆會丟棄多種 ICMP 訊息。