議綜合練習:從RIPv2配置到路由防環(huán)與排障實戰(zhàn))
1. 實驗背景RIP協(xié)議綜合練習到底在練什么以前帶新人做路由協(xié)議實驗我最喜歡讓他們先碰RIP協(xié)議。別看這協(xié)議老得掉渣距離矢量那套“聽鄰居說、算跳數(shù)、定期廣播”的玩法恰恰是理解所有動態(tài)路由協(xié)議的底座。這份rip綜合練習不是把router rip敲一遍就收工而是要把防環(huán)、匯總、默認路由、路由過濾、排障這些點串起來。練完之后你會真切地感受到一條BGP路由背后那些“從哪聽說、怎么播出去、斷了怎么收回來”的原始邏輯。適合剛學完基礎路由的伙伴也適合想在入網前把路由協(xié)議底子打實的同學。1.1 為什么兜兜轉轉還是要回來練RIPRIPRouting Information Protocol路由信息協(xié)議是最典型的距離矢量協(xié)議它靠跳數(shù)選路最大有效跳數(shù)是1516就代表不可達。把規(guī)則抽出來看配置命令非常簡單啟用進程、指定版本、宣告直連網絡。但正是這份簡單讓你有機會把注意力放在路由更新、環(huán)路抑制、計時器這些公共機制上。你在RIP里能想明白“為什么路由表里會有兩條等價路徑”“為什么斷了鏈路之后不是立刻消失”“為什么有人會把16跳說成毒路由”這些經驗搬到OSPF、BGP里照樣成立。綜合練習和單點驗證不一樣。單點驗證只是確認某條命令能生效綜合練習要求你在一張完整拓撲里同時處理多類問題。比如RIPv2的自動匯總要不要關默認路由怎么注入被動接口加在哪路由過濾和offset-list會影響誰。這些問題單獨拎出來都不難一旦疊加就能逼著你把路由協(xié)議從“背命令”變成“看邏輯”。1.2 練習環(huán)境與拓撲規(guī)劃先說環(huán)境。我習慣用GNS3掛Cisco IOS鏡像或者直接用華為eNSP里的AR路由器兩者都行。只要你把接口編號和命令對應起來結論完全通用。模擬器之外建議開一個Wireshark專門抓路由器之間的RIP報文后面會講到怎么用。別用純PackerTracer的簡化模式有些debug和抓包行為跟真實IOS差異太大容易誤導。這一輪綜合練習用4臺路由器組成一條主干鏈R1和R4各自掛Loopback口模擬終端網段網絡規(guī)模不大但足夠把RIP該看的都看一遍。設備接口IP地址說明R1G0/0/0192.168.12.1/24連接R2R1Loopback010.1.1.1/24模擬LAN1R2G0/0/0192.168.12.2/24連接R1R2G0/0/1192.168.23.2/24連接R3R3G0/0/0192.168.23.3/24連接R2R3G0/0/1192.168.34.3/24連接R4R4G0/0/0192.168.34.4/24連接R3R4Loopback010.4.1.1/24模擬LAN2R4Loopback110.4.2.1/24模擬LAN3這樣的規(guī)劃有一個很關鍵的點10.0.0.0/8這個主類網絡被192.168.0.0/16隔開了R1和R4各有一堆10.x網段正好用來演示RIP自動匯總的坑。如果手上只有三臺設備就把R4的兩個Loopback挪到R3上主干鏈路改成R1-R2-R3練習重點一樣能保住。2. 動手前先把距離矢量的關鍵原理捋一遍RIP規(guī)則少但每條規(guī)則都牽一發(fā)動全身。配置之前不把這些東西理順遇到路由不通你只能瞎試。2.1 路由是怎么從鄰居嘴里聽來的距離矢量的名字說明了一切每臺路由器手里只有“去某個目的地的方向和距離”沒有全網地圖。它從鄰居那里聽說一條路由后會查一下自己路由表如果這條路由是自己的直連或已有metric更小的路由就忽略如果metric更小就用新的替換如果metric相同就加入形成等價負載分擔。這個“收到通告、比較跳數(shù)、決定替換”的循環(huán)每30秒來一遍所以RIP對拓撲變化的反應不如OSPF快。RIP的跳數(shù)計算也很有意思。直連網絡自己知道不會算成1跳從鄰居學來后每經過一臺路由器加1跳超過15就視為不可達。這也是為什么RIP不適合作大網協(xié)議。在實驗室里你可以故意讓一臺路由器上連續(xù)寫一大堆RIP鄰居把跳數(shù)頂?shù)?6體會“不可達”的含義這是安全的實驗環(huán)境才能干的活兒。2.2 防環(huán)三件套水平分割、毒性反轉、觸發(fā)更新路由環(huán)路是距離矢量協(xié)議的老毛病。A告訴B一條路B又原樣告訴AA聽著聽著就覺得“下一跳還能走”結果鏈路一斷就繞圈。RIP針對這個問題上了三道保險。水平分割的規(guī)則是從哪個接口學到的路由不再從這個接口通告回去。這能在絕大多數(shù)情況下避免兩臺路由器之間的雙向誤導。毒性反轉更進一步不僅不說回去還反著通告metric 16明確告訴對方“這條路已經廢了”。觸發(fā)更新則是當拓撲變化時不等30秒立刻廣播最新狀態(tài)讓壞消息跑得比好消息快。實際配置中Cisco默認開水平分割你不需要在每個接口下敲命令但要能認出來特別是當你為了做實驗關掉它之后路由立刻出問題那就是防環(huán)機制被破壞了。2.3 RIPv1與RIPv2綜合練習為什么選v2既然做綜合練習當然用RIPv2。它和v1最大的差別在子網掩碼的攜帶方式。RIPv1基于類別地址不攜帶掩碼所以遇到不連續(xù)子網、可變長子網掩碼VLSM和CIDR就抓瞎。RIPv2在報文里帶上了掩碼和下一跳還支持組播更新和認證。對比項RIPv1RIPv2更新方式廣播255.255.255.255組播224.0.0.9子網掩碼不帶帶VLSM/CIDR不支持支持認證不支持支持明文/MD5自動匯總必開可關一句話v1是古董v2是能進生產環(huán)境的最小可用版本。后面的配置全部以RIPv2為例。3. 綜合練習配置全流程以Cisco IOS為例下面把整張拓撲的配置過一遍。命令以Cisco IOS為主Huawei的差異我會在文章最后單獨列。3.1 基礎IP與環(huán)回接口準備先把所有接口地址配好并確認物理鏈路up。R1的基礎配置長這樣R1(config)# interface GigabitEthernet0/0/0 R1(config-if)# ip address 192.168.12.1 255.255.255.0 R1(config-if)# no shutdown R1(config-if)# interface Loopback0 R1(config-if)# ip address 10.1.1.1 255.255.255.0R2、R3照著地址表配R4除了G0/0/0之外還要配兩個LoopbackR4(config)# interface GigabitEthernet0/0/0 R4(config-if)# ip address 192.168.34.4 255.255.255.0 R4(config-if)# no shutdown R4(config-if)# interface Loopback0 R4(config-if)# ip address 10.4.1.1 255.255.255.0 R4(config-if)# interface Loopback1 R4(config-if)# ip address 10.4.2.1 255.255.255.0配完后用show ip interface brief檢查所有物理接口都應該是up/upLoopback本來就是up不用管線纜。3.2 啟用RIPv2并理解network命令RIP的啟動配置非常短但很多人恰恰死在network語句上。以R1為例R1(config)# router rip R1(config-router)# version 2 R1(config-router)# no auto-summary R1(config-router)# network 192.168.0.0 R1(config-router)# network 10.0.0.0這里的network命令不是“宣告某一條具體路由”而是“告訴RIP在哪些接口上跑起來”。更重要的是它必須寫主類網絡地址。你不能寫network 192.168.12.0要寫network 192.168.0.0不能寫network 10.1.1.0要寫network 10.0.0.0。因為RIP的進程要拿你寫的網絡號去匹配接口匹配上之后這個接口就會發(fā)RIP更新同時把該接口對應的直連路由交給RIP去通告。寫了主類網絡它才會把所有落在該主類網段內的接口都選進來。R2和R3只需要宣告192.168.0.0因為它們的接口全在這個主類網絡里。R4除了192.168.0.0還要宣告10.0.0.0把兩個Loopback納入RIP。3.3 關閉自動匯總用路由匯總給路由表瘦身為什么RIPv2默認自動匯總要我強制加一句no auto-summary因為這版拓撲里10.0.0.0/8被192.168.0.0/16一分為二。如果不關自動匯總R1會把自己的10.1.1.0/24匯總成10.0.0.0/8發(fā)給R2R4也會把自己的10.4.1.0/24和10.4.2.0/24匯總成10.0.0.0/8發(fā)給R3。兩邊都往外發(fā)同一個10.0.0.0/8R1和R4收到后根本分不清這個匯總到底指向哪一側路由就會黑掉。先把所有路由器上的no auto-summary配完等路由表正常了再玩手工匯總。手工匯總的好處是讓路由表更精簡比如R4兩個Loopback分別是10.4.1.0/24和10.4.2.0/24它們能精確匯總成10.4.0.0/16。這時在R4連接R3的接口上做R4(config)# interface GigabitEthernet0/0/0 R4(config-if)# ip summary-address rip 10.4.0.0 255.255.0.0配完后R3、R2、R1的路由表里就不再是兩個/24而是一條10.4.0.0/16。注意手工匯總命令是針對某個接口的不會自動涵蓋你后來新建的所有10.x網段只有落在10.4.0.0/16范圍內的路由才會被匯總。這是練習里最容易被忽略的細節(jié)。3.4 被動接口與默認路由注入RIP默認會向啟用了進程的所有接口周期發(fā)更新。像Loopback這種模擬終端網段的接口后面根本沒有路由器發(fā)RIP報文純屬浪費甚至在某些真實設備上還會招來安全問題。這時用被動接口把它關掉R1(config)# router rip R1(config-router)# passive-interface Loopback0 R4(config)# router rip R4(config-router)# passive-interface Loopback0 R4(config-router)# passive-interface Loopback1被動接口不發(fā)送RIP更新但仍然接受更新也仍然會宣告該接口的直連路由這個點很多人會記混。默認路由的注入是另一道硬菜。假設R3是公司網絡出口外網方向我們不接真設備給R3造一條靜態(tài)默認路由R3(config)# ip route 0.0.0.0 0.0.0.0 Null0 R3(config)# router rip R3(config-router)# default-information originate如果不寫default-information originateRIP不會自動傳播靜態(tài)默認路由R1和R4沒有外網方向的出路。加上這條后R3會把0.0.0.0/0作為一條RIP路由通告出去全網都知道“去外網找R3”。做實驗時可以先用Null0當下一跳理解機制生產環(huán)境記得改成指向真實出口設備的下一跳不然流量會被直接丟棄。3.5 路由過濾與度量調整的進階配置基礎通了之后建議在R2上做一次路由過濾模擬“不想讓某一臺內網設備學習到某個網段”的場景。例如讓R2不把10.4.0.0/16放進路由表R2(config)# access-list 10 deny 10.4.0.0 0.0.255.255 R2(config)# access-list 10 permit any R2(config)# router rip R2(config-router)# distribute-list 10 in GigabitEthernet0/0/1這條distribute-list是入方向過濾R2從G0/0/1收到的RIP更新里匹配10.4.0.0/16的路由會被丟掉。另一個常用手段是offset-list用來給特定路由增加額外metric模擬“這條路更繞”的效果。比如想讓R1去往10.4.0.0/16的路由metric被人為抬高R2(config)# access-list 20 permit 10.4.0.0 0.0.255.255 R2(config)# router rip R2(config-router)# offset-list 20 in 3 GigabitEthernet0/0/1這樣R2從R3學到的10.4.0.0/16metric會被多加3。實際項目中常用來實現(xiàn)主備路徑切換而不是依賴修改協(xié)議默認metric。別把這些過濾和偏移一次性全加上一條一條驗證否則你根本分不清是策略攔了路由還是協(xié)議本身出了問題。4. 聯(lián)調實測從路由表看到抓包把協(xié)議跑明白配置只是第一步RIP綜合練習的重頭戲在聯(lián)調。4.1 show命令三板斧協(xié)議狀態(tài)、路由表、路由數(shù)據(jù)庫第一板斧是show ip protocols看RIP進程的整體狀態(tài)。正常會顯示版本是RIPv2、更新計時器30/180/180/240、被動接口列表、以及Automatic network summarization is not in effect如果是v1或沒關自動匯總這里會是in effect。第二板斧是show ip route rip只看RIP學來的路由。R2上應該類似這樣R 10.1.1.0/24 [120/1] via 192.168.12.1, 00:00:09, GigabitEthernet0/0/0 R 10.4.0.0/16 [120/2] via 192.168.23.3, 00:00:11, GigabitEthernet0/0/1路由代碼R代表RIP120是RIP的管理距離方括號里第二個數(shù)字是metric。如果你看到的是10.0.0.0/8而不是明細說明自動匯總沒關干凈回頭檢查no auto-summary。第三板斧是show ip rip database它顯示RIP進程自己維護的數(shù)據(jù)庫比show ip route更細能看到哪些路由正在被通告。查路由不通問題時三板斧輪流看基本能定位是進程沒跑、路由沒學進來還是學了但沒進全局路由表。4.2 debug ip rip與Wireshark配合看更新debug ip rip是觀察RIP實時行為的利器。開在R1上會看到類似RIP: sending v2 update to 224.0.0.9 via GigabitEthernet0/0/0 (192.168.12.1) 10.1.1.0/24 via 0.0.0.0, metric 1, tag 0 RIP: received v2 update from 192.168.23.3 on GigabitEthernet0/0/1 10.4.0.0/16 via 0.0.0.0, metric 2, tag 0看到metric 16的更新別慌那叫毒路由是協(xié)議在主動告訴你某條路由不可達。抓包時記得在路由器之間鏈路上同時抓兩個接口的報文Wireshark過濾器寫rip即可。重點看三個字段IP地址與掩碼對應的是哪條路由下一跳是不是0.0.0.0metric是多少。RIPv2正常會發(fā)往224.0.0.9的組播UDP 520端口如果抓到的是廣播255.255.255.255說明某臺設備還在跑v1。4.3 斷鏈演練觀察RIP的收斂與毒路由綜合練習必須人為搞一次故障。在R2上把通往R3的接口shutdownR2(config)# interface GigabitEthernet0/0/1 R2(config-if)# shutdown同一時刻在R1上打開debug你會更快看到R2發(fā)來metric 16的毒路由通知10.4.0.0/16已經不可達。這是因為R2在G0/0/1上原先是R3學路由的接口鏈路一斷它立即觸發(fā)更新用毒性反轉告訴R1“別再從我去10.4了”。此時在R1上執(zhí)行show ip route 10.4.1.1應該已經沒有原本的RIP路由。這和直連路由消失是兩碼事你要觀察的是“動態(tài)路由協(xié)議如何把壞消息盡快擴散”。等若干秒后再把R2的接口no shutdownR1又能慢慢學回10.4.0.0/16。如果這個過程中出現(xiàn)路由更新來回橫跳多半是水平分割或計時器配置出了問題。4.4 調整計時器讓實驗不被30秒拖死RIP默認30秒發(fā)一次更新等它收斂真的能急死人。實驗環(huán)境可以全局調快R2(config)# router rip R2(config-router)# timers basic 10 30 30 60這個命令依次是update、invalid、holddown、flush每10秒發(fā)更新30秒判定無效30秒進入抑制60秒刪除。所有參與實驗的路由器都要改成一樣的否則一臺10秒發(fā)、一臺30秒發(fā)收斂過程會變得很怪。生產設備上沒事別動這些計時器RIP本來收斂就慢調錯會讓網絡更不穩(wěn)。實驗的目的只是把30秒周期壓縮到一個能忍受的節(jié)奏觀察觸發(fā)更新和毒路由的效果會更直觀。5. 常見問題與排障技巧速查綜合練習最怕的不是配錯而是不知道怎么排查。這里把我踩過的、帶新人時新人反復犯的坑整理成一張速查表。5.1 一張表看懂最常見的RIP綜合練習故障癥狀常見原因排查動作路由表里只有10.0.0.0/8沒有10.x明細自動匯總沒關所有RIPv2路由器的RIP視圖下配置no auto-summary全網能通但R1學不到10.4.x的路由R4沒有宣告10.0.0.0檢查network命令是否包含Loopback所在主類網絡路由表一直出現(xiàn)且消失來回抖動雙路徑下水平分割被關查看接口配置確認沒有no ip split-horizondebug里收到metric 16路由正被毒性反轉/不可達確認這是鏈路故障或策略導致處理根源而不是刪路由默認路由全網看不到沒有default-information originateR3加靜態(tài)默認路由再在RIP視圖下開啟下發(fā)命令手工匯總后個別網段不通匯總范圍蓋住了不該蓋的路由用show ip rip database核對匯總前后明細調整掩碼抓不到RIP報文模擬器接口或ACL過濾了UDP 520檢查接口enabled關掉設備ACLWireshark過濾寫法改成udp.port5205.2 三個讓綜合練習含金量翻倍的操作習慣第一個習慣是每做一步配置前都先存一份show running-config和show ip route出了故障方便比對前后差異。第二個習慣是只改一個變量同時觀察show ip protocols和路由表變化別把過濾、匯總、改metric一次全上。第三個習慣是給所有模擬接口寫description特別是在多臺設備的綜合練習里否則你根本分不清G0/0/1另一頭是誰排查時全靠猜。6. 從綜合練習到生產環(huán)境RIP還能玩出什么花如果你已經能把上面的綜合練習完整跑通下一步可以在這個基礎上繼續(xù)疊加讓練習真正接近真實項目的復雜度。6.1 認證、offset-list與distribute-list的組合練習RIPv2支持認證這在模擬器上常常被人忽略。給R2和R3之間的鏈路配置MD5認證可以讓你理解“為什么兩臺設備路由協(xié)議版本和參數(shù)都一樣卻死活學不到路由”。R2(config)# key chain RIPKEY R2(config-keychain)# key 1 R2(config-keychain-key)# key-string lab123 R2(config)# interface GigabitEthernet0/0/0 R2(config-if)# ip rip authentication key-chain RIPKEY R2(config-if)# ip rip authentication mode md5注意兩端key chain的名稱可以不一致但key-string要一致認證模式也要一致。把offset-list、distribute-list、key-chain放到同一個練習里就是一個小型的“RIP路由策略綜合項目”。開始之前寫清楚業(yè)務目標哪臺設備不能看到哪個網段、去哪條路徑希望更優(yōu)、哪些鄰居必須認證。目標越明確練習越接近生產。6.2 Cisco與Huawei常用命令對照很多同學公司用的是華為設備家里練的是Cisco模擬器兩邊命令容易混。這里列幾個最常被問到的對照操作Cisco IOSHuawei VRP進入RIP進程router riprip 1指定版本version 2version 2關閉自動匯總no auto-summaryundo summary宣告網絡network 192.168.0.0network 192.168.0.0下發(fā)默認路由default-information originatedefault-route originate被動接口passive-interface GigabitEthernet0/0/0silent-interface GigabitEthernet0/0/0手工匯總ip summary-address rip 10.4.0.0 255.255.0.0summary-address 10.4.0.0 255.255.0.0查看協(xié)議狀態(tài)show ip protocolsdisplay rip 1細節(jié)以你設備上的版本為準但框架基本一致。練習時先認清“這步在干什么”再去找對應命令比死記好用得多。6.3 延伸建議學完RIP之后再補什么RIP這套綜合練習的價值在于讓你深刻理解距離矢量協(xié)議的通告、防環(huán)、收斂與策略。下一步建議直接上OSPF對比鏈路狀態(tài)協(xié)議怎么維護全網拓撲、怎么用LSA洪泛代替周期性廣播以及為什么OSPF收斂更快。回頭再看RIP你會理解前輩們?yōu)槭裁捶且鲞@么多防環(huán)設計。再往后就是BGP你會發(fā)現(xiàn)那些“路徑屬性、選路規(guī)則、策略控制”的概念在RIP的metric、offset-list、distribute-list里都能找到影子。我個人實際帶練習的體會是RIP綜合練習最值錢的部分不是命令而是故障處理時的觀察順序。先看協(xié)議狀態(tài)再看路由數(shù)據(jù)庫最后抓包驗證這個習慣一旦養(yǎng)成后面接觸任何路由協(xié)議都能少走彎路。你把這次練習里的配置、抓包、排障記錄都留好等哪天帶新人或者自己被生產環(huán)境的路由問題難住時這套東西就是最扎實的底子。