實(shí)戰(zhàn))
1. VLAN 隔離做完了才發(fā)現(xiàn)通不了問題到底出在哪剛接觸 VLAN 的朋友大多經(jīng)歷過這樣一幕在 ENSP 里辛辛苦苦把交換機(jī)端口劃進(jìn) VLAN 10 和 VLAN 20display vlan一看端口歸屬清清楚楚心里挺得意。結(jié)果用 PC1 去 ping PC2超時(shí)。再切回同 VLAN 內(nèi)的另一臺 PC通了。于是開始懷疑是不是模擬器有 bug、是不是鏡像有問題、是不是網(wǎng)線沒插好——其實(shí)都不是。VLAN 的本質(zhì)就是在二層把一個(gè)物理交換機(jī)切成多個(gè)互相看不見的廣播域這是它的價(jià)值也正是它帶來的麻煩。你按下回車劃完 VLAN 的那一刻VLAN 10 的廣播幀不會再泛洪到 VLAN 20這是特性不是缺陷。但業(yè)務(wù)上要求它們能互相訪問這就必須把流量抬到第三層去繞一圈。所以華為 ENSP 交換機(jī)實(shí)現(xiàn)不同 VLAN 間的通信這件事說到底不是怎么配而是你要在哪一層、用哪種設(shè)備作為網(wǎng)關(guān)來承擔(dān)跨網(wǎng)段轉(zhuǎn)發(fā)。這篇內(nèi)容我會沿著一條完整的實(shí)操鏈路走先講清楚三種主流方案單臂路由、三層交換機(jī) VLANIF、路由口直連背后各自的取舍邏輯再落到 ENSP 里從零搭一套可復(fù)現(xiàn)的拓?fù)浒讯哟蛲?、把三層網(wǎng)關(guān)建起來最后把我在實(shí)際配置里踩過的坑一個(gè)個(gè)攤開講——尤其是那些文檔里一筆帶過、但真正會讓你卡住半小時(shí)的細(xì)節(jié)比如子接口為什么要開arp broadcast enable、Trunk 的 PVID 不匹配為什么會導(dǎo)致配對了也不通、三層交換機(jī)為什么不建議用路由器那套思路做網(wǎng)關(guān)。適合誰看剛學(xué)完 VLAN 劃分、正在做跨網(wǎng)段實(shí)驗(yàn)的入門同學(xué)也適合有點(diǎn)基礎(chǔ)、但排錯(cuò)總是靠刪了重配的從業(yè)者——后面的排查思路那部分我從物理層、二層、三層一路列到了策略層碰到就是不通的時(shí)候可以直接照著走。命令基于設(shè)備的通用命令體系在 ENSP 里可以直接敲邏輯同樣適用于真機(jī)。2. 方案選型單臂路由、VLANIF、路由口到底怎么挑2.1 先用一句話說透跨網(wǎng)段轉(zhuǎn)發(fā)的本質(zhì)PC1 在 192.168.10.0/24PC2 在 192.168.20.0/24PC1 發(fā) ping 的時(shí)候會先做一件事拿自己的掩碼和目標(biāo)地址做與運(yùn)算發(fā)現(xiàn)目標(biāo)不在同一網(wǎng)段于是不會發(fā) ARP 去問 PC2 的 MAC而是發(fā) ARP 去問網(wǎng)關(guān)的 MAC。拿到網(wǎng)關(guān) MAC 后它把 IP 包封進(jìn)一個(gè)目的 MAC 是網(wǎng)關(guān)、源 MAC 是自己的二層幀里送出去。網(wǎng)關(guān)收到拆掉二層頭發(fā)現(xiàn)目的 IP 是 192.168.20.x查路由表知道這個(gè)網(wǎng)段掛在另一個(gè)接口上于是重新封裝一個(gè)目的 MAC 為 PC2、源 MAC 為網(wǎng)關(guān)另一側(cè)接口的二層幀發(fā)出去。記住這條鏈路二層封裝的源和目的在每一跳都會變IP 地址從頭到尾不變。理解這一點(diǎn)后面所有不通的現(xiàn)象你都能對應(yīng)到具體是哪個(gè)環(huán)節(jié)斷了——要么 ARP 沒問到網(wǎng)關(guān)要么網(wǎng)關(guān)沒路由要么回程包找不到路。很多新手習(xí)慣性認(rèn)為配了 VLAN 就能通其實(shí)是漏掉了網(wǎng)關(guān)這個(gè)角色而三種方案的差別就在于這個(gè)網(wǎng)關(guān)由誰來做、放在哪臺設(shè)備上。2.2 三種方案的取舍邏輯與代價(jià)對比單臂路由的思路最樸素找一臺路由器用一根網(wǎng)線連到交換機(jī)的 Trunk 口然后在路由器這一個(gè)物理接口上劃出若干子接口每個(gè)子接口終結(jié)一個(gè) VLAN 的標(biāo)簽配一個(gè)該網(wǎng)段的地址當(dāng)網(wǎng)關(guān)。優(yōu)點(diǎn)是路由器本來就干路由的活兒ACL、NAT、策略路由這些功能現(xiàn)成缺點(diǎn)也很硬——所有 VLAN 間的流量都要擠這一根物理鏈路一個(gè)千兆口就是天花板而且路由器一般是軟件轉(zhuǎn)發(fā)包一多 CPU 就上去了。三層交換機(jī) VLANIF是現(xiàn)在的主流做法交換機(jī)內(nèi)部給每個(gè) VLAN 創(chuàng)建一個(gè)虛擬三層接口VLANIF別的廠商叫 SVI配上這個(gè)網(wǎng)段的地址當(dāng)網(wǎng)關(guān)。數(shù)據(jù)進(jìn)了交換機(jī)ASIC 芯片直接查表轉(zhuǎn)發(fā)不經(jīng)過 CPU線速沒問題也不存在一根線被擠爆的問題因?yàn)榭?VLAN 轉(zhuǎn)發(fā)在交換背板內(nèi)部就完成了。代價(jià)是這臺交換機(jī)必須具備三層能力而且它離路由器還有一些功能差距。路由口直連把三層交換機(jī)或路由器的一個(gè)物理口用undo portswitch變成三層口直接接一個(gè) VLAN 或一個(gè)網(wǎng)段適用于點(diǎn)對點(diǎn)互聯(lián)、出口對接這類場景用在多個(gè) VLAN 都需要網(wǎng)關(guān)的場合就很別扭端口利用率低。對比維度單臂路由子接口三層交換機(jī) VLANIF路由口直連網(wǎng)關(guān)位置路由器物理口上的子接口交換機(jī)內(nèi)部虛擬接口物理接口轉(zhuǎn)發(fā)性能受單鏈路與軟件轉(zhuǎn)發(fā)限制芯片轉(zhuǎn)發(fā)近似線速取決于設(shè)備是否需要 Trunk需要且要帶標(biāo)簽不需要網(wǎng)關(guān)就在本機(jī)不需要端口消耗1 個(gè)物理口承載全部 VLAN0虛擬接口每網(wǎng)段 1 口典型場景小型網(wǎng)絡(luò)、臨時(shí)實(shí)驗(yàn)、需要 NAT園區(qū)網(wǎng)核心/匯聚設(shè)備互聯(lián)、出口配置量中子接口逐個(gè)建低VLAN 建好順手配低選型我的建議很直接只要交換機(jī)支持三層就優(yōu)先上 VLANIF別為了看起來更像路由去刻意繞單臂路由除非你需要在這臺設(shè)備上做 NAT 或者你有現(xiàn)成的路由器閑著。單臂路由更適合當(dāng)學(xué)習(xí)手段——它能讓你非常直觀地看到 802.1Q 標(biāo)簽是怎么被終結(jié)的這個(gè)理解對后面做 Trunk 排錯(cuò)很有幫助。2.3 一個(gè)容易被忽略的前提三層交換機(jī)得允許路由這點(diǎn)吃過虧。有些型號的三層交換機(jī)出廠時(shí)全局路由功能是關(guān)著的VLANIF 配了地址、狀態(tài)也是 UP但display ip routing-table里只有直連網(wǎng)段跨網(wǎng)段死活不通。排查半天以為是網(wǎng)關(guān)配錯(cuò)其實(shí)是根本沒開轉(zhuǎn)發(fā)。配置前先在系統(tǒng)視圖敲display current-configuration | include routing看一眼沒有ip routing就補(bǔ)上。另外VLANIF 能否 UP取決于這個(gè) VLAN 里是否有處于 UP 狀態(tài)的物理端口——VLAN 建了但一個(gè)端口都沒加入、或者加入的端口全 downVLANIF 就是 down 的網(wǎng)關(guān)地址配了也不生效。這個(gè)現(xiàn)象在 ENSP 里特別常見因?yàn)楹芏嗤瑢W(xué)先建 VLAN、配 VLANIF最后才去接 PC中間那段時(shí)間display ip interface brief一看全是 down就開始懷疑人生。3. 在 ENSP 里把實(shí)驗(yàn)環(huán)境搭起來3.1 拓?fù)湟?guī)劃與地址分配表我用的是一套最小可驗(yàn)證的三層架構(gòu)一臺三層交換機(jī)作為核心承擔(dān)所有 VLAN 的網(wǎng)關(guān)一臺二層交換機(jī)作為接入只做 VLAN 劃分和 Trunk 上聯(lián)四臺 PC 分屬兩個(gè) VLAN每組兩臺方便驗(yàn)證同 VLAN 通、跨 VLAN 也要通。拓?fù)溥B接關(guān)系如下核心交換機(jī)的 GE0/0/1 接接入交換機(jī)的 GE0/0/24鏈路配成 Trunk接入交換機(jī)的 GE0/0/1、GE0/0/2 劃進(jìn) VLAN 10 接 PC1、PC2GE0/0/3、GE0/0/4 劃進(jìn) VLAN 20 接 PC3、PC4。設(shè)備接口類型 / VLANIP 地址網(wǎng)關(guān)核心交換機(jī)VLANIF10三層網(wǎng)關(guān)192.168.10.254/24-核心交換機(jī)VLANIF20三層網(wǎng)關(guān)192.168.20.254/24-核心交換機(jī)GE0/0/1Trunk放行 10、20--接入交換機(jī)GE0/0/24Trunk放行 10、20--接入交換機(jī)GE0/0/1、0/0/2AccessVLAN 10--接入交換機(jī)GE0/0/3、0/0/4AccessVLAN 20--PC1-VLAN 10192.168.10.1/24192.168.10.254PC2-VLAN 10192.168.10.2/24192.168.10.254PC3-VLAN 20192.168.20.1/24192.168.20.254PC4-VLAN 20192.168.20.2/24192.168.20.254地址規(guī)劃這里有個(gè)細(xì)節(jié)值得說網(wǎng)關(guān)地址我用的是.254而不是.1。這不是硬性規(guī)定純粹是運(yùn)維習(xí)慣——把.1留給服務(wù)器或者將來可能加的 VRRP 虛擬地址網(wǎng)關(guān)統(tǒng)一往高位放看配置文件的時(shí)候一眼能區(qū)分這是設(shè)備地址還是終端地址。你在自己項(xiàng)目里定好一套規(guī)則并堅(jiān)持下去比規(guī)則本身是什么重要得多。3.2 ENSP 本身的幾個(gè)坑先避開能省一小時(shí)ENSP 是依賴虛擬機(jī)跑設(shè)備鏡像的很多配置沒錯(cuò)但就是不通的詭異問題其實(shí)出在模擬器層。第一設(shè)備啟動是有順序的先把所有設(shè)備拖到工作區(qū)再統(tǒng)一啟動等全部變綠再開始配置。我見過太多次先啟動交換機(jī)、后啟動 PC結(jié)果 PC 的虛擬網(wǎng)卡沒掛上ping網(wǎng)關(guān)永遠(yuǎn)超時(shí)重啟 PC 立刻就好。第二PC 配置改完要點(diǎn)應(yīng)用只填數(shù)字不點(diǎn)應(yīng)用等于沒改這個(gè)低級錯(cuò)誤我至今偶爾還會犯。第三設(shè)備多了之后內(nèi)存吃緊交換機(jī)會隨機(jī)假死表現(xiàn)為命令行能敲但轉(zhuǎn)發(fā)不生效這時(shí)候把設(shè)備關(guān)掉重開比繼續(xù)排查更高效。第四如果先前裝過其他虛擬化軟件虛擬網(wǎng)卡可能沖突導(dǎo)致 ENSP 里設(shè)備起不來或 Cloud 連不通這種情況先把虛擬網(wǎng)卡清理干凈再裝。提示配置前先給每臺設(shè)備改個(gè)名字sysname Core-SW之類。ENSP 打開多個(gè)命令行窗口時(shí)標(biāo)題欄只顯示設(shè)備型號不看名字極容易在兩個(gè)窗口之間敲錯(cuò)命令把核心的配置敲到接入上——這個(gè)錯(cuò)誤排查起來特別費(fèi)勁因?yàn)閮蛇厗慰炊紱]毛病。3.3 終端側(cè)配置別小看網(wǎng)關(guān)這一欄ENSP 里的 PC 是個(gè)簡化終端雙擊打開后在基礎(chǔ)配置里填 IP、掩碼、網(wǎng)關(guān)。這一步最大的坑是只填了 IP 和掩碼忘了填網(wǎng)關(guān)?,F(xiàn)象非常好辨認(rèn)同 VLAN 內(nèi)互 ping 通跨 VLAN 一律超時(shí)而且在交換機(jī)上display arp看不到這臺 PC 的 ARP 記錄——因?yàn)樗鼔焊鶝]發(fā)過問網(wǎng)關(guān)的 ARP 請求。還有一個(gè)細(xì)節(jié)PC 的 MAC 地址在 ENSP 里是可以手動改的做 MAC 綁定、端口安全的實(shí)驗(yàn)時(shí)用得上。默認(rèn)情況下它是隨機(jī)生成的所以重啟設(shè)備后 MAC 會變別拿上次抓包里的 MAC 去對照這次的轉(zhuǎn)發(fā)結(jié)果會白折騰。4. 二層先打通Access 與 Trunk 的完整配置4.1 接入層VLAN 創(chuàng)建與端口劃分接入交換機(jī)的活兒很純粹建 VLAN把端口塞進(jìn)去。這里推薦用批量創(chuàng)建命令而不是一條條敲省事還不容易漏。Access-SW system-view [Access-SW] sysname Access-SW [Access-SW] vlan batch 10 20 [Access-SW] interface GigabitEthernet 0/0/1 [Access-SW-GigabitEthernet0/0/1] port link-type access [Access-SW-GigabitEthernet0/0/1] port default vlan 10 [Access-SW-GigabitEthernet0/0/1] quitGE0/0/2 同樣處理。VLAN 20 的兩個(gè)口把port default vlan改成 20。這里有個(gè)操作順序問題port link-type access必須在port default vlan之前敲因?yàn)槟J(rèn)端口類型是 HybridHybrid 下用的是port hybrid pvid vlan超過默認(rèn) VLAN 1 的 PVID 在某些版本上要先切類型才能設(shè)。反過來敲會報(bào)錯(cuò)報(bào)錯(cuò)信息還挺含糊新手容易卡在這兒。port default vlan這個(gè)命令同時(shí)干了兩件事把端口加入該 VLAN 的 untagged 列表以及把端口的 PVID 設(shè)成該 VLAN。這就是為什么接 PC 的口必須是 Access——PC 發(fā)出來的幀不帶標(biāo)簽交換機(jī)收到后按 PVID 打上 VLAN 10 的標(biāo)簽PC 自己完全不知道有標(biāo)簽這回事。4.2 Trunk 上聯(lián)放行列表與 PVID 的雙重校驗(yàn)兩臺交換機(jī)之間的互聯(lián)口必須配 Trunk而且兩端都要放行 VLAN 10 和 20。默認(rèn)情況下 Trunk 只放行 VLAN 1你不寫allow-pass跨交換機(jī)的同 VLAN 通信都不通更別說跨 VLAN 了。[Access-SW] interface GigabitEthernet 0/0/24 [Access-SW-GigabitEthernet0/0/24] port link-type trunk [Access-SW-GigabitEthernet0/0/24] port trunk allow-pass vlan 10 20 [Core-SW] interface GigabitEthernet 0/0/1 [Core-SW-GigabitEthernet0/0/1] port link-type trunk [Core-SW-GigabitEthernet0/0/1] port trunk allow-pass vlan 10 20這里要重點(diǎn)講PVID也就是 native VLAN這是 Trunk 排錯(cuò)里最容易翻車的地方。Trunk 口對每個(gè)幀的處理邏輯是如果幀帶的標(biāo)簽等于本口的 PVID出方向就剝掉標(biāo)簽發(fā)出去如果帶了別的 VLAN 標(biāo)簽就原樣帶著發(fā)。反方向收到無標(biāo)簽幀就打上 PVID 的標(biāo)簽。兩端 PVID 不一致會怎樣假設(shè) A 端 PVID 是 1B 端 PVID 是 10A 發(fā)一個(gè) VLAN 10 的幀時(shí)因?yàn)?PVID 是 1 所以帶著標(biāo)簽發(fā)出去B 收到帶標(biāo)簽的 VLAN 10 幀正常但如果是 B 往 A 發(fā)B 認(rèn)為 VLAN 10 是 native剝了標(biāo)簽發(fā)出去A 收到無標(biāo)簽幀按 PVID 1 打標(biāo)簽直接進(jìn)了 VLAN 1——于是 VLAN 10 的流量在 A 端全跑錯(cuò)地方了。所以我的習(xí)慣是互聯(lián) Trunk 的 PVID 保持默認(rèn)的 1兩端一致永遠(yuǎn)不要為了省標(biāo)簽去改它。真要做 PVID 修改比如對接某些只發(fā)無標(biāo)簽幀的設(shè)備兩端必須同步改改完立刻用display port vlan核對。這條命令會列出每個(gè)端口的 PVID 和允許通過的 VLAN 列表是二層排錯(cuò)的第一現(xiàn)場。4.3 二層打通了沒有三個(gè)驗(yàn)證命令配置完先別急著配三層把二層驗(yàn)證到位否則后面出問題你分不清是二層還是三層。[Access-SW] display vlan [Access-SW] display port vlan [Access-SW] display mac-addressdisplay vlan看每個(gè) VLAN 里有哪些端口重點(diǎn)確認(rèn) Trunk 口在 VLAN 10、20 的列表里都出現(xiàn)了且類型標(biāo)著 tagged。display port vlan看 PVID 和 Trunk 的允許列表。display mac-address是最有說服力的一條讓 PC1 ping 一下 PC2同 VLAN 跨交換機(jī)如果 MAC 表里能同時(shí)學(xué)到兩臺 PC 的 MAC 且都綁在正確的 VLAN 上說明二層轉(zhuǎn)發(fā)鏈路完全正常。學(xué)不到就只有兩種可能——PC 沒發(fā)幀網(wǎng)卡沒配置好或者幀被丟在了半路Trunk 沒放行。注意ENSP 里的 MAC 表有老化時(shí)間默認(rèn) 300 秒。你去查的時(shí)候可能剛好老化掉了看起來像沒學(xué)到??梢韵?ping 一次再去查或者干脆在 PC 上持續(xù) ping 著查。5. 三層網(wǎng)關(guān)落地VLANIF 配置與轉(zhuǎn)發(fā)驗(yàn)證5.1 核心交換機(jī)上的 VLAN 與 VLANIF核心交換機(jī)要做的第一件事是建 VLAN——注意即使核心上沒有任何物理端口屬于 VLAN 10你也必須建這個(gè) VLAN因?yàn)?VLANIF 接口是依附于 VLAN 存在的VLAN 不存在接口就建不出來。這是很多新手轉(zhuǎn)不過彎的地方以為我這兒沒接這個(gè) VLAN 的口干嘛要建結(jié)果是邏輯接口而非物理連接的思維沒建立起來。Core-SW system-view [Core-SW] sysname Core-SW [Core-SW] vlan batch 10 20 [Core-SW] interface Vlanif 10 [Core-SW-Vlanif10] ip address 192.168.10.254 24 [Core-SW-Vlanif10] quit [Core-SW] interface Vlanif 20 [Core-SW-Vlanif20] ip address 192.168.20.254 24 [Core-SW-Vlanif20] quit配完立刻驗(yàn)證接口狀態(tài)[Core-SW] display ip interface brief [Core-SW] display ip routing-tabledisplay ip interface brief里 VLANIF10 和 VLANIF20 的狀態(tài)應(yīng)該是 UP前提是前面 Trunk 已配好VLAN 里有活動端口。如果顯示 DOWN回到第 2.3 節(jié)說的兩點(diǎn)VLAN 里有沒有 UP 的物理口全局路由功能開沒開。路由表里應(yīng)該能看到 192.168.10.0/24 和 192.168.20.0/24 兩條 Direct 路由這是網(wǎng)關(guān)能轉(zhuǎn)發(fā)的前提。5.2 轉(zhuǎn)發(fā)過程驗(yàn)證從 ARP 到 ping 的完整鏈路所有 PC 的網(wǎng)關(guān)都指向?qū)?yīng)網(wǎng)段的.254然后從 PC1 ping PC3。這一次的轉(zhuǎn)發(fā)路徑是PC1 發(fā)現(xiàn)目標(biāo)跨網(wǎng)段ARP 請求 192.168.10.254 的 MAC核心交換機(jī) VLANIF10 回復(fù)自己的 MACPC1 把包發(fā)給核心核心查路由發(fā)現(xiàn) 192.168.20.0/24 在 VLANIF20重新封裝從 VLANIF20 發(fā)出去同時(shí) ARP 請求 192.168.20.1 的 MACPC3 回復(fù)回程包對稱地走一遍。驗(yàn)證的時(shí)候我一般分三步看這樣出問題能立刻定位[Core-SW] display arp [Core-SW] display mac-address vlan 10 [Core-SW] ping -a 192.168.10.254 192.168.20.1display arp是判斷網(wǎng)關(guān)有沒有被問到的關(guān)鍵。正常情況下你能看到 VLANIF10 下有 PC1、PC2 的 ARP 條目VLANIF20 下有 PC3、PC4 的而且類型是動態(tài)。如果只有一邊有說明另一邊的終端沒在發(fā) ARP八成是網(wǎng)關(guān)沒配或者配錯(cuò)段了。ping -a帶源地址 ping 是設(shè)備上最常用的自測手段從 192.168.10.254 去 ping 192.168.20.1能通就說明三層轉(zhuǎn)發(fā)和兩邊的 ARP 都正常問題一定在終端側(cè)。這里插一句容易忽略的VLANIF 的地址不要和終端地址沖突也不要重復(fù)規(guī)劃。ENSP 里復(fù)制粘貼配置的時(shí)候很容易把 20 段的地址粘到 10 段的 VLANIF 上display ip interface brief會提示地址沖突但如果你沒看現(xiàn)象就是跨網(wǎng)段 ping 有時(shí)通有時(shí)不通——因?yàn)?ARP 表里同一個(gè) IP 對應(yīng)了兩個(gè) MAC 在打架。這種時(shí)通時(shí)不通的問題最難查所以配完一定過一遍地址表。5.3 一個(gè)進(jìn)階但很實(shí)用的配置讓終端自動拿地址真實(shí)網(wǎng)絡(luò)里不可能每臺 PC 手動配 IP。三層交換機(jī)上開 DHCP可以按 VLANIF 分配不同網(wǎng)段的地址接上就能用。用接口地址池的方式最省事[Core-SW] dhcp enable [Core-SW] interface Vlanif 10 [Core-SW-Vlanif10] dhcp select interface [Core-SW-Vlanif10] dhcp server dns-list 114.114.114.114 [Core-SW-Vlanif10] dhcp server excluded-ip-address 192.168.10.250 192.168.10.253 [Core-SW-Vlanif10] quitdhcp select interface的意思是用這個(gè)接口的網(wǎng)段和掩碼作為地址池網(wǎng)關(guān)自動就是接口地址不用額外指定。excluded-ip-address把高位區(qū)間排除掉留給交換機(jī)自己的管理地址、AP 或者以后要加的 VRRP 虛擬地址這個(gè)習(xí)慣很值得養(yǎng)成——不留預(yù)留段將來想在網(wǎng)段里加設(shè)備只能改規(guī)劃。VLAN 20 照做一遍即可。如果 DHCP 服務(wù)器在別的地方不在這個(gè)三層交換機(jī)上就需要在 VLANIF 上配中繼先全局dhcp enable接口下dhcp select relay再dhcp-server-ip 服務(wù)器地址。中繼的原理是把 PC 的廣播 DHCP 請求轉(zhuǎn)成單播發(fā)給服務(wù)器服務(wù)器根據(jù)giaddr字段判斷該從哪個(gè)池子分配——所以服務(wù)器上的地址池必須能匹配到網(wǎng)關(guān)所在網(wǎng)段這一步配錯(cuò)現(xiàn)象是 PC 一直顯示正在獲取 IP但拿不到。6. 對照組單臂路由方案怎么配以及那些繞不開的細(xì)節(jié)6.1 子接口配置與 dot1q 終結(jié)想直觀感受 802.1Q 標(biāo)簽被終結(jié)的過程單臂路由是最好的教材。把核心交換機(jī)換成一個(gè)路由器路由器 GE0/0/0 接接入交換機(jī)的 Trunk 口然后在這個(gè)物理口上起兩個(gè)子接口[Router] interface GigabitEthernet 0/0/0.10 [Router-GigabitEthernet0/0/0.10] dot1q termination vid 10 [Router-GigabitEthernet0/0/0.10] ip address 192.168.10.254 24 [Router-GigabitEthernet0/0/0.10] arp broadcast enable [Router-GigabitEthernet0/0/0.10] quit [Router] interface GigabitEthernet 0/0/0.20 [Router-GigabitEthernet0/0/0.20] dot1q termination vid 20 [Router-GigabitEthernet0/0/0.20] ip address 192.168.20.254 24 [Router-GigabitEthernet0/0/0.20] arp broadcast enabledot1q termination vid 10告訴這個(gè)子接口收到帶 VLAN 10 標(biāo)簽的幀把標(biāo)簽剝掉交給我發(fā)出去的時(shí)候自動打上 VLAN 10 的標(biāo)簽。子接口本身沒有物理形態(tài)所以它的狀態(tài)跟隨父接口父接口 up 它就 up。6.2 那個(gè)必須敲的命令arp broadcast enablearp broadcast enable這條命令是我見過最多人漏掉的。子接口默認(rèn)不處理廣播報(bào)文而 ARP 請求恰恰是廣播目的 MAC 全 F。你不開這個(gè)開關(guān)路由器收到 PC 的 ARP 請求直接丟了網(wǎng)關(guān)永遠(yuǎn)不回 ARPPC 那邊就一直顯示解析失敗報(bào)錯(cuò)通常是請求超時(shí)或者無法訪問目標(biāo)主機(jī)。這個(gè)現(xiàn)象和網(wǎng)關(guān)地址配錯(cuò)的表現(xiàn)幾乎一樣但區(qū)分方法很簡單在路由器子接口上display arp看不到任何終端條目同時(shí)在交換機(jī)上抓包能看到 ARP 請求確實(shí)發(fā)到了 Trunk 口。確認(rèn)到這一步基本就是這條命令沒敲。原理性的解釋是子接口作為邏輯接口默認(rèn)只關(guān)心單播廣播被當(dāng)作無關(guān)流量處理掉必須顯式開啟才放行。6.3 兩種方案的實(shí)測差異與選用建議同樣的拓?fù)?、同樣的終端配置只換網(wǎng)關(guān)設(shè)備我做過對比幾十個(gè)包的時(shí)候兩者差別看不出來但如果做壓力測試ENSP 里可以用終端持續(xù)大包 ping 或者在真機(jī)上打流單臂路由的 CPU 占用會明顯上升延遲抖動也更大瓶頸就在那根上聯(lián)鏈路和軟件轉(zhuǎn)發(fā)上VLANIF 方案基本是平的因?yàn)檗D(zhuǎn)發(fā)在芯片里完成。場景特征推薦方案理由園區(qū)網(wǎng)、VLAN 數(shù)量多三層交換機(jī) VLANIF芯片轉(zhuǎn)發(fā)容量不受單鏈路限制需要 NAT / 出口上網(wǎng)單臂路由或?qū)S贸隹谠O(shè)備三層交換機(jī)的 NAT 能力有限教學(xué)演示、想看清標(biāo)簽處理單臂路由802.1Q 終結(jié)過程直觀可見臨時(shí)實(shí)驗(yàn)、設(shè)備有限單臂路由一臺路由器就能撐起多個(gè)網(wǎng)段對可靠性有要求VLANIF VRRP網(wǎng)關(guān)可以雙機(jī)冗余說句實(shí)在話單臂路由在真實(shí)項(xiàng)目里的出場率已經(jīng)很低了更多是作為過渡方案或者學(xué)習(xí)手段。但它的配置經(jīng)驗(yàn)并不會浪費(fèi)——你理解了子接口怎么終結(jié)標(biāo)簽、ARP 為什么需要顯式放行回頭看 VLANIF 的行為就一目了然VLANIF 天然知道自己屬于哪個(gè) VLAN不需要終結(jié)這個(gè)動作也不需要額外開廣播因?yàn)樗?VLAN 原生的三層接口。這種對比式的理解比死記命令牢固得多。7. 排查實(shí)錄從完全不通到通但很慢7.1 分層排查的固定套路配置出問題的時(shí)候最忌亂改。我的習(xí)慣是按 OSI 從下往上每層用固定命令確認(rèn)絕不跳步層級檢查動作判斷標(biāo)準(zhǔn)常見問題物理/接口display interface brief端口 UP、雙工速率正常線沒接、端口被 shutdown二層 VLANdisplay vlan/display port vlan端口歸入正確 VLAN、Trunk 放行Access 誤配、Trunk 未放行二層 MACdisplay mac-address終端 MAC 學(xué)在正確 VLANPVID 不一致導(dǎo)致跑錯(cuò) VLAN三層接口display ip interface briefVLANIF UP 且有地址VLAN 內(nèi)無活動端口、路由未開三層 ARPdisplay arp有終端的動態(tài)條目終端沒配網(wǎng)關(guān)、子接口未開廣播三層路由display ip routing-table直連網(wǎng)段存在地址規(guī)劃重疊、掩碼錯(cuò)策略層檢查 ACL / 端口隔離無攔截規(guī)則ACL 誤命中、端口隔離按這個(gè)表走一遍95% 的問題能在五分鐘內(nèi)鎖定。真正難的是那些每層都正常但就是不通的情況往下看。7.2 高頻問題速查表現(xiàn)象最可能的原因快速驗(yàn)證與處理同 VLAN 通跨 VLAN 全超時(shí)終端未配網(wǎng)關(guān)看 PC 配置頁網(wǎng)關(guān)欄是否填了跨 VLAN 超時(shí)交換機(jī)display arp無條目終端根本沒發(fā) ARP檢查網(wǎng)關(guān)地址是否與終端同網(wǎng)段VLANIF 顯示 DOWNVLAN 內(nèi)無 UP 端口 / 未開路由display vlan核對補(bǔ)ip routing單臂路由下發(fā) ARP 一直解析失敗子接口未開arp broadcast enable補(bǔ)命令立即生效跨交換機(jī)同 VLAN 不通Trunk 未放行該 VLANport trunk allow-pass vlan xx部分 VLAN 通、部分不通Trunk PVID 兩端不一致display port vlan對比兩端ping 前幾個(gè)通后全丟MAC 表或 ARP 老化 / 地址沖突display arp看有無重復(fù) IP能 ping 通但傳文件很慢單臂路由瓶頸、MTU 不一致?lián)Q VLANIF 方案核對 MTU換個(gè)終端就不通ACL、端口安全、端口隔離查接口下的策略配置ENSP 里配置全對但完全不轉(zhuǎn)發(fā)設(shè)備假死 / PC 網(wǎng)卡未掛載關(guān)設(shè)備重開重新點(diǎn)應(yīng)用7.3 幾個(gè)文檔里不會寫的獨(dú)家經(jīng)驗(yàn)關(guān)于通但慢遇到跨 VLAN 能 ping 通、但業(yè)務(wù)卡頓的先看是不是走了單臂路由再看鏈路是不是協(xié)商成了半雙工。ENSP 里有時(shí)候手工指定的速率雙工和實(shí)際不符display interface里寫著 Half 就會發(fā)現(xiàn)。真機(jī)上更常見的是網(wǎng)線質(zhì)量或者光模塊問題表現(xiàn)為大量 CRC 錯(cuò)誤display interface的 error 計(jì)數(shù)會漲。關(guān)于 ACL 誤傷三層交換機(jī)上如果配了 ACL 掛在 VLANIF 的入方向很容易把網(wǎng)關(guān)自己的 ARP 或者終端之間的流量攔掉。現(xiàn)象是配 ACL 之前好的配完就不通了。排查方法是在 VLANIF 下先undo traffic-filter inbound試一下能通就是 ACL 的問題再逐條加回去定位是哪條規(guī)則太寬或者順序不對。ACL 是從上往下匹配第一條匹配就執(zhí)行很多人把 permit 寫在 deny 后面等于沒寫。關(guān)于掩碼的坑ip address 192.168.10.254 24和ip address 192.168.10.254 255.255.255.0在設(shè)備上等價(jià)但如果你手滑寫成192.168.10.254 255.255.0.0這個(gè) VLANIF 就會認(rèn)為 192.168.0.0/16 都是直連跨網(wǎng)段的包全被當(dāng)成同網(wǎng)段做 ARP 去了現(xiàn)象極其詭異。配完一定用display ip interface brief掃一眼掩碼長度。關(guān)于驗(yàn)證順序我的固定流程是先用ping -a在設(shè)備上測排除終端問題再用 PC 測驗(yàn)證端到端。設(shè)備上通了 PC 不通問題一定在終端或接入鏈路設(shè)備上就不通問題在網(wǎng)關(guān)或路由。這個(gè)二分法能把排查范圍瞬間砍一半。8. 往上再走一步多 VLAN、跨設(shè)備與冗余網(wǎng)關(guān)8.1 從兩個(gè) VLAN 擴(kuò)到幾十個(gè) VLAN 時(shí)的組織方式兩個(gè) VLAN 手配還行幾十個(gè)就得上點(diǎn)方法了。第一VLAN 編號和網(wǎng)段做映射規(guī)則比如 VLAN 10 對應(yīng) 192.168.10.0/24VLAN 20 對應(yīng) 192.168.20.0/24第三段和 VLAN ID 保持一致看地址就知道屬于哪個(gè) VLAN排錯(cuò)時(shí)省大量時(shí)間。第二Trunk 上用port trunk allow-pass vlan all還是逐個(gè)列出實(shí)驗(yàn)環(huán)境無所謂生產(chǎn)環(huán)境我更傾向明確列出因?yàn)?all 會把所有 VLAN 的廣播都帶過去VLAN 多了以后不必要的泛洪很可觀。第三接入交換機(jī)上的端口配置可以用端口組批量下發(fā)省得一個(gè)個(gè)敲[Access-SW] port-group group-member GigabitEthernet 0/0/1 to GigabitEthernet 0/0/4 [Access-SW-port-group] port link-type access [Access-SW-port-group] port default vlan 10批量操作的風(fēng)險(xiǎn)是一錯(cuò)全錯(cuò)所以下發(fā)前先display current-configuration interface確認(rèn)這些口原來是干凈的別把上聯(lián)口誤加進(jìn)去——上聯(lián)口被改成 Access 然后塞進(jìn) VLAN 10整網(wǎng)就斷了這種事故我親眼見過。8.2 雙上行與鏈路聚合避免單點(diǎn)核心和接入之間如果只連一根線這根線或者對應(yīng)端口出問題整個(gè)接入層就失聯(lián)了。真機(jī)項(xiàng)目里通常做雙上行加鏈路聚合Eth-Trunk把兩根物理線捆成一條邏輯鏈路既有帶寬疊加也有冗余。ENSP 里的配置大概是[Core-SW] interface Eth-Trunk 1 [Core-SW-Eth-Trunk1] port link-type trunk [Core-SW-Eth-Trunk1] port trunk allow-pass vlan 10 20 [Core-SW-Eth-Trunk1] mode lacp-static [Core-SW-Eth-Trunk1] quit [Core-SW] interface GigabitEthernet 0/0/1 [Core-SW-GigabitEthernet0/0/1] eth-trunk 1兩端都要建 Eth-Trunk、加入成員口模式保持一致靜態(tài) LACP 或手工負(fù)載分擔(dān)。這里的關(guān)鍵是成員口的速率、雙工、VLAN 配置必須一致不一致的端口不會被選進(jìn)聚合組display eth-trunk 1能看到每個(gè)成員口的狀態(tài)是 Selected 還是 Unselect。如果只 Selected 了一個(gè)先去查兩端的速率雙工是不是一樣。8.3 網(wǎng)關(guān)冗余VRRP 讓跨 VLAN 通信不怕單機(jī)故障單臺三層交換機(jī)做網(wǎng)關(guān)它掛了所有 VLAN 都出不去。VRRP 的思路是兩臺交換機(jī)都配同一網(wǎng)段的地址作為真實(shí)地址再共同維護(hù)一個(gè)虛擬 IP 和虛擬 MAC終端把網(wǎng)關(guān)指向虛擬 IP。主設(shè)備正常時(shí)由它響應(yīng) ARP 并轉(zhuǎn)發(fā)主設(shè)備故障時(shí)備設(shè)備在幾秒內(nèi)接管。[Core-SW-A] interface Vlanif 10 [Core-SW-A-Vlanif10] vrrp vrid 10 virtual-ip 192.168.10.1 [Core-SW-A-Vlanif10] vrrp vrid 10 priority 120 [Core-SW-A-Vlanif10] vrrp vrid 10 preempt-mode timer delay 20 [Core-SW-B] interface Vlanif 10 [Core-SW-B-Vlanif10] vrrp vrid 10 virtual-ip 192.168.10.1 [Core-SW-B-Vlanif10] vrrp vrid 10 priority 100優(yōu)先級默認(rèn) 100大的當(dāng)主。preempt-mode timer delay 20是延遲搶占防止設(shè)備反復(fù)重啟導(dǎo)致主備來回切換——這個(gè)延時(shí)在鏈路不穩(wěn)定的場景里非常必要。驗(yàn)證用display vrrp能看到 Master/Backup 角色和狀態(tài)切換記錄。設(shè)計(jì)時(shí)把兩組 VLAN 的主備角色交叉開VLAN 10 以 A 為主、VLAN 20 以 B 為主這樣兩臺設(shè)備都在干活不是一臺閑著——這就是常說的負(fù)載分擔(dān)式冗余。把這一套都想明白之后回頭看不同 VLAN 間通信這件事它其實(shí)是一條從二層隔離到三層轉(zhuǎn)發(fā)、從單機(jī)配置到冗余設(shè)計(jì)的完整鏈條。我自己的體會是配置命令從來不是難點(diǎn)真正的門檻在于你腦子里有沒有那張包從 PC1 出發(fā)到 PC3 收到中間經(jīng)歷了什么的圖。這張圖建起來看到任何不通的現(xiàn)象你都能推演出它斷在哪一環(huán)。