懂事的網絡工程師,早該學會處理這種故障了

2022.07.06
懂事的網絡工程師,早該學會處理這種故障了

今天老楊的一位粉絲和我分享了關於他工作中親眼見到的,排錯時發生的“慘狀”圖片,老楊通篇看下來,覺得很有借鑒意義,可供新手網工們多參考。

大家好,我是老楊。

​之前我說了很多次,故障排錯,是每個網工的必修課。很多人一開始都是手殘,但手殘到引發嚴重的情況的還是比較少見的。

今天老楊的一位粉絲和我分享了關於他工作中親眼見到的,排錯時發生的“慘狀”。

老楊通篇看下來,覺得很有借鑒意義,可供新手網工們多參考。

圖片

他有一句話我覺得很認同:“由於設備本身的軟件或者硬件出現問題而導致的故障,其實是比較少見的。”

“大部分都是人為的。”

排錯排成這樣,誰能比我更誇張?

這是我之前工作中遇見過的一次網絡故障。

我覺得,排錯最重要的點在於,你發現網絡故障後,得對這個現網的網絡環境有個基本的判斷。

你要判斷它的組網是什麼樣的,它的配置是什麼樣的,這些基本的信息你要收集到,你才能對故障進行分析。

所以我先講下故障發生的背景,也給你們幾條線索,一起判斷下。

圖片

這個故障的背景其實就是一個很簡單的配置變更。

在中午休息的時間,我的同事對廠區的某一棟樓的匯聚交換機進行配置變更。

他實際上是要增加一台接入交換機,因為廠區人員變多了,終端也就變多了,所以現有的網絡和接入設備不能滿足需求,需要新增一台接入層的交換機。

大家都知道,在現網中新增一台接入交換機,這個配置是非常簡單的。

一般只需要將接入交換機上到機架,兩根光纖連到匯聚交換機就搞定了。

而通常你接入交換機連接匯聚交換機需要做什麼配置?

一般來說,都是將這個接入交換機所需要VLAN配上,再將接入交換機連接匯聚交換機的兩個接口,或者一個接口配置成Trunk,搞定就好了。

圖片

交換機之間互聯的鏈路需要配置成trunk,這是CCNA學習中很基礎的內容,這裡我就不多複述了。

然後為了保證這個鏈路的可靠性,需要從接入交換機到匯聚交換機配置一個鏈路聚合,這一塊也是比較基礎的網絡學習內容,配置也很簡單。

本來,按照工作的進展,我同事刷完配置之後就回到了工位休息,而這個故障並沒有馬上出現。

因為當時午休,沒人辦公,所以也就沒人會發現有這樣的問題。

而等到了下午2點鐘,上班的人使用網絡的時候才發覺,“啊?樓層交換機出現了故障!”,或者說才發覺當時“不能上網了!”

因為對於終端用戶來說,最直觀的體驗就是電腦上不了網。

那上不了網怎麼辦?投訴唄。

所以就打電話給技術支持。

其實技術他的配置變更非常簡單,只是新增了一台設備,新增了一些配置,可這時候網絡卻出現了故障。

如果是你遇到了這種情況,你會怎麼分析這個故障?

展開來看下它的網絡架構,網絡架構其實就是傳統的三層架構,核心連接匯聚,匯聚連接樓層接入交換機,簡單吧?

圖片

只是說它的網絡架構會用到堆疊這個技術。

它的核心交換機連接匯聚的時候,匯聚是兩台做了堆疊,這邊拋開核心交換機不看,兩台匯聚交換機做堆疊,堆疊完成後,接入交換機上行兩條鏈路,分別連到2台匯聚交換機。

雖然這邊有2台匯聚交換機,但匯聚交換機在邏輯上是一台設備,因為他這兩條鏈路上做了鏈路捆綁。

鏈路捆綁也是堆疊的基本技術。

邏輯拓撲如圖所示,這個拓撲是個無環網絡把?因為用了堆疊這個技術,這樣的一個拓撲,它其實就是一個無環的網絡。

圖片

而匯聚是兩台設備,那接入交換機只需要在連接下行的接口配上VLAN,連接下行終端——PC,只要做個VLAN劃分,然後我們的上行接口,配置鏈路聚合,同時將這個上行的鏈路聚合口配置成trunk口,就這麼簡單的三個配置。

那這麼簡單的三個配置,為什麼會導致這個網絡出現環路?

當然,當時還不知道是環路。

因為我同事當時覺得,這個網絡是沒有環路的,而且他用了堆疊,而且配置了鏈路聚合,這樣的網絡,它是不存在環路的啊……

所以當時他的第一反應不是懷疑環路的問題。

此時再看我們的第一個線索:無環網絡。

以及第二線索:配置及其簡單,只配了vlan,trunk、鏈路聚合這三個。

圖片

你分析出什麼了嗎?

往下看第三個線索:設備無法遠程登錄。這該怎麼理解?

實際上一般出現網絡故障之後,一般人會採取應對做的第一步動作是什麼?

肯定是要遠程登錄到網絡設備,進行配置查看,要看下配置對不對。

因為都是刷上去的配置,所以第一步就是遠程登錄這台設備,可以登錄匯聚交換機也可以登錄接入交換機。

但是試圖登錄的時候發現,上不去。沒有辦法登錄到這兩台設備上……

登不上怎麼辦?

設備無法遠程登錄,通常會是什麼情況?

它無法被ping通,無法對它talent,這應該有同學在工作中遇到過吧?

通常發生這種情況,如果設備沒有辦法ping通,你只要保證被路由沒有問題,而設備卻無法ping通,無法遠程管理,這就說明它的CPU已經滿了。

因為所有需要ping這台設備,需要直接訪問這台設備的IP地址的所有報文,都是需要CPU來處理的。

ping或者talent這台設備,所有的遠程報文都是需要CPU來處理的,這時候如果CPU飆到100%了,就會造成無法遠程登錄和管理。

這時候我同事,終於開始懷疑是不是網絡環路了……

因為在二層網絡裡面,能夠導致CPU 100%的情況,大概率是由環路導致的,所以基本上可以判斷是一個環路。

但是為什麼?為什麼會出現環路?我命名配置的無環的!哪來的環路?

這時候要怎麼辦?只能跑現場了。

當時正好我在現場,由於當天中午臨時突發了這個問題,我同事也叫我過去幫忙。

所以我就跟他們一起去現場看了下這個問題到底什麼情況。

去現場一般來說你需要帶上console和筆記本。

去設備的現場,一般通過console線遠程或者直接連接到這個設備上,登錄這個設備查看配置。

但是大家也知道,由於設備CPU 100%爆掉了,你如果通過console線登錄設備,也會非常的卡,基本上你敲命令,過幾秒鐘才會有反應。

所以一般遇到環路這種問題,設備本身CPU滿了,因為你很難對這個設備進行配置查看,也就很難排查。

所以當時用了個最笨的辦法——拔線。

在匯聚交換機上,匯聚交換機所有連接接入交換機的這個口,一條條去拔線。

最後拔到新增的這台設備時發現網絡恢復了,這時候基本上就可以定位到新增的這台交換機設備,它是存在問題的。

可配置明明這麼簡單,卻出現環路了,離譜。

這個地方唯一有可能出現環路的是什麼場景?

這裡我直接告訴你,這是因為這裡鏈路聚合的配置不對。他們在配置鏈路聚合的時候,只配了一端,只在匯聚交換機上刷了鏈路聚合的配置。

這裡可以看出,匯聚交換機這兩個口是捆綁在一起的,但下行的這台接入交換機,他的鏈路聚合沒有配,也就是說,它是2個獨立的口。

所以當時拔線拔到了網絡恢復,我就登錄進了設備查看配置。

這一查看讓我哭笑不得,發現非常簡單,只是漏了兩條配置而已,在物理接口下漏配了兩條鏈路聚合的命令,就這麼簡單。

而就是這麼簡單的一個問題,就導致了這次的網絡環路,這時候生成樹是不生效的。

其實它也開了生成樹,他就非常納悶,“我開了生成樹為什麼還會有環路?是不是你設備有BUG,你設備是不是有問題?”

那為什么生成樹不起作用?

因為對於匯聚交換機來說,只有一個口;

而對於接入交換機來說,卻存在獨立的2個口。

只是從接入交換機發出的生成樹BPDU報文,發到上行接口之後,匯聚交換機不會再從接口發出來。

因為只有一個口,它是不會從這個接口再發出來的,所以這時候設備本身就不會認為網絡有環路。

於是就導致了,生成樹這時候是沒有作用的,即使你開了生成樹也檢測不到環路的。

後來我把鏈路聚合的配置重新配上了,網絡就恢復了。

其實就是一個非常簡單的一個小的疏忽,就在刷配置的時候漏刷了2條命令,從而導致的網絡故障。

實際上在現網中的網絡故障裡,50%以上都是人為的,基本上都是人為疏忽、配置變更導致的故障

由於設備本身的軟件或者硬件出現問題而導致的故障是比較少見的。

大部分都是人為的,要么配置配的不合理,要么規劃不合理,才會導致這樣或那樣的問題。

所以:認真+紮實的基本功=好網工。

在工作的早期,我想很多網絡工程師應該都會出現類似情況,會發生這樣或那樣的不該出現的錯誤。

其實沒關係,只要掌握好網絡理論知識,認真執行每一個命令,很多問題都能迎刃而解。

像我這個網絡環路,排查步驟其實很簡單。

對於環路來說,如果你的網絡設備沒有辦法登錄,那你只能用最笨的辦法一根根去拔線,因為設備無法查看,非常卡。

以上就是今天我分享的排錯經歷,希望能給你一些啟發。