網絡排錯對于網絡工程師或運維人員甚至對很多人(搞IT的朋友們)都十分重要,因此知道網絡排錯的一個詳細流程以及流程中每一步的原理就顯得非常重要了,當網絡出現問題時,我們就可以迅速排查出網絡問題所在,從而快速解決網絡問題。
這里要說的網絡排錯,應該是適合大部分對網絡有一定了解的人員的,其實關于網絡排錯的方法,網絡上已經有大部分的資料,但我個人覺得太多都只是停留在文字層面上的,對其中涉及的一些基本原理并沒有提及,因此實用性并不大,這里希望寫出一篇圖文并茂并有一定技術性的網絡排錯文章給大家,讓大家真正掌握一套系統的網絡排錯方法。
1 網絡排錯的必備條件
為什么要先講必備條件?因為這里所講的網絡排錯并不僅僅是停留在某一個小小命令的使用上,而是一套系統的方法,如果沒有這些條件,真的不能保證下面聊的這些可以聽得懂,并且能運用到實際當中,所以還是先看看這些基礎的條件吧。
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 操作系統,那么也有對應的相關命令。其實說到底就是要熟悉你所使用的設備,當然,在實際網絡排錯的過程中,如果只是為了測試網絡通信是否正常,你可以換上你熟悉的設備操作。
1.5 清楚知道網絡排錯的一個重要原則
網絡排錯,不就是要判斷網絡哪里出了問題,因此,你就必須要知道數據的走向。
所以一個重要原則是:關注數據的走向。
下面講的網絡排錯思路其實就是通過追蹤數據的走向來一步步縮小網絡故障點的,因此,時刻記住這一點非常非常重要!這也是為什么上面需要讓你了解中小型企業網絡的基本架構了。
2 網絡排錯的基本思路
基本思路如下,這跟網上的大多數人寫的應該是差不多的。
(1)檢查物理鏈路是否有問題
(2)查看本機 IP 地址、路由、DNS 的設置是否有問題
(3)測試網關或路由器的通暢情況。先測網關然后再測路由器,一級一級地測試
(4)測試 ping 公網 ip 的通暢情況(平時要記幾個外部 IP)
(5)測試 DNS 的通暢情況,可以直接 ping 網站地址
3 網絡排錯詳細步驟
為了更好的講述網絡排錯的過程和思路,假設我們有下面的一個網絡環境:
(說明:雖然是假設,但實際上該網絡環境是通過 GNS3 聯動虛擬機和真實網絡架設起來的,所以是可以真實參考的)
下面,我們就以上面這個網絡環境為例子,詳細介紹我們的網絡排錯思路,每一步要怎么做,每一步為什么要這樣做以及這樣做之后我們可以得到什么信息,都會做一個說明。
3.1 檢查物理鏈路是否有問題
這一步是我個人認為在做網絡排錯時必須要做的第一步!經常會聽朋友說,領導的電腦上不了網,需要過去排錯,搞了老半天,還發現不了問題,最后在幾經絕望之時,竟然發現網線都沒接上電腦。這就真的是悲劇了,浪費了很多時間不說,這樣的網絡排錯思路本來就是有錯誤的。
因為也許不是每個人都可以去機房查看交換機的接線情況,所以這一步,我們排查的重點范圍就應該放在如下面圖所示的地方:
在這一步,下面幾點是需要注意排查的:
1. 確認電腦本身的網卡有沒有問題
2. 確認接的網線有沒有問題
3. 本機所連接的交換機(如果可以去機房查看的話)
如果上面這幾點排查都沒有問題了,那么就是該網絡環境中的其他設備問題了。這一范圍的排查相對比較簡單,因為只涉及到物理鏈路的連接問題。
對于這種測試,可以考慮使用測線器,但個人的建議是,拿一臺配置正確的筆記本來做測試也未嘗不可。
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 命令了。
4 最后的重要說明
其實基本上,一個相對完整的網絡排錯過程就應該如上面所說的了,不過,是基本上的,因為上面的講解,都幾乎是假定你是沒有權限進入機房查看網絡設備的情況的。
事實上,你是根本不需要照搬來進行上面的全部步驟的,在實際排錯的過程中,可能你用到的只是其中的一小部分而已,畢竟,如果每次都這樣下來,沒有誰是不會瘋掉的,因為一些很簡單的問題也要這樣折騰,那就是太浪費時間了!但是,上面的方法,只是提出一種網絡排錯的思路,希望按照這個思路可以判斷出網絡的問題出現在哪里,至于如何去解決,這中間真的又涉及到太多太多的經驗問題。其實整個下來,個人覺得,最重要的仍然不是技術本身,而是在網絡排錯過程當中的一個思路,思路決定出路,這可以讓自己在網絡排錯的過程中時刻保持清醒的頭腦,這一點很重要。
審核編輯:郭婷
-
交換機
+關注
關注
21文章
2645瀏覽量
99758 -
路由器
+關注
關注
22文章
3733瀏覽量
113947
原文標題:這樣進行網絡故障排錯,肯定能夠幫你老板娘!
文章出處:【微信號:浩道linux,微信公眾號:浩道linux】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論