隨著對科技和網(wǎng)絡(luò)的依靠程度加大,基礎(chǔ)的網(wǎng)絡(luò)穩(wěn)定是基礎(chǔ),網(wǎng)絡(luò)故障是網(wǎng)工和運(yùn)維工作中最易常見的問題,那么如何才能進(jìn)行網(wǎng)絡(luò)排查,快速解決問題呢?
解決和排查網(wǎng)絡(luò)故障,像交換機(jī)、路由器、防火墻這些最基本的網(wǎng)絡(luò)設(shè)備應(yīng)該要有些了解,尤其是它們對應(yīng)的OSI層次以及作用,比如普通的二層交換機(jī)對應(yīng)OSI七層模型中的數(shù)據(jù)鏈路層,它可以隔絕沖突域,同時(shí)可能通過虛擬局域網(wǎng)技術(shù)(VLAN)來隔絕廣播域,二層交換機(jī)通過二層地址即MAC地址來實(shí)現(xiàn)數(shù)據(jù)幀的轉(zhuǎn)發(fā);再比如路由器,它對應(yīng)網(wǎng)絡(luò)層,可以提供路由尋址的功能等等。
今天主要講授網(wǎng)絡(luò)交換機(jī)故障問題大致包括物理層故障、端口協(xié)商以及自環(huán)問題、Vlan問題、設(shè)備兼容問題和其他問題等的發(fā)現(xiàn)及解決辦法。
01
從網(wǎng)絡(luò)結(jié)構(gòu)講起
一般中小型企業(yè)網(wǎng)絡(luò)的基本架構(gòu)都是這樣的:接入層–匯聚層–核心層–網(wǎng)絡(luò)出口。
下面是個典型的3層網(wǎng)絡(luò)結(jié)構(gòu)圖:

如果網(wǎng)絡(luò)環(huán)境比較龐大,匯聚層和核心層都會有,像這里的話,一般小型網(wǎng)絡(luò),就直接沒有匯聚層,不過排除故障的思路是一致的。下面講的排錯其實(shí)都是針對用戶PC來說明的,事實(shí)上,數(shù)據(jù)中心中的網(wǎng)絡(luò)排錯也是類似的。
網(wǎng)絡(luò)排錯的一個重要原則:就是數(shù)據(jù)流向。
我們在維護(hù)工作中的發(fā)現(xiàn)故障和對應(yīng)排錯,不就是要判斷問題在哪里,攻擊在哪里,網(wǎng)絡(luò)哪里出了問題,因此,我們就必須要知道數(shù)據(jù)的走向。
所以這個重要的原則是:關(guān)注數(shù)據(jù)的走向。
下面講的網(wǎng)絡(luò)排錯思路其實(shí)就是通過追蹤數(shù)據(jù)的走向就是一步步縮小網(wǎng)絡(luò)故障點(diǎn)的,因此,這一點(diǎn)非常非常重要!這也是中小型企業(yè)網(wǎng)絡(luò)的基本架構(gòu)開始學(xué)習(xí)排除的。
02
網(wǎng)絡(luò)排錯基本思路
基本思路如下,基本的思路大致是這樣的:

(1)檢查物理鏈路是否有問題
(2)查看本機(jī)IP地址、路由、DNS的設(shè)置是否有問題
(3)測試網(wǎng)關(guān)或路由器的通暢情況。先測網(wǎng)關(guān)然后再測路由器,一級一級地測試
(4)測試ping公網(wǎng)ip的通暢情況(平時(shí)要記幾個外部IP)
(5)測試DNS的通暢情況,可以直接ping網(wǎng)站地址
我們假設(shè)有下面的一個網(wǎng)絡(luò)環(huán)境,可以根據(jù)這樣的邏輯和后面的專項(xiàng)排錯課程,學(xué)習(xí)網(wǎng)絡(luò)排錯的過程和思路。
03
排除第一步:抓包
通常我們會在網(wǎng)絡(luò)中的交換機(jī)上抓包,一般可排查一些網(wǎng)絡(luò)問題。下面華為交換機(jī)抓包的方式:
更多抓包方式,排錯方法課程,請下載技福小咖APP學(xué)習(xí)。
命令功能
capture-packet interface命令用來配置轉(zhuǎn)發(fā)報(bào)文捕獲實(shí)例。
undo capture-packet命令用來刪除配置的轉(zhuǎn)發(fā)報(bào)文捕獲實(shí)例。
缺省情況下,沒有配置轉(zhuǎn)發(fā)報(bào)文捕獲實(shí)例。
命令格式如下:
capture-packet interface { interface-typeinterface-number } &<1-4> [ vxlan [ vnivni-id ] [ tag-format { none | single } ] [ aclacl-number ] | [ vlanvlan-id | inner-vlaninner-vlan-id | acl { acl-number | ipv6acl6-number } ] * ] [ clear payload ] destination { terminal | filefile-name } * [ time-outtime | packet-numnumber | packet-lenlength ] *
undo capture-packet [ capture-index ]
