
連結:https://www.cnblogs.com/blknemo/p/14953147.html

【計算機網路】網路排錯思路總結⟳
明人不說暗話,這篇文章我們來聊一個非常有用,同時也是程式設計師必備的技能,那就是網路排錯思路大總結。
有了這個技能,如果以後發生領導、妹子電腦上不了網的情況,你上去就是一頓操作,穩穩的~~
**注意:**一般一臺電腦有多個網絡卡。
• 一個是PCI網絡卡是用於插網線的, • 另一個是WireLess無線網絡卡適用於連WIFI的; • 如果我們安裝了虛擬機器,還會有多個虛擬網絡卡。
網路排錯的必備條件⟳
為什麼要先講必備條件?因為這裡所講的網路排錯並不僅僅是停留在某一個小小命令的使用上,而是一套系統的方法,如果沒有這些條件,真的不能保證下面聊的這些可以聽得懂,並且能運用到實際當中,所以還是先看看這些基礎的條件吧。
1.1 熟悉OSI七層模型與TCP/IP協議棧⟳
這應該是網路排錯要知道的最基本的知識了。
無論是OSI七層模型還是DoD模型,都是用來描述網路通訊的一個過程,以讓我們對網路資料的傳送和接收有一個大致的認識。OSI七層模型對應OSI七層模型的協議,DoD模型對應DoD模型的協議,也就是TCP/IP協議棧。
TCP/IP協議棧裡面的協議就顯得十分重要了,比如DNS、TCP、UDP、IP、ICMP、ARP,這些最基本的應該得知道吧,我們不需要像《TCP/IP協議棧》中說得的那麼細,但至少,對於這些協議的基本功能我們是必須得要知道的,這些就不是一兩句可以說清楚的了,計網裡也都學了~
1.2 瞭解網路通訊的基礎裝置和其對應的OSI層次⟳
像交換機、三層交換機、路由器、防火牆這些最基本的網路裝置應該要有些瞭解,尤其是它們對應的OSI層次以及作用,比如普通的二層交換機對應OSI七層模型中的資料鏈路層,它可以隔絕衝突域,同時可以透過虛擬區域網技術(VLAN)來隔絕廣播域,二層交換機透過二層地址即MAC地址來實現資料幀的轉發;再比如路由器,它對應網路層,可以提供路由定址的功能等等。
1.3 瞭解中小型企業網路的基本架構⟳
一般中小型企業網路的基本架構都是這樣的:接入層–匯聚層–核心層–網路出口。
下面給個圖:

如果網路環境比較龐大,匯聚層和核心層都會有,像這裡的話,就直接沒有匯聚層,不過思想是一樣的。下面講的排錯其實都是針對使用者PC來說明的,事實上,資料中心中的網路排錯也是類似的。不管網路環境多麼複雜,其實簡化下來跟這個都是差不多的。
1.4 知道常用的網路排錯命令⟳
如果使用者使用的是Windows作業系統,那麼下面的這些命令就很重要了:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
如果使用的是Linux作業系統,那麼也有對應的相關命令。
關於Linux命令,可檢視“網路通訊”相關內容
其實說到底就是要熟悉你所使用的裝置,當然,在實際網路排錯的過程中,如果只是為了測試網路通訊是否正常,你可以換上你熟悉的裝置操作。
1.5 清楚知道網路排錯的一個重要原則⟳
網路排錯,不就是要判斷網路哪裡出了問題,因此,你就必須要知道資料的走向。
所以一個重要原則是:關注資料的走向。
下面講的網路排錯思路其實就是透過追蹤資料的走向來一步步縮小網路故障點的,因此,時刻記住這一點非常非常重要!這也是為什麼上面需要讓你瞭解中小型企業網路的基本架構了。
網路排錯的基本思路⟳
基本思路如下,這跟網上的大多數人寫的應該是差不多的。
-
1. (1)檢查物理鏈路是否有問題 -
2. (2)檢視本機IP地址、路由、DNS的設定是否有問題 -
3. (3)測試閘道器或路由器的通暢情況。先測閘道器然後再測路由器,一級一級地測試 -
4. (4)測試ping公網ip的通暢情況(平時要記幾個外部IP) -
5. (5)測試DNS的通暢情況,可以直接ping網站地址
網路排錯的具體步驟⟳
為了更好的講述網路排錯的過程和思路,假設我們有下面的一個網路環境:
(說明:雖然是假設,但實際上該網路環境是透過GNS3聯動虛擬機器和真實網路架設起來的,所以是可以真實參考的)

下面,我們就以上面這個網路環境為例子,詳細介紹我們的網路排錯思路,每一步要怎麼做,每一步為什麼要這樣做以及這樣做之後我們可以得到什麼資訊,都會做一個說明。
3.1 檢查物理鏈路是否有問題⟳
這一步是我個人認為在做網路排錯時必須要做的第一步!經常會聽朋友說,領導的電腦上不了網,需要過去排錯,搞了老半天,還發現不了問題,最後在幾經絕望之時,竟然發現網線都沒接上電腦。這就真的是悲劇了,浪費了很多時間不說,這樣的網路排錯思路本來就是有錯誤的。
因為也許不是每個人都可以去機房檢視交換機的接線情況,所以這一步,我們排查的重點範圍就應該放在如下面圖所示的地方:

在這一步,下面幾點是需要注意排查的:
-
• 確認電腦本身的網絡卡有沒有問題 -
• 確認接的網線有沒有問題 -
• 本機所連線的交換機(如果可以去機房檢視的話)
如果上面這幾點排查都沒有問題了,那麼就是該網路環境中的其他裝置問題了。這一範圍的排查相對比較簡單,因為只涉及到物理鏈路的連線問題。
對於這種測試,可以考慮使用測線器,但個人的建議是,拿一臺配置正確的筆記本來做測試也未嘗不可。
3.2 檢視本機IP地址、路由、DNS的設定是否有問題⟳
上面第一步,物理鏈路的排查沒有問題了,也就是說,電腦接上網線之後,電腦有反應了,可以識別,但是網路還是不通,來到這一步,就應該先把注意的範圍放在電腦的設定上面了。
這一步,我們關注的重點是:
1.IP地址設定⟳
如果採用的是DHCP自動獲取的方法,那麼這時候只需要看自己本機的設定上有沒有開啟自動獲取IP的設定以及有沒有開啟相關的服務;
如果用的是靜態IP,那麼就必須要注意IP地址的填寫有沒有錯(一般網路管理人員給的)、IP地址的子網掩碼有沒有問題(這很重要,對於靜態IP,很多人在這裡設定錯誤,建議是,最好把IP地址、VLSM這方面的知識學一下)。
一般可以用下面的命令檢視:

2.路由設定⟳
對於伺服器、PC,一般是指預設閘道器的設定了;對於路由器本身或三層交換機,那就是靜態路由或動態路由的設定問題了。
3.DNS設定⟳
主要是要確保所設定的DNS伺服器地址到底有沒有提供域名解析服務或者是否出現了故障,至於如何判斷,後面會給出方法,這裡關注的是,你得設定一個正確的DNS伺服器地址或可以自動獲取。在windows上面你可以透過下面的命令檢視:

3.3 測試閘道器或路由器的通暢情況。先測閘道器然後再測路由器,一級一級地測試⟳
在上面的網路環境中,在網路通的情況下,我們在電腦上使用命令tracert -d命令,會得到下面的結果:

透過這個測試結果,我們可以清楚地知道電腦在訪問網際網路時,資料的走向情況:

根據這個資料走向,我們就可以得到一個重要的思路,就是根據資料走向來檢測網路的通暢情況!因此,我們可以分兩步:
1.先測試電腦到閘道器192.168.2.254的通暢情況⟳

我們可以在自己的電腦上自己ping閘道器的地址,看是否有響應

一般這樣的判斷方法是比較快的,但有時候,無論怎樣ping都不能,那麼則可能有以下的幾種情況:
-
• a. 閘道器裝置做了禁止ping的設定 -
• b. 閘道器介面或閘道器裝置出現故障
對於a,一般很少會在這些裝置在做ping的限制操作,實在是沒有太大的必要這樣做,當然,網路安全等要求十分嚴格的除外。ping通192.168.2.254閘道器後,再ping一下172.16.13.1以確認電腦到整個閘道器裝置都沒有問題。
對於ping不通的時候,我個人還建議在電腦上執行如下操作:

即檢視電腦本身有沒有獲取到閘道器的MAC的地址,顯然,如果沒有閘道器的MAC地址,那也是不可能ping通閘道器的,在排除了前面電腦設定的問題後,你可以猜測是閘道器裝置出了問題,這時就可以聯絡網路工程師對閘道器裝置進行測試了。
2.測試到其它路由器的通暢情況⟳
前面一步沒有問題了,也就是電腦到閘道器通訊正常了,再測試閘道器到出口路由器的通暢情況:

這裡,我們使用tracert -d命令就可以了:

當然,如果發現不通,那麼則可能是下面的情況:
-
• a. 閘道器裝置與路由器之間的物理鏈路問題 -
• b. 閘道器裝置與路由器之間的設定問題,比如路由協議、介面配置之類的
出現上面的情況,那就是網路工程師的問題了,當然,如果你是網路工程師,應該要馬上檢視一下裝置的狀態,看是不是裝置哪裡出現問題了。
上面的步驟完成了,假設你的出口路由器設定是沒有問題的,比如NAT與預設路由等的設定,那麼我們大致可以知道,內網的一個基本通訊是正常的(至少你的電腦和出口路由器的通訊沒問題),我們就要看看電腦到底能不能訪問網際網路了。
3.4 測試ping公網ip的通暢情況(平時要記幾個外部IP)⟳
來到這一步的時候,就說明前面三步是沒有問題的,也就是說,本地區域網絡的通訊是正常的,這時要做的就是判斷本地區域網絡與外網(公網)之間的通訊有沒有問題了:

這裡採取的是直接ping公網地址的方法,是為了排除DNS的影響(萬一你的DNS設定又有問題),至於要ping什麼樣的公網地址,個人建議是,可以ping一些沒有禁止ping的公共DNS伺服器地址,比如114.114.114.114和8.8.8.8的:

這樣之後,基本上就可以確定網路是沒有問題的了。當然,這裡並沒有提到出口放置防火牆的情況,實際上,思路是一致的,但是,你需要考慮的是,你的訪問資料有沒有被防火牆給過濾掉,是資料出去的時候過濾了,還是資料回來的時候過濾了?由於還要涉及到防火牆的設定,這裡就不再提及了,只是仍要注意這一點就是了。
3.5 測試DNS的通暢情況,可以直接ping網站地址⟳
如題,可以直接ping網站地址,看有沒有回顯IP地址,至於通不通是另外一回事,只要可以回顯IP地址,那麼DNS就沒有問題了,不過這裡仍然要說一下nslookup這個命令,這是一個方法:

當然也可以像下面這樣使用:

使用nslookup命令,作用有二:
-
1. 幫你測試你設定的DNS伺服器有沒有問題 -
2. 在不考慮DNS伺服器是否智慧的前提下,你可以根據回顯IP地址速度的快慢來大致判斷DNS伺服器的優劣情況
所以可以充分利用nslookup命令了。
最後重要說明⟳
其實基本上,一個相對完整的網路排錯過程就應該如上面所說的了,不過,是基本上的,因為上面的講解,都幾乎是假定你是沒有許可權進入機房檢視網路裝置的情況的。
事實上,你是根本不需要照搬來進行上面的全部步驟的,在實際排錯的過程中,可能你用到的只是其中的一小部分而已,畢竟,如果每次都這樣下來,沒有誰是不會瘋掉的,因為一些很簡單的問題也要這樣折騰,那就是太浪費時間了!但是,上面的方法,只是提出一種網路排錯的思路,希望按照這個思路可以判斷出網路的問題出現在哪裡,至於如何去解決,這中間真的又涉及到太多太多的經驗問題。
其實整個下來,個人覺得,最重要的仍然不是技術本身,而是在網路排錯過程當中的一個思路,思路決定出路,這可以讓自己在網路排錯的過程中時刻保持清醒的頭腦,這一點很重要。
請你務必,一而再,再而三,三而不竭,千次萬次,毫不猶豫地救自己於這世間水火。
官方站點:www.linuxprobe.com
Linux命令大全:www.linuxcool.com

劉遄老師QQ:5604215
Linux技術交流群:2636170
(新群,火熱加群中……)
想要學習Linux系統的讀者可以點選"閱讀原文"按鈕來了解書籍《Linux就該這麼學》,同時也非常適合專業的運維人員閱讀,成為輔助您工作的高價值工具書!