网络排错思路
說到網絡排錯,很多人都會頭疼。
網絡排錯,它并不僅僅是停留在某一個小小命令的使用上,而是要有一個完整的思路和邏輯在,你才可以以不變應萬變。
那么,作為一個網絡工程師,想要擁有一個不錯的網絡排錯能力,首先要具備什么基礎?
? ? ? ?
01
網絡排錯
你必須要get到這些點
01?熟悉OSI與TCP/IP
這應該是網絡排錯必須知道的基本理論。
無論是OSI七層模型還是DoD模型,都是用來描述網絡通信的一個過程,掌握它,能讓你對網絡數據的發送和接收有一個大致的認識。
OSI七層模型對應OSI七層模型的協議,DoD模型對應DoD模型的協議,也就是TCP/IP協議棧。
TCP/IP協議棧里面的協議,比如DNS、TCP、UDP、IP、ICMP、ARP,這些最基本的應該得知道。
不需要事無巨細,但至少對于這些協議的基本功能你是必須得要知道的。
02?掌握網絡通信的基礎設備
基礎設備,就包括交換機、三層交換機、路由器、防火墻這些玩意兒,還沒搞懂,請先出門右拐去百度。
作為網工你不僅要懂,而且你還必須知道它們對應的OSI層次以及作用。
比如:普通的二層交換機對應OSI七層模型中的數據鏈路層,它可以隔絕沖突域。
同時,它可以通過虛擬局域網技術(VLAN)來隔絕廣播域,二層交換機通過二層地址即MAC地址來實現數據幀的轉發。
再比如:路由器對應網絡層,可以提供路由尋址的功能等。
熟悉熟悉再熟悉,你才好提高你的工作效率。
03?了解中小型企業網絡的基本架構
一般中小型企業網絡的基本架構都是這樣的:接入層--匯聚層--核心層--網絡出口。
如果網絡環境比較龐大,匯聚層和核心層都會有,而我們這個張圖,就沒有匯聚層。
但是排錯的底層邏輯都是一樣,別擔心。
本篇文章講到的排錯,其實都是針對用戶PC來說明,數據中心中的網絡排錯也類似。
不管網絡環境多么復雜,其實簡化下來和這個是差不多的。
04?掌握常用的網絡排錯命令
如果用戶使用的是Windows操作系統,圖中涉及到的這些命令就很重要,如果使用的是Linux操作系統,那么也有對應的相關命令。
說到底,你就是得熟悉你所使用的設備。當然,在實際網絡排錯的過程中,如果只是為了測試網絡通信是否正常,你可以換上你熟悉的設備操作。
05?網絡排錯原則:關注數據的走向
網絡排錯,不就是要判斷網絡哪里出了問題,因此,你就必須要知道數據的走向。
我講的網絡排錯思路,其實就是通過追蹤數據的走向來一步步縮小網絡故障點的。
所以,這也是為什么我需要讓你了解中小型企業網絡基本架構的原因。
02
網絡排錯
得有細節化的思路
其實網上這樣的思路很多,而且大致都是對的,自己想不出來,完全可以多看看別人的精華:
-
檢查物理鏈路是否有問題
-
查看本機IP地址、路由、DNS的設置是否有問題
-
測試網關或路由器的通暢情況。先測網關然后再測路由器,一級一級地測試
-
測試ping公網ip的通暢情況(平時要記幾個外部IP)
-
測試DNS的通暢情況,可以直接ping網站地址
03
網絡怎么排錯?
手把手教你
為了更好的講述網絡排錯的過程和思路,假設我們有下圖這樣的一個網絡環境。
雖然是假設,但實際上該網絡環境是通過GNS3聯動虛擬機和真實網絡架設起來的,所以是可以真實參考的。
接下來的內容,我以上面這個網絡環境為例子,詳細帶你過一遍網絡排錯思路:
每一步要怎么做?
每一步為什么要這樣做?
這樣做之后我們可以得到什么信息?
希望你能好好深入去思考這幾個問題的意義,并嘗試套用在工作中。
01?檢查物理鏈路
這一步,是在做網絡排錯時必須要做的第一步。
經常會聽朋友說,領導的電腦上不了網,需要過去排錯,搞了老半天,還發現不了問題,最后在幾經絕望之時,竟然發現網線都沒接上電腦……這就真的是悲劇了。
浪費了很多時間不說,這樣的網絡排錯思路本來就是有錯誤的。
在這一步,你首先要有一個大致的檢查方向:
-
確認電腦本身的網卡有沒有問題
-
確認接的網線有沒有問題
-
本機所連接的交換機(如果可以去機房查看的話)
如果上面這幾點排查都沒有問題了,那么就是該網絡環境中的其他設備問題了。這一范圍的排查相對比較簡單,因為只涉及到物理鏈路的連接問題。
對于這種測試,可以考慮使用測線器,但個人的建議是,拿一臺配置正確的筆記本來做測試也未嘗不可。
02?檢查本機IP地址/路由/DNS的設置
上面第一步,物理鏈路的排查沒有問題了,也就是說,電腦接上網線之后,電腦有反應了,可以識別,但是網絡還是不通,來到這一步,就應該先把注意的范圍放在電腦的設置上面了。
這一步,你要關注的重點是:
(1)IP地址設置
如果采用的是DHCP自動獲取的方法,那么這時候只需要看自己本機的設置上有沒有開啟自動獲取IP的設置以及有沒有開啟相關的服務;
如果用的是靜態IP,那么就必須要注意IP地址的填寫有沒有錯(一般網絡管理人員給的)、IP地址的子網掩碼有沒有問題(這很重要,對于靜態IP,很多人在這里設置錯誤,建議是,最好把IP地址、VLSM這方面的知識學一下)。
一般可以用下面的命令查看:
(2)路由設置
對于服務器、PC,一般是指默認網關的設置了;對于路由器本身或三層交換機,那就是靜態路由或動態路由的設置問題了。
(3)DNS設置
主要是要確保所設置的DNS服務器地址到底有沒有提供域名解析服務或者是否出現了故障,至于如何判斷,后面會給出方法,這里關注的是,你得設置一個正確的DNS服務器地址或可以自動獲取。在windows上面你可以通過下面的命令查看:
03?測試網關或路由器的通暢情況
先測網關然后再測路由器,一級一級地測試。
在上面的網絡環境中,在網絡通的情況下,我們在電腦上使用命令tracert -d命令,會得到下面的結果:
通過這個測試結果,我們可以清楚地知道電腦在訪問互聯網時,數據的走向情況:
根據這個數據走向,我們就可以得到一個重要的思路,就是根據數據走向來檢測網絡的通暢情況!因此,我們可以分兩步:
(1)先測試電腦到網關192.168.2.254的通暢情況。
我們可以在自己的電腦上自己ping網關的地址,看是否有響應。
一般這樣的判斷方法是比較快的,但有時候,無論怎樣ping都不能,那么則可能有以下的幾種情況:
-
網關設備做了禁止ping的設置
-
網關接口或網關設備出現故障
對于第一種情況,一般很少會在這些設備在做ping的限制操作,實在是沒有太大的必要這樣做。
當然,網絡安全等要求十分嚴格的除外。ping通192.168.2.254網關后,再ping一下172.16.13.1以確認電腦到整個網關設備都沒有問題。
對于ping不通的時候,我個人還建議在電腦上執行如下操作:
即查看電腦本身有沒有獲取到網關的MAC的地址,顯然,如果沒有網關的MAC地址,那也是不可能ping通網關的,在排除了前面電腦設置的問題后,你可以猜測是網關設備出了問題,這時就可以聯系網絡工程師對網關設備進行測試了。
(2)測試到其它路由器的通暢情況
前面一步沒有問題了,也就是電腦到網關通信正常了,再測試網關到出口路由器的通暢情況:
這里,我們使用tracert -d命令就可以了:
當然,如果發現不通,那么則可能是下面的情況:
-
網關設備與路由器之間的物理鏈路問題
-
網關設備與路由器之間的設置問題,比如路由協議、接口配置之類的
出現上面的情況,那就是網絡工程師的問題了,當然,如果你是網絡工程師,應該要馬上查看一下設備的狀態,看是不是設備哪里出現問題了。
上面的步驟完成了,假設你的出口路由器設置是沒有問題的,比如NAT與默認路由等的設置,就可以大致知道:內網的一個基本通信是正常的(至少你的電腦和出口路由器的通信沒問題)。
這時,就要看電腦到底能不能訪問互聯網了。
04?測試ping公網ip的通暢情況
來到這一步的時候,就說明前面三步是沒有問題的,也就是說,本地局域網絡的通信是正常的。
這時,你要做的就是判斷本地局域網絡與外網(公網)之間的通信有沒有問題了:
這里采取的是直接ping公網地址的方法,是為了排除DNS的影響(萬一你的DNS設置又有問題)。
至于要ping什么樣的公網地址,我的個人建議是:可以ping一些沒有禁止ping的公共DNS服務器地址,比如114.114.114.114和8.8.8.8的。
這樣之后,基本上就可以確定網絡是沒有問題的了。
當然,這里并沒有提到出口放置防火墻的情況,實際上,思路是一致的。
但是,你需要考慮的是:你的訪問數據有沒有被防火墻給過濾掉,是數據出去的時候過濾了,還是數據回來的時候過濾了?由于還要涉及到防火墻的設置,這里就不再提及了,只是仍要注意這一點就是了。
05?測試DNS的通暢情況
你可以直接ping網站地址,看有沒有回顯IP地址,至于通不通是另外一回事,只要可以回顯IP地址,那么DNS就沒有問題。
不過這里仍然要說一下nslookup這個命令,這是一個非常好用的命令,我平常自己在網絡排錯時,基本上都會用到:
當然也可以像下面這樣使用:
總結
- 上一篇: linux运维必备,100道常见面试题
- 下一篇: 看完这篇学会Ansible