運(yùn)維工程師必備技能:網(wǎng)絡(luò)排錯(cuò)思路講解
首先,真心希望本文可以給需要進(jìn)行網(wǎng)絡(luò)排錯(cuò)的朋友帶來(lái)實(shí)際性的幫助, 也希望可以耐心看下去。
網(wǎng)絡(luò)排錯(cuò)對(duì)于網(wǎng)絡(luò)工程師或運(yùn)維人員甚至對(duì)很多人(搞IT的朋友們)都十分重要,因此知道網(wǎng)絡(luò)排錯(cuò)的一個(gè)詳細(xì)流程以及流程中每一步的原理就顯得非常重要了,當(dāng)網(wǎng)絡(luò)出現(xiàn)問(wèn)題時(shí),我們就可以迅速排查出網(wǎng)絡(luò)問(wèn)題所在,從而快速解決網(wǎng)絡(luò)問(wèn)題。
這 里要說(shuō)的網(wǎng)絡(luò)排錯(cuò),應(yīng)該是適合大部分對(duì)網(wǎng)絡(luò)有一定了解的人員的,其實(shí)關(guān)于網(wǎng)絡(luò)排錯(cuò)的方法,網(wǎng)絡(luò)上已經(jīng)有大部分的資料,但我個(gè)人覺(jué)得太多都只是停留在文字層 面上的,對(duì)其中涉及的一些基本原理并沒(méi)有提及,因此實(shí)用性并不大,這里希望寫(xiě)出一篇圖文并茂并有一定技術(shù)性的網(wǎng)絡(luò)排錯(cuò)文章給大家,讓大家真正掌握一套系統(tǒng) 的網(wǎng)絡(luò)排錯(cuò)方法。
本文的一個(gè)思路:
- 一、網(wǎng)絡(luò)排錯(cuò)的必備條件
- 二、網(wǎng)絡(luò)排錯(cuò)的基本思路
- 三、網(wǎng)絡(luò)排錯(cuò)詳細(xì)步驟
- 四、***重要說(shuō)明
一、網(wǎng)絡(luò)排錯(cuò)的必備條件
為什么還要必備條件?因?yàn)檫@里所講的網(wǎng)絡(luò)排錯(cuò)并不僅僅是停留在某一個(gè)小小命令的使用上,而是一套系統(tǒng)的方法,如果沒(méi)有這些條件,我真的不能保證下面講的這些你可以聽(tīng)得懂,并且能運(yùn)用到實(shí)際當(dāng)中,所以還是先看看這些基礎(chǔ)的條件吧。
1.熟悉OSI七層模型與TCP/IP協(xié)議棧
這應(yīng)該是網(wǎng)絡(luò)排錯(cuò)要知道的最基本的知識(shí)了。
無(wú)論是OSI七層模型還是DoD模型,都是用來(lái)描述網(wǎng)絡(luò)通信的一個(gè)過(guò)程,以讓我們對(duì)網(wǎng)絡(luò)數(shù)據(jù)的發(fā)送和接收有一個(gè)大致的過(guò)程。OSI七層模型對(duì)應(yīng)OSI七層模型的協(xié)議,DoD模型對(duì)應(yīng)DoD模型的協(xié)議,也就是TCP/IP協(xié)議棧。
TCP/IP 協(xié)議棧里面的協(xié)議就顯得十分重要了,比如DNS、TCP、UDP、IP、ICMP、ARP,這些最基本的應(yīng)該得知道吧,我們不需要有像《TCP/IP協(xié)議 棧》中說(shuō)得的那么細(xì),但至少,對(duì)于這些協(xié)議的基本功能我們是必須得要知道的,我想這些就不是我一兩名可以說(shuō)清楚的了,還是那句話(huà),自己百度一下吧。
2.了解網(wǎng)絡(luò)通信的基礎(chǔ)設(shè)備和其對(duì)應(yīng)的OSI層次
像 交換機(jī)、三層交換機(jī)、路由器、防火墻這些最基本的網(wǎng)絡(luò)設(shè)備應(yīng)該要有些了解,尤其是它們對(duì)應(yīng)的OSI層次以及作用,比如普通的二層交換機(jī)對(duì)應(yīng)OSI七層模型 中的數(shù)據(jù)鏈路層,它可以隔絕沖突域,同時(shí)可能通過(guò)虛擬局域網(wǎng)技術(shù)(VLAN)來(lái)隔絕廣播域,二層交換機(jī)通過(guò)二層地址即MAC地址來(lái)實(shí)現(xiàn)數(shù)據(jù)幀的轉(zhuǎn)發(fā);再比 如路由器,它對(duì)應(yīng)網(wǎng)絡(luò)層,可以提供路由尋址的功能等等。
也許并不需要了解得那么細(xì),但大概的一個(gè)過(guò)程我想還是應(yīng)該要知道的。
3.了解中小型企業(yè)網(wǎng)絡(luò)的基本架構(gòu)
其實(shí)就是要知道上面所說(shuō)的那些網(wǎng)絡(luò)設(shè)備一般是怎么連接起來(lái)的,如果在實(shí)際環(huán)境中排錯(cuò),應(yīng)該就要知道當(dāng)前網(wǎng)絡(luò)的一個(gè)基本架構(gòu)情況。
這里簡(jiǎn)單提一下,一般中小型企業(yè)網(wǎng)絡(luò)的基本架構(gòu)都是這樣的:接入層--匯聚層--核心層--網(wǎng)絡(luò)出口。
下面給個(gè)圖:

如果網(wǎng)絡(luò)環(huán)境比較龐大,匯聚層和核心層都會(huì)有,像這里的話(huà),就直接沒(méi)有匯聚層,不過(guò)思想是一樣的。下面講的排錯(cuò)其實(shí)都是針對(duì)用戶(hù)PC來(lái)說(shuō)明的,事實(shí)上,數(shù)據(jù)中心中的網(wǎng)絡(luò)排錯(cuò)也是類(lèi)似的。不管網(wǎng)絡(luò)環(huán)境多么復(fù)雜,其實(shí)簡(jiǎn)化下來(lái)跟這個(gè)都是差不多的。
4.知道常用的網(wǎng)絡(luò)排錯(cuò)命令
如果用戶(hù)使用的是Windows操作系統(tǒng),那么下面的這些命令就很重要了:
如果使用的是Linux操作系統(tǒng),那么也有對(duì)應(yīng)的相關(guān)命令。其實(shí)說(shuō)到底就是要熟悉你所使用的設(shè)備,當(dāng)然,在實(shí)際網(wǎng)絡(luò)排錯(cuò)的過(guò)程中,如果只是為了測(cè)試網(wǎng)絡(luò)通信是否正常,你可以把你自己熟悉的設(shè)備換上操作。
5.清楚知道網(wǎng)絡(luò)排錯(cuò)的一個(gè)重要原則
網(wǎng)絡(luò)排錯(cuò),不就是要判斷網(wǎng)絡(luò)哪里出了問(wèn)題,因此,你就必須要知道數(shù)據(jù)的走向。
所以這個(gè)重要的原則是:關(guān)注數(shù)據(jù)的走向。
下面講的網(wǎng)絡(luò)排錯(cuò)思路其實(shí)就是通過(guò)追蹤數(shù)據(jù)的走向來(lái)一步步縮小網(wǎng)絡(luò)故障點(diǎn)的,因此,時(shí)刻記住這一點(diǎn)非常非常重要!這也是為什么上面需要讓你了解中小型企業(yè)網(wǎng)絡(luò)的基本架構(gòu)了。
二、網(wǎng)絡(luò)排錯(cuò)的基本思路
基本思路如下,這跟網(wǎng)上的大多數(shù)人寫(xiě)的應(yīng)該是差不多的。
(1)檢查物理鏈路是否有問(wèn)題
(2)查看本機(jī)IP地址、路由、DNS的設(shè)置是否有問(wèn)題
(3)測(cè)試網(wǎng)關(guān)或路由器的通暢情況。先測(cè)網(wǎng)關(guān)然后再測(cè)路由器,一級(jí)一級(jí)地測(cè)試
(4)測(cè)試ping公網(wǎng)ip的通暢情況(平時(shí)要記幾個(gè)外部IP)
(5)測(cè)試DNS的通暢情況,可以直接ping網(wǎng)站地址
下面的第三部分,就針對(duì)上面的基本思路來(lái)進(jìn)行詳細(xì)的說(shuō)明。
三、網(wǎng)絡(luò)排錯(cuò)詳細(xì)步驟
為了更好的講述網(wǎng)絡(luò)排錯(cuò)的過(guò)程和思路,假設(shè)我們有下面的一個(gè)網(wǎng)絡(luò)環(huán)境:
(說(shuō)明:雖然是假設(shè),但實(shí)際上該網(wǎng)絡(luò)環(huán)境是博主通過(guò)GNS3聯(lián)動(dòng)虛擬機(jī)和真實(shí)網(wǎng)絡(luò)架設(shè)起來(lái)的,所以是可以真實(shí)參考的)

下面,我們就以上面這個(gè)網(wǎng)絡(luò)環(huán)境為例子,詳細(xì)介紹我們的網(wǎng)絡(luò)排錯(cuò)思路,每一步要怎么做,每一步為什么要這樣做以及這樣做之后我們可以得到什么信息,都會(huì)做一個(gè)說(shuō)明。
(1)檢查物理鏈路是否有問(wèn)題
這一步是我個(gè)人認(rèn)為在做網(wǎng)絡(luò)排錯(cuò)時(shí)必須要做的***步!經(jīng)常會(huì)聽(tīng)朋友說(shuō),領(lǐng)導(dǎo)的電腦上不了網(wǎng),需要過(guò)去排錯(cuò),搞了老半天,還發(fā)現(xiàn)不了問(wèn)題,***在幾經(jīng)絕望之時(shí),竟然發(fā)現(xiàn)網(wǎng)線都沒(méi)接上電腦。這就真的是悲劇了,浪費(fèi)了很多時(shí)間不說(shuō),這樣的網(wǎng)絡(luò)排錯(cuò)思路本來(lái)就是有錯(cuò)誤的。
因?yàn)橐苍S不是每個(gè)人都可以去機(jī)房查看交換機(jī)的接線情況,所以這一步,我們排查的重點(diǎn)范圍就應(yīng)該放在如下面圖所示的地方:

在這一步,下面幾點(diǎn)是需要注意排查的:
1.確認(rèn)電腦本身的網(wǎng)卡有沒(méi)有問(wèn)題
2.確認(rèn)接的網(wǎng)線有沒(méi)有問(wèn)題
3.本機(jī)所連接的交換機(jī)(如果可以去機(jī)房查看的話(huà))
如果上面這幾點(diǎn)排查都沒(méi)有問(wèn)題了,那么就是該網(wǎng)絡(luò)環(huán)境中的其他設(shè)備問(wèn)題了。這一范圍的排查相對(duì)比較簡(jiǎn)單,因?yàn)橹簧婕暗轿锢礞溌返倪B接問(wèn)題。
對(duì)于這種測(cè)試,可以考慮使用測(cè)線器,但個(gè)人的建議是,拿一臺(tái)配置正確的筆記本來(lái)做測(cè)試也未嘗不可。
(2)查看本機(jī)IP地址、路由、DNS的設(shè)置是否有問(wèn)題
上面***步,物理鏈路的排查沒(méi)有問(wèn)題了,也就是說(shuō),電腦接上網(wǎng)線之后,電腦有有反應(yīng)了,可以識(shí)別,但是網(wǎng)絡(luò)還是不通,來(lái)到這一步,就應(yīng)該先把注意的范圍放在電腦的設(shè)置上面了。
這上步,我們關(guān)注的重點(diǎn)是:
1.IP地址設(shè)置
如果采用的是DHCP自動(dòng)獲取的方法,那么這時(shí)候只需要看自己本機(jī)的設(shè)置上有沒(méi)有開(kāi)啟自動(dòng)獲取IP的設(shè)置以及有沒(méi)有開(kāi)啟相關(guān)的服務(wù);
如果用的是靜態(tài)IP,那么就必須要注意IP地址的填寫(xiě)有沒(méi)有錯(cuò)(一般網(wǎng)絡(luò)管理人員給的)、IP地址的子網(wǎng)掩碼有沒(méi)有問(wèn)題(這很重要,對(duì)于靜態(tài)IP,很多人在這里設(shè)置錯(cuò)誤,建議是,***把IP地址、VLSM這方面的知識(shí)學(xué)一下)。
一般可以用下面的命令查看:
相關(guān)的設(shè)置可以在自己的計(jì)算機(jī)環(huán)境上面查看了。
2.路由設(shè)置
對(duì)于服務(wù)器、PC,一般是指默認(rèn)網(wǎng)關(guān)的設(shè)置了;對(duì)于路由器本身或三層交換機(jī),那就是靜態(tài)路由或動(dòng)態(tài)路由的設(shè)置問(wèn)題了。
3.DNS設(shè)置
主要是要確保所設(shè)置的DNS服務(wù)器地址到底有沒(méi)有提供域名解析服務(wù)或者是否出現(xiàn)了故障,至于如何判斷,后面會(huì)給出方法,這里關(guān)注的是,你得設(shè)置一個(gè)正確的DNS服務(wù)器地址或可以自動(dòng)獲取。在windows上面你可以通過(guò)下面的命令查看:
(3)測(cè)試網(wǎng)關(guān)或路由器的通暢情況。先測(cè)網(wǎng)關(guān)然后再測(cè)路由器,一級(jí)一級(jí)地測(cè)試
在上面的網(wǎng)絡(luò)環(huán)境中,在網(wǎng)絡(luò)通的情況下,我們?cè)陔娔X上使用命令tracert -d命令,會(huì)得到下面的結(jié)果:
通過(guò)這個(gè)測(cè)試結(jié)果,我們可以清楚地知道電腦在訪問(wèn)互聯(lián)網(wǎng)時(shí),數(shù)據(jù)的走向情況:

根據(jù)這個(gè)數(shù)據(jù)走向,我們就可以得到一個(gè)重要的思路,就是根據(jù)數(shù)據(jù)走向來(lái)檢測(cè)網(wǎng)絡(luò)的通暢情況!因此,我們可以分兩步:
1.先測(cè)試電腦到網(wǎng)關(guān)192.168.2.254的通暢情況

我們可以在自己的電腦上自己ping網(wǎng)關(guān)的地址,看是否有響應(yīng):
一般這樣的判斷方法是比較快的,但有時(shí)候,無(wú)論怎樣ping都不能,那么則可能有以下的幾種情況:
a.網(wǎng)關(guān)設(shè)備做了禁止ping的設(shè)置
b.網(wǎng)關(guān)接口或網(wǎng)關(guān)設(shè)備出現(xiàn)故障
對(duì)于a,一般很少會(huì)在這些設(shè)備在做ping的限制操作,因?yàn)槟壳昂芫W(wǎng)絡(luò)設(shè)備如路由器或交換機(jī)的監(jiān)控,都是通過(guò)ping操作來(lái)完成的。ping通192.168.2.254網(wǎng)關(guān)后,再ping一下172.16.13.1以確認(rèn)電腦到整個(gè)網(wǎng)關(guān)設(shè)備都沒(méi)有問(wèn)題。
對(duì)于ping不通的時(shí)候,我個(gè)人還建議在電腦上執(zhí)行如下操作:
即查看電腦本身有沒(méi)有獲取到網(wǎng)關(guān)的MAC的地址,顯然,如果沒(méi)有網(wǎng)關(guān)的MAC地址,那也是不可能ping通網(wǎng)關(guān)的,在排除了前面電腦設(shè)置的問(wèn)題后,你可以猜測(cè)是網(wǎng)關(guān)設(shè)備出了問(wèn)題,這時(shí)就可以聯(lián)系網(wǎng)絡(luò)工程師對(duì)網(wǎng)關(guān)設(shè)備進(jìn)行測(cè)試了。
2.測(cè)試到其它路由器的通暢情況
前面一步?jīng)]有問(wèn)題了,也就是電腦到網(wǎng)關(guān)通信正常了,再測(cè)試網(wǎng)關(guān)到出口路由器的通暢情況:

這里,我們使用tracert -d命令就可以了:
當(dāng)然,如果發(fā)現(xiàn)不通,那么則可能是下面的情況:
a.網(wǎng)關(guān)設(shè)備與路由器之間的物理鏈路問(wèn)題
b.網(wǎng)關(guān)設(shè)備與路由器之間的設(shè)置問(wèn)題,比如路由協(xié)議、接口配置之類(lèi)的
出現(xiàn)上面的情況,那就是網(wǎng)絡(luò)工程師的問(wèn)題了,當(dāng)然,如果你是網(wǎng)絡(luò)工程師,應(yīng)該要馬上查看一下設(shè)備的狀態(tài),看是不是設(shè)備哪里出現(xiàn)問(wèn)題了。
上面的步驟完成了,假設(shè)你的出口路由器設(shè)置是沒(méi)有問(wèn)題的,比如NAT與默認(rèn)路由等的設(shè)置,那么我們大致可以知道,內(nèi)網(wǎng)的一個(gè)基本通信是正常的(至少你的電腦和出口路由器的通信沒(méi)問(wèn)題),我們就要看看電腦到底能不能訪問(wèn)互聯(lián)網(wǎng)了。
(4)測(cè)試ping公網(wǎng)ip的通暢情況(平時(shí)要記幾個(gè)外部IP)
來(lái)到這一步的時(shí)候,就說(shuō)明前面三步是沒(méi)有問(wèn)題的,也就是說(shuō),本地局域網(wǎng)絡(luò)的通信是正常的,這時(shí)要做的就是判斷本地局域網(wǎng)絡(luò)與外網(wǎng)(公網(wǎng))之間的通信有沒(méi)有問(wèn)題了:

這里采取的是直接ping公網(wǎng)地址的方法,是為了排除DNS的影響(萬(wàn)一你的DNS設(shè)置又有問(wèn)題),至于要ping什么樣的公網(wǎng)地址,個(gè)人建議是,可以ping一些沒(méi)有禁止ping的公共DNS服務(wù)器地址,比如114.114.114.114和8.8.8.8的:
這 樣之后,基本上就可以確定網(wǎng)絡(luò)是沒(méi)有問(wèn)題的了。當(dāng)然,這里并沒(méi)有提到出口放置防火墻的情況,實(shí)際上,思路是一致的,但是,你需要考慮的是,你的訪問(wèn)數(shù)據(jù)有 沒(méi)有被防火墻給過(guò)濾掉,是數(shù)據(jù)出去的時(shí)候過(guò)濾了,還是數(shù)據(jù)回來(lái)的時(shí)候過(guò)濾了?由于還要涉及到防火墻的設(shè)置,這里就不再提及了,只是仍要注意這一點(diǎn)就是了。
當(dāng)然,也不排除是ISP那邊的問(wèn)題了,打電話(huà)去問(wèn)問(wèn)吧。
(5)測(cè)試DNS的通暢情況,可以直接ping網(wǎng)站地址
如題,可以直接ping網(wǎng)站地址,看有沒(méi)有回顯IP地址,至于通不通是另外一回事,只要可以回顯IP地址,那么DNS就沒(méi)有問(wèn)題了,不過(guò)這里仍然要說(shuō)一下nslookup這個(gè)命令,這是一個(gè)非常好用的命令,我平常自己在網(wǎng)絡(luò)排錯(cuò)時(shí),基本上都會(huì)用到:
當(dāng)然也可以像下面這樣使用:
使用nslookup命令,作用有二:
1.幫你測(cè)試你設(shè)置的DNS服務(wù)器有沒(méi)有問(wèn)題
2.在不考慮DNS服務(wù)器是否智能的前提下,你可以根據(jù)回顯IP地址速度的快慢來(lái)大致判斷DNS服務(wù)器的優(yōu)劣情況
所以可以充分利用nslookup命令了。
四、***重要說(shuō)明
其實(shí)基本上,一個(gè)相對(duì)完整的網(wǎng)絡(luò)排錯(cuò)過(guò)程就應(yīng)該如上面所說(shuō)的了,不過(guò),是基本上的,因?yàn)樯厦娴闹v解,都幾乎是假定你是沒(méi)有權(quán)限進(jìn)入機(jī)房查看網(wǎng)絡(luò)設(shè)備的情況的。
事 實(shí)上,你是根本不需要照搬來(lái)進(jìn)行上面的全部步驟的,在實(shí)際排錯(cuò)的過(guò)程中,可能你用到的只是其中的一小部分而已,畢竟,如果每次都這樣下來(lái),沒(méi)有誰(shuí)是不會(huì)瘋 掉的,因?yàn)橐恍┖芎?jiǎn)單的問(wèn)題也要這樣折騰,那就是太浪費(fèi)時(shí)間了!但是,上面的方法,只是提出一種網(wǎng)絡(luò)排錯(cuò)的思路,希望按照這個(gè)思路可以判斷出網(wǎng)絡(luò)的問(wèn)題出 現(xiàn)在哪里,至于如何去解決,這中間真的又涉及到太多太多的經(jīng)驗(yàn)問(wèn)題(其實(shí)遇到問(wèn)題可以百度),
其實(shí)整個(gè)下來(lái),我個(gè)人覺(jué)得,最重要的仍然不是技術(shù)本身,而是在網(wǎng)絡(luò)排錯(cuò)過(guò)程當(dāng)中的一個(gè)思路,思路決定出路,這可以讓自己在網(wǎng)絡(luò)排錯(cuò)的過(guò)程中時(shí)刻保持清醒的頭腦,這一點(diǎn)很重要!
本 人并非是專(zhuān)攻網(wǎng)絡(luò)(曾折騰了一段時(shí)間而已)這一塊的,也就是并非是網(wǎng)絡(luò)工程師(也不可能是啦),只是在實(shí)際過(guò)程當(dāng)中要處理比較多的網(wǎng)絡(luò)故障,這一年多的時(shí) 間下來(lái),也積累了勉強(qiáng)能夠稱(chēng)得上是經(jīng)驗(yàn)的經(jīng)驗(yàn)吧,寫(xiě)此一文,即是自己作為一個(gè)總結(jié),也希望可以幫助到有需要的朋友。