在工作中,我經常需要對伺服器執行 ping 操作以檢查它是否處於活動狀態。有時我收到一則訊息,指出無法找到主機(名稱?)或其他導致無回應的錯誤。
有什麼技術可以診斷這些問題的原因?我應該先看看目標機器嗎?或我的機器及其防火牆?如果電腦在不同的網域中進行 ping 操作,這有關係嗎? (我認為只有在需要遵守防火牆設定的情況下才可以)。
謝謝
答案1
ping 失敗意味著:
- ping 請求未到達目標主機
- ping 回應未到達發送請求的主機
發生這些事情的原因有很多,其中大多數原因可以分為物理問題或軟體問題。
偵錯時,我從傳輸路徑的實體元件開始,即網路卡、網路線和中間裝置。
身體檢查
- 網路線連接兩台主機。如果兩台主機未透過電纜直接連接,請確保發送和接收 NIC 連接到正確的路由器和/或交換器端口,因為它們可以配置為以不同方式路由流量
軟體檢查
- 確保每台電腦中的 NIC 都能被作業系統辨識。 [1]
- 確保兩台電腦都有有效的 IP 位址、子網路遮罩、網關和名稱伺服器設定。 [2]
- 確保發送和接收主機具有有效的 MAC 位址(是的,我以前遇到過這個問題)[3]
- 確保發送和接收主機的網關具有正確的 ARP 快取資訊 [4]
- 發送主機有可能擁有接收主機的 ARP 快取條目,反之亦然。如果存在此類條目,請透過驗證 IP 位址對應到正確的 MAC 位址來確保這些條目正確。如果存在不一致,請從 ARP 快取中刪除這些條目
- 驗證 ping 封包(ICMP 回顯請求和 ICMP 回顯回應)沒有被本地軟體防火牆上的過濾器或發送主機和接收主機之間的裝置上運行的過濾器阻止。
- 如果您使用主機名稱來識別接收主機,請嘗試直接使用 IP 位址,因為這將消除名稱解析過程中產生的問題。
排除故障時也應考慮 ping 命令返回的錯誤訊息,我常見的錯誤訊息包括:
Request Timed Out
這是一條非常通用的訊息,表示在逾時期限內未收到回應。發生這種情況的原因可能是主機由於工作負載和時間限製而無法回應,或者由於上面討論的連線或路由問題。
Reply from {host}: Destination network unreachable
通常{host}
是本機電腦上的 NIC,或電腦網關。該訊息意味著它無法找到{host}
接收主機之間的路由(我在這裡可能是錯的)
這絕不是 ping 失敗原因的詳盡列表,但它確實涵蓋了許多常見問題。我希望它可以在下次網路中斷時幫助別人
以下的腳註適用於基於 Windows NT 的系統,因為這是我的經驗,
[1] 您可以透過檢查裝置管理員中未知裝置節點下是否存在任何網路控制器項目來驗證作業系統是否具有適用於您的網路卡的有效驅動程式。如果有的話,您需要找到適合您的卡的相容驅動程式。
在網路適配器節點下檢查您的卡,假設您的卡已列出,雙擊它並檢查設備狀態下列出的任何已知錯誤
[2] 在Vista / Win 7 上,可以透過開啟網路和共用中心e -> 變更適配器設定(左側窗格) -> 右鍵單擊您感興趣的適配器並選擇屬性(需要提升)來存取TCP/IP 設定對話方塊然後雙擊 TCP/IP 協定版本 4 或 6,取決於您使用的協定(最有可能是 v4)
[3] 執行此ipconfig /all
指令將顯示 MAC 位址以及 IP 位址、子網路遮罩、閘道和名稱伺服器。 MAC 位址在輸出中標記為實體位址
[4] 此ARP -a
指令顯示主機目前的 ARP 表。
答案2
只是添加到之前的內容中回答:
找不到主機名稱:這表示是 DNS 問題而不是路由問題,因此您需要檢查您的 DNS 伺服器,以及它與您進行 ping 操作的裝置的關係。
若要追蹤 ping 的進度,請嘗試使用 Tracert 而不是 ping 來查看路由失敗之前到達的裝置(這僅適用於其他裝置與啟動裝置不在相同子網路中的情況)。
答案3
如果您有時會收到 ping,但其他時候則不會,並且無法證明/捕獲它...以下是一些有助於識別網路問題的工具:
視窗: http://www.pingplotter.com/freeware.html 尋路
Linux: http://en.wikipedia.org/wiki/MTR_%28software%29
這些工具可能會幫助您確定第 5 個躍點是發生問題的地方,然後您可以僅針對該躍點進行故障排除。
有時,您需要跨網路查找哪個裝置導致響應緩慢,但您似乎無法在單次 ping 過程中找到它。這些工具透過保留「分數」並向您顯示圖表來幫助透過一系列 ping 來識別它。
請注意,有時 ping 的優先順序也較低,因此 ping 慢並不總是意味著網路不好。
除了上面出色而徹底的答案之外,請驗證 NIC 是否使用正確的連結速度:
在 Windows 中,您可以在網路屬性中檢視 GUI,而在 Linux 中,您可以使用「ethtool」。如果路由器/交換器任一側的主機設定為 10MBs 和半雙工,但路由器/交換器設定為 100MBs 全雙工,則會出現奇怪的錯誤(例如)。這在新設定中比已建立的系統更常見。
您可以使用 netstat 查看其中一些錯誤:
網路統計-S
或者透過不斷監控它,如果你是一個超級書呆子:
for /L %i in (0,0,0) do @cls && netstat -S|find /I "Error" && @ping -n 1 -w 2000 224.0.0.0 >NUL && @cls
如果發生錯誤,那沒什麼大不了的,但是如果每秒出現越來越多的錯誤,則可能是硬體/佈線/速度/雙工問題。
答案4
如果 ping 不起作用,我會執行以下操作:
- 檢查名稱是否解析為正確的 IP——通常不是伺服器的問題,而是同事的筆記型電腦等的問題。
- 如果我確定 IP 正確,我會使用 Tracert 來檢查我到達了多遠。
- 如果我不確定我嘗試 ping 的伺服器是否對 ICMP 訊息做出反應,我會使用 telnet 打開伺服器上的端口,看看它告訴我什麼。
- 我檢查同事是否可以從他的電腦存取伺服器