戰(zhàn):從故障排查到跨廠商配置指南)
1. 從一個(gè)全網(wǎng)不通的故障說(shuō)起剛接手網(wǎng)絡(luò)運(yùn)維那會(huì)兒我遇到過(guò)一個(gè)至今印象深刻的故障。某天下午辦公區(qū)三樓整層突然斷網(wǎng)同事反饋電腦右下角顯示已連接但什么都打不開(kāi)。我第一反應(yīng)是交換機(jī)掛了跑過(guò)去一看設(shè)備指示燈正常端口燈也在閃。登錄交換機(jī)查配置發(fā)現(xiàn)這臺(tái)接入交換機(jī)上所有端口都在同一個(gè)默認(rèn)VLAN里而當(dāng)天上午有人為了隔離廣播風(fēng)暴把上聯(lián)口改成了Trunk模式卻沒(méi)同步調(diào)整接入端口的VLAN劃分。結(jié)果就是接入端口發(fā)出的無(wú)標(biāo)簽幀到了Trunk口被當(dāng)成Native VLAN的流量處理而Native VLAN又和上層核心的配置對(duì)不上數(shù)據(jù)包在二層就被丟棄了。這個(gè)故障的本質(zhì)就是VLAN與Trunk配置不匹配。VLAN解決的是把一臺(tái)物理交換機(jī)邏輯上切成多臺(tái)的問(wèn)題Trunk解決的是多臺(tái)交換機(jī)之間怎么傳遞多個(gè)VLAN的流量的問(wèn)題。這兩件事單獨(dú)看都不復(fù)雜但組合在一起加上Native VLAN、PVID、允許列表這些細(xì)節(jié)就特別容易出問(wèn)題。我后來(lái)帶過(guò)不少新人發(fā)現(xiàn)大家卡住的地方高度一致知道概念但不知道配置時(shí)每一步在干什么出了問(wèn)題也不知道從哪查。這篇內(nèi)容就是把我這些年配VLAN和Trunk的經(jīng)驗(yàn)完整梳理一遍。不管你是剛接觸網(wǎng)絡(luò)設(shè)備的新手還是配過(guò)幾次但總踩坑的同行都能從里面找到可以直接抄的配置和排查思路。我會(huì)從最基礎(chǔ)的為什么需要VLAN講起一路講到Trunk的封裝、Native VLAN的坑、跨廠商配置差異以及一套我常用的排錯(cuò)流程。全程用華為/華三風(fēng)格的命令為主思科的關(guān)鍵差異會(huì)單獨(dú)標(biāo)注因?yàn)檫@兩套在國(guó)內(nèi)企業(yè)網(wǎng)里最常見(jiàn)。2. VLAN到底在解決什么問(wèn)題為什么不能只靠劃分子網(wǎng)2.1 廣播域太大是萬(wàn)惡之源很多人學(xué)VLAN的時(shí)候第一句話就是VLAN用來(lái)隔離廣播域。這話沒(méi)錯(cuò)但太抽象。我換個(gè)說(shuō)法假設(shè)一個(gè)公司有200臺(tái)電腦接在幾臺(tái)交換機(jī)上全在同一個(gè)二層網(wǎng)絡(luò)里。任何一臺(tái)電腦發(fā)一個(gè)ARP請(qǐng)求比如誰(shuí)是192.168.1.50這個(gè)請(qǐng)求會(huì)被交換機(jī)泛洪到所有端口200臺(tái)電腦都得收下來(lái)看一眼不是找自己的就丟掉。一臺(tái)電腦這么干無(wú)所謂但如果200臺(tái)電腦每分鐘都在發(fā)ARP、發(fā)DHCP發(fā)現(xiàn)、發(fā)各種廣播整個(gè)網(wǎng)絡(luò)的帶寬和CPU就被這些跟自己無(wú)關(guān)的流量吃掉了。更麻煩的是故障域。某臺(tái)電腦網(wǎng)卡故障瘋狂發(fā)廣播幀整個(gè)二層網(wǎng)絡(luò)都會(huì)被拖慢這就是典型的廣播風(fēng)暴。你沒(méi)法在二層層面阻止它因?yàn)榻粨Q機(jī)默認(rèn)就是泛洪廣播。VLAN的作用就是把這200臺(tái)電腦按部門、按樓層、按用途切成若干個(gè)邏輯小組每個(gè)小組是一個(gè)獨(dú)立的廣播域。三樓的廣播傳不到二樓財(cái)務(wù)部的廣播傳不到研發(fā)部。故障被限制在一個(gè)VLAN內(nèi)部不會(huì)擴(kuò)散。這里有個(gè)新手常犯的認(rèn)知錯(cuò)誤以為VLAN就是子網(wǎng)。不是的。VLAN是二層概念子網(wǎng)是三層概念。你可以讓一個(gè)VLAN對(duì)應(yīng)一個(gè)子網(wǎng)這是最常見(jiàn)的做法也可以讓多個(gè)VLAN共用一個(gè)子網(wǎng)不推薦但技術(shù)上可行還可以讓一個(gè)VLAN里跑多個(gè)子網(wǎng)。VLAN標(biāo)簽Tag是加在以太網(wǎng)幀里的跟IP地址沒(méi)有直接關(guān)系。理解這一點(diǎn)后面看Trunk的時(shí)候才不會(huì)亂。2.2 一個(gè)VLAN就是一個(gè)廣播域也是一組端口的集合配置VLAN最直接的方式是基于端口劃分。比如把交換機(jī)的1到8口劃給VLAN 10研發(fā)部9到16口劃給VLAN 20財(cái)務(wù)部。這樣插在1口的電腦和插在9口的電腦即使IP在同一網(wǎng)段二層也通不了因?yàn)樗鼈冊(cè)诓煌膹V播域里。華為/華三的配置邏輯是這樣的# 創(chuàng)建VLAN system-view vlan 10 description RD vlan 20 description FIN quit # 把端口劃入VLANAccess模式 interface GigabitEthernet0/0/1 port link-type access port default vlan 10 quit interface GigabitEthernet0/0/9 port link-type access port default vlan 20 quit思科的寫法略有不同vlan 10 name RD vlan 20 name FIN interface FastEthernet0/1 switchport mode access switchport access vlan 10注意這里的關(guān)鍵詞Access模式。Access端口是接終端的端口它只屬于一個(gè)VLAN發(fā)出的幀不帶標(biāo)簽Untagged。電腦網(wǎng)卡不認(rèn)識(shí)VLAN標(biāo)簽所以接電腦的端口必須是Access把標(biāo)簽剝掉再發(fā)給電腦。這一點(diǎn)非常重要后面講Trunk的時(shí)候會(huì)反復(fù)對(duì)比。2.3 為什么不能只用路由器劃子網(wǎng)來(lái)隔離有人會(huì)問(wèn)我不用VLAN直接用路由器每個(gè)部門一個(gè)物理接口接一個(gè)子網(wǎng)不也能隔離嗎能但成本高得離譜。200臺(tái)電腦分10個(gè)部門你得有10個(gè)路由器接口、10臺(tái)交換機(jī)或者10組獨(dú)立布線。而且部門調(diào)整的時(shí)候你得重新拉線、重新配接口。VLAN的價(jià)值就在于物理布線不用動(dòng)邏輯分組隨便改。今天1口是研發(fā)明天研發(fā)搬走了改一條命令把1口劃到財(cái)務(wù)VLAN線都不用碰。這就是VLAN在企業(yè)網(wǎng)里不可替代的原因。它把物理位置和邏輯歸屬解耦了。你坐在哪個(gè)工位不重要重要的是你的端口被劃到了哪個(gè)VLAN。3. Trunk的封裝機(jī)制標(biāo)簽是怎么加上去又剝下來(lái)的3.1 單臺(tái)交換機(jī)不夠用VLAN必須跨設(shè)備傳遞VLAN在單臺(tái)交換機(jī)上很好理解但現(xiàn)實(shí)是一棟樓有十幾臺(tái)接入交換機(jī)都上聯(lián)到一臺(tái)核心交換機(jī)。研發(fā)部的員工可能分散在三樓和四樓的交換機(jī)上但他們要在一個(gè)VLAN里。這時(shí)候問(wèn)題來(lái)了三樓交換機(jī)上的VLAN 10流量怎么傳到四樓交換機(jī)中間要經(jīng)過(guò)核心交換機(jī)這條鏈路上跑的不只是VLAN 10還有VLAN 20、VLAN 30……如果這條鏈路上每個(gè)VLAN都拉一根物理線那核心交換機(jī)的端口很快就不夠用了。Trunk的作用就是在一根物理鏈路上同時(shí)傳遞多個(gè)VLAN的流量。實(shí)現(xiàn)方式是在幀里插入一個(gè)VLAN標(biāo)簽Tag標(biāo)明這個(gè)幀屬于哪個(gè)VLAN。接收方看到標(biāo)簽就知道該把幀轉(zhuǎn)發(fā)到哪個(gè)VLAN。這個(gè)標(biāo)簽的標(biāo)準(zhǔn)叫IEEE 802.1Q是在以太網(wǎng)幀的源MAC地址后面插入4個(gè)字節(jié)。其中12位是VLAN ID所以VLAN ID的范圍是0到4095實(shí)際可用的是1到40940和4095保留。這4個(gè)字節(jié)里還有3位優(yōu)先級(jí)用于QoS1位是CFI現(xiàn)在基本不用。對(duì)普通配置來(lái)說(shuō)你只需要記住標(biāo)簽里最關(guān)鍵的就是VLAN ID。3.2 Access端口和Trunk端口的本質(zhì)區(qū)別我把這兩種端口的處理邏輯用一張表說(shuō)清楚這是整個(gè)VLAN配置的核心端口類型接收無(wú)標(biāo)簽幀接收帶標(biāo)簽幀發(fā)送幀時(shí)Access打上PVID進(jìn)入對(duì)應(yīng)VLAN一般丟棄除非是Native VLAN剝掉標(biāo)簽以無(wú)標(biāo)簽發(fā)出Trunk打上Native VLAN的PVID檢查VLAN是否在允許列表在則通過(guò)除Native VLAN外都帶標(biāo)簽發(fā)出這張表里的PVIDPort VLAN ID是理解一切的關(guān)鍵。PVID是端口的默認(rèn)VLAN當(dāng)端口收到一個(gè)不帶標(biāo)簽的幀時(shí)就認(rèn)為它屬于PVID對(duì)應(yīng)的VLAN。Access端口的PVID就是它所屬的那個(gè)VLANTrunk端口的PVID默認(rèn)是VLAN 1也就是Native VLAN。我見(jiàn)過(guò)太多人栽在Native VLAN上。簡(jiǎn)單說(shuō)Trunk兩端Native VLAN必須一致否則帶標(biāo)簽的幀會(huì)被錯(cuò)誤地當(dāng)成無(wú)標(biāo)簽幀處理導(dǎo)致VLAN串?dāng)_或者流量丟失。華為/華三默認(rèn)Native VLAN是1思科也是1但很多企業(yè)為了安全會(huì)把Native VLAN改成一個(gè)不用的VLAN比如999這時(shí)候兩端必須同步改。3.3 Trunk配置的完整命令與逐行解釋華為/華三的Trunk配置interface GigabitEthernet0/0/24 port link-type trunk port trunk allow-pass vlan 10 20 30 port trunk pvid vlan 999 quit逐行解釋port link-type trunk把端口設(shè)為Trunk模式。port trunk allow-pass vlan 10 20 30允許VLAN 10、20、30的流量通過(guò)。沒(méi)在列表里的VLAN流量會(huì)被丟棄。這是安全控制的關(guān)鍵不要圖省事寫allow-pass vlan all除非你確實(shí)需要所有VLAN都通過(guò)。port trunk pvid vlan 999把Native VLAN改成999。這一步是可選的但推薦做原因后面講。思科的對(duì)應(yīng)配置interface GigabitEthernet0/1 switchport trunk encapsulation dot1q switchport mode trunk switchport trunk allowed vlan 10,20,30 switchport trunk native vlan 999思科多了一步switchport trunk encapsulation dot1q因?yàn)槔显O(shè)備可能支持ISL封裝思科私有已淘汰?,F(xiàn)在新設(shè)備默認(rèn)就是dot1q但寫上不虧。注意Trunk兩端的允許VLAN列表必須匹配。如果一端允許10、20另一端只允許10那VLAN 20的流量在第二端會(huì)被丟棄。我排查過(guò)好幾次某個(gè)VLAN時(shí)通時(shí)不通最后都是allow-pass列表不一致。4. 那些年我在Native VLAN和PVID上踩過(guò)的坑4.1 Native VLAN不一致導(dǎo)致的詭異丟包前面提到Native VLAN必須一致但實(shí)際故障表現(xiàn)是什么樣的我講一個(gè)真實(shí)案例細(xì)節(jié)做了脫敏。兩臺(tái)交換機(jī)用Trunk互聯(lián)一端Native VLAN是1另一端被改成了999。結(jié)果VLAN 10的流量正常因?yàn)閹?biāo)簽兩端都認(rèn)但管理流量走Native VLAN時(shí)通時(shí)斷。為什么時(shí)通時(shí)斷因?yàn)楫?dāng)Native VLAN為1的一端發(fā)送無(wú)標(biāo)簽幀時(shí)另一端把它歸到了999而999可能沒(méi)配IP幀就被丟了。但如果某些幀恰好帶了標(biāo)簽又能通過(guò)。這種部分通的現(xiàn)象最迷惑人容易讓人以為是線路質(zhì)量問(wèn)題。排查方法很簡(jiǎn)單display port vlan華為或show interfaces trunk思科看兩端的Native VLAN是否一致。我現(xiàn)在的習(xí)慣是配Trunk的時(shí)候第一件事就是把兩端Native VLAN都改成999然后確認(rèn)一致再配允許列表。4.2 PVID和Native VLAN的關(guān)系別搞混嚴(yán)格來(lái)說(shuō)PVID是端口默認(rèn)VLAN IDNative VLAN是Trunk上不打標(biāo)簽的那個(gè)VLAN。在大多數(shù)設(shè)備上Trunk端口的PVID就等于Native VLAN。但有些廠商的實(shí)現(xiàn)里這兩個(gè)概念是分開(kāi)配置的。華為的命令是port trunk pvid vlan X思科是switchport trunk native vlan X效果一樣都是設(shè)置那個(gè)不打標(biāo)簽的VLAN。為什么要改Native VLAN兩個(gè)原因一是安全默認(rèn)VLAN 1容易被利用比如VLAN跳躍攻擊二是避免和業(yè)務(wù)VLAN沖突。我一般建議用一個(gè)專門的、不承載業(yè)務(wù)的VLAN比如999或1000作為Native VLAN這樣即使有人誤發(fā)無(wú)標(biāo)簽幀也不會(huì)進(jìn)入業(yè)務(wù)VLAN。4.3 一個(gè)容易被忽略的細(xì)節(jié)Trunk端口收到無(wú)標(biāo)簽幀怎么辦這是新手最容易懵的地方。Trunk端口收到一個(gè)無(wú)標(biāo)簽幀時(shí)會(huì)把它打上Native VLAN的標(biāo)簽然后轉(zhuǎn)發(fā)到Native VLAN里。這意味著如果Native VLAN是1而VLAN 1里恰好有設(shè)備那這個(gè)無(wú)標(biāo)簽幀就會(huì)進(jìn)入VLAN 1。如果Native VLAN是999而999里沒(méi)有設(shè)備幀就被丟棄。這個(gè)機(jī)制帶來(lái)的一個(gè)常見(jiàn)問(wèn)題是接在Trunk端口上的設(shè)備比如服務(wù)器如果不打標(biāo)簽它的流量會(huì)進(jìn)入Native VLAN。有些服務(wù)器配置了VLAN標(biāo)簽有些沒(méi)有。如果服務(wù)器沒(méi)打標(biāo)簽而Trunk的Native VLAN是999服務(wù)器就上不了網(wǎng)了。解決辦法要么是給服務(wù)器網(wǎng)卡配VLAN標(biāo)簽要么把服務(wù)器接在Access端口上。我見(jiàn)過(guò)有人把服務(wù)器接Trunk口然后納悶為什么ping不通網(wǎng)關(guān)查了半天才發(fā)現(xiàn)是Native VLAN的問(wèn)題。5. 跨廠商配置差異與實(shí)戰(zhàn)中的選型建議5.1 華為/華三 vs 思科命令對(duì)照與思維差異國(guó)內(nèi)企業(yè)網(wǎng)里華為、華三、思科三家占了絕大多數(shù)。它們的VLAN/Trunk配置邏輯一樣但命令風(fēng)格差異不小。我把常用命令整理成對(duì)照表方便你切換設(shè)備時(shí)快速查操作華為/華三思科創(chuàng)建VLANvlan 10vlan 10端口設(shè)Accessport link-type accessswitchport mode access端口劃入VLANport default vlan 10switchport access vlan 10端口設(shè)Trunkport link-type trunkswitchport mode trunk允許VLAN通過(guò)port trunk allow-pass vlan 10 20switchport trunk allowed vlan 10,20設(shè)置Native VLANport trunk pvid vlan 999switchport trunk native vlan 999查看VLANdisplay vlanshow vlan brief查看Trunkdisplay port vlanshow interfaces trunk思維差異上華為/華三更強(qiáng)調(diào)先設(shè)類型再設(shè)參數(shù)思科則是模式屬性的組合。習(xí)慣了華為的人第一次配思科容易忘記switchport mode trunk這一步結(jié)果端口還在Access模式Trunk配了也不生效。5.2 什么場(chǎng)景該用Trunk什么場(chǎng)景該用Access這不是隨便選的取決于對(duì)端是什么設(shè)備交換機(jī)到交換機(jī)用Trunk因?yàn)橐獋鞫鄠€(gè)VLAN。交換機(jī)到路由器如果路由器做單臂路由Router-on-a-Stick用Trunk路由器子接口對(duì)應(yīng)不同VLAN。交換機(jī)到服務(wù)器看服務(wù)器是否需要多VLAN。如果服務(wù)器只在一個(gè)VLAN里用Access如果服務(wù)器要跑多個(gè)VLAN比如虛擬化環(huán)境用Trunk并在服務(wù)器網(wǎng)卡上配VLAN子接口。交換機(jī)到AP無(wú)線AP通常用Trunk因?yàn)橐獋鞴芾鞻LAN和多個(gè)業(yè)務(wù)VLAN。交換機(jī)到電腦用Access電腦不需要也不認(rèn)識(shí)VLAN標(biāo)簽。我見(jiàn)過(guò)有人把電腦接在Trunk口上然后發(fā)現(xiàn)電腦能上網(wǎng)但速度很慢查了半天是Native VLAN的廣播問(wèn)題。記住終端設(shè)備接Access網(wǎng)絡(luò)設(shè)備之間接Trunk這是基本原則。5.3 允許列表的精細(xì)化控制allow-pass vlan all看起來(lái)很省事但我強(qiáng)烈建議不要這么寫。原因有兩個(gè)一是安全所有VLAN都能通過(guò)意味著任何一個(gè)VLAN的廣播都會(huì)傳到對(duì)端失去了隔離的意義二是排錯(cuò)困難當(dāng)某個(gè)VLAN出問(wèn)題時(shí)你無(wú)法快速判斷是不是Trunk的問(wèn)題。正確的做法是只允許真正需要跨設(shè)備的VLAN通過(guò)。比如三樓交換機(jī)只需要把VLAN 10和20傳到核心那就只允許10和20。這樣即使有人誤創(chuàng)建了VLAN 30它的流量也不會(huì)傳到核心故障被限制在本地。華為還支持port trunk allow-pass vlan 10 to 20這種范圍寫法思科用switchport trunk allowed vlan 10-20。范圍寫法在VLAN多的時(shí)候很方便但要注意范圍邊界別把不該包含的VLAN包進(jìn)去。6. 一套可復(fù)用的VLAN/Trunk排錯(cuò)流程6.1 從物理層到二層逐層排查網(wǎng)絡(luò)故障排查有個(gè)基本原則從下往上。VLAN/Trunk的問(wèn)題我一般按這個(gè)順序查物理層端口燈亮不亮display interface看端口是up還是down如果down先查線、查光模塊、查端口是否被shutdown。VLAN是否存在display vlan看VLAN有沒(méi)有創(chuàng)建。我遇到過(guò)有人配了port default vlan 10但忘了vlan 10結(jié)果端口一直不生效。端口模式是否正確display port vlan看端口是Access還是TrunkPVID是多少。Trunk允許列表display port vlan或display interface看allow-pass列表是否包含需要的VLAN。Native VLAN一致性兩端對(duì)比必須一致。MAC地址表display mac-address看MAC有沒(méi)有學(xué)到。如果學(xué)不到說(shuō)明二層不通。ARP和IP二層通了之后再看三層。display arp看ARP有沒(méi)有解析。這個(gè)順序看起來(lái)簡(jiǎn)單但能解決90%以上的VLAN/Trunk問(wèn)題。我見(jiàn)過(guò)太多人一上來(lái)就查路由、查ACL結(jié)果發(fā)現(xiàn)是端口模式配錯(cuò)了。6.2 幾個(gè)典型故障的快速定位故障一同一VLAN內(nèi)不同交換機(jī)上的電腦ping不通。排查先看兩端端口是不是都在同一個(gè)VLAN再看Trunk的allow-pass列表有沒(méi)有包含這個(gè)VLAN最后看Native VLAN是否一致。最常見(jiàn)的原因是allow-pass列表漏了這個(gè)VLAN。故障二跨VLAN能通同VLAN反而不通。這個(gè)聽(tīng)起來(lái)反直覺(jué)但確實(shí)會(huì)發(fā)生。原因通常是同VLAN的流量走二層跨VLAN走三層。如果二層有問(wèn)題比如Trunk沒(méi)放行同VLAN就不通而三層如果配了路由跨VLAN反而能通。這時(shí)候要重點(diǎn)查Trunk配置。故障三Trunk口起來(lái)后部分VLAN通部分不通。幾乎可以肯定是allow-pass列表的問(wèn)題。檢查兩端列表確保需要的VLAN都在里面。注意華為的allow-pass是覆蓋式的后配的會(huì)覆蓋前面的別配著配著把之前的VLAN弄丟了。故障四改了Native VLAN后管理IP斷了。這是因?yàn)楣芾鞩P可能配在Native VLAN上。改Native VLAN之前先確認(rèn)管理流量的VLAN別把自己關(guān)在門外。我一般建議管理VLAN單獨(dú)用一個(gè)不要和Native VLAN混在一起。6.3 配置前的檢查清單為了避免配完出問(wèn)題我養(yǎng)成了一個(gè)習(xí)慣配Trunk之前先過(guò)一遍清單。[ ] 兩端VLAN都已創(chuàng)建[ ] 兩端端口模式都是Trunk[ ] 兩端allow-pass列表一致且包含所需VLAN[ ] 兩端Native VLAN一致推薦都用999[ ] 管理VLAN不在Native VLAN里或者已確認(rèn)管理流量路徑[ ] 配置保存華為save思科write這個(gè)清單看起來(lái)啰嗦但能省下大量排錯(cuò)時(shí)間。尤其是配置保存這一條我見(jiàn)過(guò)有人配完沒(méi)保存設(shè)備重啟后配置丟失又得重來(lái)。7. 一些進(jìn)階話題和我的個(gè)人體會(huì)7.1 VLAN間路由單臂路由與三層交換VLAN隔離了廣播域但不同VLAN之間要通信就需要三層路由。兩種常見(jiàn)方案單臂路由路由器的一個(gè)物理接口配成Trunk然后創(chuàng)建子接口每個(gè)子接口對(duì)應(yīng)一個(gè)VLAN配上網(wǎng)關(guān)IP。配置大概是這樣interface GigabitEthernet0/0.10 encapsulation dot1Q 10 ip address 192.168.10.1 255.255.255.0 interface GigabitEthernet0/0.20 encapsulation dot1Q 20 ip address 192.168.20.1 255.255.255.0三層交換在三層交換機(jī)上創(chuàng)建VLAN接口SVI直接配網(wǎng)關(guān)IP。這是現(xiàn)在更主流的做法因?yàn)樾阅芨貌灰蕾囃獠柯酚善鳌nterface Vlanif10 ip address 192.168.10.1 255.255.255.0 interface Vlanif20 ip address 192.168.20.1 255.255.255.0單臂路由的缺點(diǎn)是所有VLAN間流量都要經(jīng)過(guò)路由器的那個(gè)物理接口容易成為瓶頸。三層交換把路由功能集成到交換機(jī)里轉(zhuǎn)發(fā)性能高得多?,F(xiàn)在新項(xiàng)目基本都用三層交換單臂路由更多出現(xiàn)在老設(shè)備或?qū)嶒?yàn)環(huán)境里。7.2 我踩過(guò)的最大一個(gè)坑Trunk上的STP有一次配完Trunk發(fā)現(xiàn)網(wǎng)絡(luò)時(shí)通時(shí)斷ping丟包率30%左右。查了半天VLAN和Trunk都沒(méi)問(wèn)題最后發(fā)現(xiàn)是STP生成樹的問(wèn)題。兩臺(tái)交換機(jī)之間有兩條Trunk鏈路STP把其中一條阻塞了但阻塞的端口狀態(tài)切換時(shí)導(dǎo)致了短暫環(huán)路引發(fā)廣播風(fēng)暴。解決辦法是配STP邊緣端口或者用鏈路聚合。這個(gè)坑讓我意識(shí)到VLAN和Trunk配對(duì)了不代表網(wǎng)絡(luò)就穩(wěn)了還要考慮STP、鏈路聚合這些二層協(xié)議。后來(lái)我養(yǎng)成了一個(gè)習(xí)慣配Trunk之前先確認(rèn)STP狀態(tài)display stp brief看有沒(méi)有異常的阻塞端口。7.3 給新手的幾條實(shí)在建議第一先在模擬器上練。華為的eNSP、思科的Packet Tracer都能模擬VLAN和Trunk配錯(cuò)了大不了重啟比在真機(jī)上試錯(cuò)成本低得多。我剛開(kāi)始學(xué)的時(shí)候在模擬器上把各種錯(cuò)誤配置都試了一遍真機(jī)上就很少出問(wèn)題了。第二配置前先畫拓?fù)鋱D。標(biāo)清楚每臺(tái)交換機(jī)的端口、VLAN劃分、Trunk鏈路。我見(jiàn)過(guò)太多人配著配著自己都亂了就是因?yàn)闆](méi)有圖。第三改配置前先備份。華為display current-configuration思科show running-config復(fù)制出來(lái)存一份。改錯(cuò)了可以對(duì)照恢復(fù)。第四Native VLAN統(tǒng)一用999。這是我最推薦的一個(gè)習(xí)慣能避免大量莫名其妙的故障。第五別怕命令行。VLAN和Trunk的命令就那么幾條配多了就熟了。真正難的不是命令是理解數(shù)據(jù)包在每一跳是怎么被處理的。理解了原理命令自然就記住了。7.4 關(guān)于VLAN數(shù)量的規(guī)劃最后說(shuō)一個(gè)規(guī)劃層面的經(jīng)驗(yàn)。有些公司喜歡按部門細(xì)分VLAN一個(gè)部門一個(gè)VLAN結(jié)果搞出幾十上百個(gè)VLAN。VLAN多了Trunk的allow-pass列表會(huì)很長(zhǎng)管理成本高而且STP的收斂時(shí)間會(huì)變長(zhǎng)。我的建議是按安全域和廣播域大小來(lái)規(guī)劃而不是按部門。比如研發(fā)和測(cè)試可以共用一個(gè)VLAN如果廣播量不大財(cái)務(wù)和HR可以共用一個(gè)。一般一個(gè)VLAN控制在200臺(tái)設(shè)備以內(nèi)超過(guò)就拆分。這樣既能隔離廣播又不會(huì)讓VLAN數(shù)量失控。Trunk的allow-pass列表也能保持精簡(jiǎn)排錯(cuò)的時(shí)候一眼就能看完。這套東西我用了很多年從最初的手忙腳亂到現(xiàn)在配Trunk基本一次過(guò)靠的就是把原理吃透加上反復(fù)踩坑總結(jié)。VLAN和Trunk不是什么高深技術(shù)但細(xì)節(jié)特別多每一個(gè)細(xì)節(jié)背后都有它的道理。希望這篇內(nèi)容能幫你少走一些我走過(guò)的彎路。