孫光懿,繳 健
(1.天津音樂學(xué)院網(wǎng)絡(luò)安全和信息化辦公室,天津 300171;2.天津市教育委員會教育綜合服務(wù)中心,天津 300191)
現(xiàn)實(shí)中的網(wǎng)絡(luò)通常是由多自治系統(tǒng)構(gòu)建而成,而在自治系統(tǒng)內(nèi)部往往運(yùn)行著多種動態(tài)路由協(xié)議.眾所周知,動態(tài)路由協(xié)議,如:RIP、IGRP、OSPF和ISIS等,在運(yùn)行時均會以各自的方式產(chǎn)生路由更新.例如:RIP的路由更新是以周期性的方式產(chǎn)生的,而OSPF的路由更新不僅可以以周期性的方式產(chǎn)生,而且還可以以觸發(fā)的方式產(chǎn)生.需要讀者明確的是,路由更新對路由器能否做出合理的路由決策起決定作用,且其傳遞只在成功建立鄰接關(guān)系的路由器之間進(jìn)行.雖然路由更新對路由決策至關(guān)重要,但管理者如不對其進(jìn)行合理控制和調(diào)整,勢必會對網(wǎng)絡(luò)的整體性能造成影響.原因如下:其一,大量的路由更新會搶占路由器CPU資源和用戶數(shù)據(jù)帶寬;其二,在雙向路由重分發(fā)的網(wǎng)絡(luò)中,路由更新有可能造成路由反饋或路由環(huán)路現(xiàn)象的出現(xiàn);其三,出于安全性的考慮需要禁止對特定的路由更新進(jìn)行通告.因此,網(wǎng)絡(luò)管理者在構(gòu)建網(wǎng)絡(luò)的過程中,有必要使用相關(guān)技術(shù)對動態(tài)路由協(xié)議產(chǎn)生的路由更新進(jìn)行過濾.
被動接口技術(shù)的設(shè)計(jì)初衷,就是為了有效防止網(wǎng)絡(luò)中的其他路由器動態(tài)學(xué)習(xí)到本路由器的路由更新[1].無論路由器運(yùn)行的是哪類動態(tài)路由協(xié)議,一旦某個接口被設(shè)置為被動接口,那么該接口將不會對外發(fā)送任何路由更新.特殊情況下,如果有個別路由器需要從該接口接收路由更新,那么可通過手動指定鄰居路由器來實(shí)現(xiàn).設(shè)置后,該接口只會將路由更新發(fā)送給所指定的鄰居路由器.需要注意的是:不同種類的動態(tài)路由協(xié)議,被動接口技術(shù)的工作方式也不近相同,例如在RIP路由協(xié)議中設(shè)置被動接口后,雖然該接口不能以廣播或組播的方式對外發(fā)送任何路由更新,但該接口還可從鄰接路由器接收路由更新,而在OSPF路由協(xié)議中設(shè)置被動接口后,該接口將不會發(fā)送和接收任何路由更新;與上述2類路由協(xié)議不同的是,在EIGRP路由協(xié)議中設(shè)置被動接口后,該接口不僅不會發(fā)送和接收任何路由更新,而且還不會發(fā)送用于建立EIGRP鄰接關(guān)系的Hello數(shù)據(jù)包.
分發(fā)列表是一種通過引用訪問控制列表(ACL),來對路由更新進(jìn)行控制的技術(shù)[2].之所以要引用ACL,主要是因?yàn)锳CL擁有既可對用戶數(shù)據(jù)流進(jìn)行精準(zhǔn)控制,又不會對出站的路由通告產(chǎn)生任何影響的特性.該技術(shù)的誕生使管理者對路由更新的控制有了極大的靈活性.不僅可過濾相同路由域中的鄰接路由器發(fā)出的路由更新,而且還可過濾重分發(fā)自其他動態(tài)路由協(xié)議的路由更新.通常情況下,分發(fā)列表技術(shù)基于3種方式在路由協(xié)議進(jìn)程中進(jìn)行部署:(1)在入站接口進(jìn)行部署,主要用于過濾從路由器某指定接口進(jìn)入的路由更新;(2)在出站接口進(jìn)行部署,主要用于過濾從路由器某指定接口發(fā)出的路由更新或指定路由協(xié)議的路由更新;(3)在路由重分發(fā)中進(jìn)行配置,主要用于過濾重分發(fā)自其他動態(tài)路由協(xié)議的路由更新.此外,由于分發(fā)列表不能過濾鏈路狀態(tài)廣播(LSA),因此該技術(shù)更適合部署在距離矢量路由協(xié)議中,無論部署在入接口方向還是在出接口方向均能正常過濾路由更新.如果將其部署在OSPF鏈路狀態(tài)路由協(xié)議中,那么就會存在以下問題:其一,部署在入接口方向,只可過濾執(zhí)行分發(fā)列表的OSPF路由器本地路由表.其二,部署在出接口方向,只可過濾重分發(fā)到OSPF路由域內(nèi)的外部路由,而無法過濾OSPF區(qū)域內(nèi)路由和區(qū)域間路由.
路由映射表功能強(qiáng)大,不僅可用于過濾重分發(fā)而來的外部路由更新,而且還可應(yīng)用于策略路由、網(wǎng)絡(luò)地址轉(zhuǎn)換以及控制BGP協(xié)議路徑屬性.路由映射表由一組名稱相同的route-map語句所構(gòu)成,每條語句均存在一個編號(編號默認(rèn)為10,且不會自動遞增),因此管理者可對其進(jìn)行編輯[3-5].與訪問控制列表相類似,路由映射表也是按照從小到大的編號順序來處理每條語句.通常建立路由映射表需要如下步驟:首先,在全局配置模式下使用routemap命令定義路由映射表.其次,使用match命令定義要檢查的條件(可根據(jù)標(biāo)準(zhǔn)訪問控制列表、擴(kuò)展訪問控制列表、前綴列表、數(shù)據(jù)包的長度、路由類型、路由度量值和路由標(biāo)記等來設(shè)定檢查條件).如果出現(xiàn)route-map語句不包含match命令的情況,那么路由器就會認(rèn)為該route-map語句與所有數(shù)據(jù)包相匹配.在這里需要明確的是:單條match語句可以同時設(shè)置多個檢查條件,但只要匹配其中一個檢查條件,路由器就會認(rèn)為與該match語句相匹配.再次,使用set命令定義當(dāng)與措施為permit的條件相匹配時,路由器應(yīng)采取的動作(可使用set命令控制路由度量值、設(shè)置數(shù)據(jù)包出接口及下一跳、設(shè)置目標(biāo)路由協(xié)議的度量類型等).最后,應(yīng)用路由映射表.
與訪問控制列表相比,前綴列表通常具有以下不可替代的優(yōu)勢:首先,可使網(wǎng)絡(luò)管理者更為靈活的過濾路由更新.前綴列表不僅可以明確指定子網(wǎng)掩碼的大小,而且還可以對子網(wǎng)掩碼的范圍做出限定.其次,可有效提升路由器過濾路由更新的處理速度.這是因?yàn)槁酚善髟谔幚砬熬Y列表時,會將其轉(zhuǎn)換為樹形結(jié)構(gòu)并進(jìn)行測試,從而使路由器IOS能夠快速決定是允許還是拒絕.再次,網(wǎng)絡(luò)管理者可對前綴列表的條目進(jìn)行添加或刪除操作.最后,可將前綴列表部署在BGP協(xié)議中.
在思科GNS3虛擬仿真環(huán)境下,構(gòu)建了一個擁有8臺思科3725路由器(IOS鏡像文件為c3725-ad‐venterprisek9-mz.123-4.t4.bin)的大型網(wǎng)絡(luò),該網(wǎng)絡(luò)由AS 64530及AS 64532共2個自治系統(tǒng)所組成.網(wǎng)絡(luò)設(shè)備間連接及相關(guān)接口情況如圖1所示.AS 64532自治系統(tǒng)不僅包含有OSPF路由域(由路由器R1、R4、R5所組成,路由器R1為該路由域的邊界路由器),而且包含有RIP路由域(由路由器R1、R2、R3、R8所組成,路由器R1為該路由域的邊界路由器).而AS 64530自治系統(tǒng)只包含一個EIGRP路由域(由路由器R6、R7通過雙鏈路互聯(lián)所組成.在這里把R6 E1/2接口至R7 E1/2接口之間的鏈路,簡稱為M1鏈路;把R6 S2/0接口至R7 S2/1接口之間的鏈路,簡稱為M2鏈路).本次仿真實(shí)驗(yàn)首先研究被動接口、分發(fā)列表、路由映射表、前綴列表等技術(shù)在RIP路由域中、OSPF路由域中、EIGRP路由域中以及路由重分發(fā)過程中進(jìn)行路由過濾的實(shí)現(xiàn)機(jī)制和過程.研究使用BGP協(xié)議實(shí)現(xiàn)自治系統(tǒng)間互聯(lián)的實(shí)現(xiàn)機(jī)制和過程.擬計(jì)劃實(shí)現(xiàn)如下目標(biāo):
圖1 網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)
(1)在OSPF路由域內(nèi),允許路由器R1學(xué)習(xí)到去往目標(biāo)地址“路由器R5回環(huán)接口1(175.13.1.1/24)及回環(huán)接口 2(175.13.2.1/24)”的路由條目,禁止路由器R4學(xué)習(xí)到去往目標(biāo)地址“路由器R5回環(huán)接口 2(175.13.2.1/24)”的路由條目.
(2)在RIP路由域內(nèi),不僅需要禁止路由器R1、R2、R3學(xué)習(xí)到去往目標(biāo)地址“路由器R8回環(huán)接口1(192.168.80.10/24)”的路由條目,而且還需要禁止路由器R1、R2學(xué)習(xí)到去往目標(biāo)地址“路由器R3回環(huán)接口3(192.168.70.9/24)”的路由條目.只允許路由器R8學(xué)習(xí)到該路由域內(nèi)的全部路由條目.
(3)在AS 64532自治系統(tǒng)內(nèi),不僅允許OSPF路由域中的全部路由條目在RIP路由域中進(jìn)行傳播,而且還允許RIP路由域中的4條路由條目(196.10.10.0/24、 196.10.11.0/24、 196.10.12.0/24、192.168.50.0/24)在OSPF路由域中進(jìn)行傳播.
(4)在EIGRP路由域內(nèi),實(shí)現(xiàn)路由器R6、R7之間鏈路分流.當(dāng)路由器R7訪問路由器R6回環(huán)接口1時,或當(dāng)路由器R6訪問路由器R7回環(huán)接口1時,數(shù)據(jù)包走M(jìn)1鏈路.當(dāng)路由器R7訪問路由器R6回環(huán)接口2時,或當(dāng)路由器R6訪問路由器R7回環(huán)接口2時,數(shù)據(jù)包走M(jìn)2鏈路.
(5)實(shí)現(xiàn)AS 64530自治系統(tǒng)內(nèi)的終端計(jì)算機(jī)C3,能夠正常訪問AS 64532自治系統(tǒng)內(nèi)路由器R5回環(huán)接口1.
為保證OSPF域內(nèi)路由器R4無法學(xué)習(xí)到去往目標(biāo)地址“路由器R5回環(huán)接口2”的路由條目,同時也為了保證路由器R1能夠?qū)W習(xí)到去往目標(biāo)地址“路由器R5回環(huán)接口1與回環(huán)接口2”的路由條目.因此,有必要在路由器R4入站接口部署分發(fā)列表.之所以這樣做是因?yàn)椋涸谌胝窘涌诓渴鸱职l(fā)列表,只會對路由器R4的本地路由表起過濾作用,而被過濾網(wǎng)段的相關(guān)LSA會繼續(xù)泛洪給路由器R1(OSPF路由器之間傳遞的消息為LSA,分發(fā)列表無法對其進(jìn)行過濾)[6].因此,路由器R1仍可學(xué)習(xí)到被路由器R4過濾掉的路由條目.路由器R4的相關(guān)配置命令為
路由器R4配置完成后,分別查看路由器R1、R4的路由表,如圖2和3所示.在路由器R4入站接口部署分發(fā)列表后,路由器R4的路由表中并不存在去往目標(biāo)地址“路由器R5回環(huán)接口2”的路由條目.而路由器R1的路由表中不僅存在去往目標(biāo)地址“路由器R5回環(huán)接口1”的路由條目,而且還存在去往目標(biāo)地址“路由器R5回環(huán)接口2”的路由條目(上述2條路由條目的路由標(biāo)識符、度量值以及下一跳地址均相同).這足以充分說明:在OSPF路由域內(nèi)部署的分發(fā)列表,實(shí)現(xiàn)了既定目標(biāo)(1).
圖2 路由器R1路由表
圖3 路由器R4路由表
2.2.1 在路由器R8中部署被動接口過濾路由
為保證RIP域內(nèi)路由器R1、R2、R3無法學(xué)習(xí)到去往目標(biāo)地址“路由器R8回環(huán)接口1(192.168.80.10/24)”的路由條目,同時也為保證路由器R8能夠?qū)W習(xí)到該路由域內(nèi)的全部路由條目.因此,有必要將路由器R8的e1/2接口設(shè)置為被動接口.這樣以來不僅可以確保路由器R8不會以組播或廣播的方式(組播方式最節(jié)省網(wǎng)絡(luò)流量)向鄰居路由器R3發(fā)送任何RIP路由更新,而且還可以確保其繼續(xù)接收鄰居路由器R3發(fā)來的RIP路由更新.需要注意的是:即使為RIP路由器設(shè)置了被動接口,網(wǎng)絡(luò)管理者還可通過單播的方式向其鄰居路由器發(fā)送RIP路由更新.路由器R8的相關(guān)配置命令為
為使讀者能更清楚地了解被動接口技術(shù)在RIP協(xié)議中的工作機(jī)制與工作過程.首先,使用命令查看路由器R8的路由表,如圖4所示.其次,使用Wireshark網(wǎng)絡(luò)分析軟件并以路由器R3的e1/2接口為源,對其進(jìn)行抓包分析(圖5).其一,路由器R8已成功學(xué)習(xí)到了RIP路由域內(nèi)的全部路由條目;其二,在路由器R3的e1/2接口捕獲的RIP數(shù)據(jù)包中,只有路由器R3用來傳送路由更新的RIP響應(yīng)數(shù)據(jù)包(Response為“1”代表該數(shù)據(jù)包為RIP請求數(shù)據(jù)包,為“2”代表該數(shù)據(jù)包為RIP響應(yīng)數(shù)據(jù)包),而從未收到來自路由器R8的任何RIP數(shù)據(jù)包;其三,路由器R3通過 e1/2接口,不斷的將以下5條RIP路由 更 新(192.168.50.0、192.168.55.0、192.168.70.0、196.10.10.0、196.10.11.0)發(fā) 送 給 RIPv2組播地址224.0.0.9(由于路由器R8的e1/2接口與路由器R3的e1/2接口互聯(lián)并已開啟RIP,因此會自動監(jiān)聽并處理來自RIPv2組播地址224.0.0.9的報(bào)文).這足以充分說明:在將路由器R8的e1/2接口設(shè)置為被動接口后,不僅成功禁止了路由器R1、R2、R3學(xué)習(xí)到去往目標(biāo)地址“路由器R8回環(huán)接口1(192.168.80.10/24)”的路由條目,而且還保證了路由器R8能夠?qū)W習(xí)到RIP路由域內(nèi)的全部路由條目.
圖4 路由器R8的路由表
圖5 路由器R3的e1/2接口RIP數(shù)據(jù)包
2.2.2 在路由器R3中部署分發(fā)列表過濾路由
為保證RIP路由域內(nèi)路由器R1、R2無法學(xué)習(xí)到去往目標(biāo)地址“路由器R3回環(huán)接口3(192.168.70.9/24)”的路由條目,因此有必要在路由器R3出站接口或路由器R2的入站接口部署分發(fā)列表.原因如下:RIP協(xié)議為距離矢量協(xié)議,RIP路由器之傳遞的是路由更新信息,而分發(fā)列表對路由更新具有絕對的控制權(quán)[7].如將其部署在入站接口,可對特定的路由更新進(jìn)行過濾,從而使執(zhí)行分發(fā)列表的本地路由器的路由表發(fā)生改變.如將其部署在出站接口,實(shí)際上本地路由器給下游路由器傳遞的內(nèi)容是執(zhí)行分發(fā)列表后的路由更新條目.在這里選擇在路由器R3的出站接口部署分發(fā)列表,相關(guān)配置命令為
上述配置完成后,以路由器R1為例查看其路由表(圖6).路由器R1共學(xué)習(xí)到4條RIP路由條目(196.10.11.0/24、196.10.12.0、24、192.168.50.0/24、192.168.55.0/24),其路由表中并不存在去往目標(biāo)地址“路由器R3回環(huán)接口3”的路由條目.這足以充分說明:在路由器R3、R8中采取的路由過濾措施,實(shí)現(xiàn)了既定目標(biāo)(2).
圖6 路由器R1的路由表
在AS 64532自治系統(tǒng)內(nèi),為使OSPF及RIP路由域中的相關(guān)路由能夠在對方路由域中進(jìn)行傳播,有必要在路由器R1(同為上述2個路由域的邊界路由器)中實(shí)施雙向路由重分發(fā)[8-9].這樣不僅可將OSPF路由通告到RIP路由域,而且還可將RIP路由通告到OSPF路由域.
由于RIP路由域中只有以下4條路由條目(196.10.10.0/24、 196.10.11.0/24、196.10.12.0/24、192.168.50.0/24)被允許在OSPF路由域中進(jìn)行傳播.因此,還需在路由器R1中部署路由映射表,并將其分別應(yīng)用于RIP路由到OSPF路由域、以及OSPF路由到RIP路由域的重分發(fā)過程中.路由器R1的相關(guān)配置命令為
上述配置完成后,以O(shè)SPF路由器R5及RIP路由器R8為例,分別查看其路由表,如圖7和8所示.路由器R5共學(xué)習(xí)到4條路由標(biāo)識符為“O E2”的外部路由(重分發(fā)到OSPF時,默認(rèn)度量值類型為2),以上4條路由既為重分發(fā)到OSPF路由域的RIP路由條目(196.10.10.0/24、196.10.11.0/24、196.10.12.0/24、192.168.50.0/24);路由器 R8共學(xué)習(xí)到 2條路由標(biāo)識符為“R”,且度量值為“12”(重分發(fā)到RIP路由域時度量值為10,而后又經(jīng)兩跳傳遞到路由器R8)的外部匯總路由(175.12.0.0/16、175.13.0.0/16),以上2條路由包含了重分布到RIP路由域中的全部OSPF路由條目.這足以充分說明在路由器R1中實(shí)施的雙向路由重分發(fā)及采取的路由過濾措施,實(shí)現(xiàn)了既定目標(biāo)(3).
圖7 路由重分發(fā)后路由器R5的路由表
圖8 路由重分發(fā)后路由器R8的路由表
在EIGRP路由域內(nèi),通過在路由器R6、R7中部署前綴列表來實(shí)現(xiàn)二者之間鏈路分流.與使用訪問控制列表相類似,使用前綴列表進(jìn)行過濾路由時,需先判斷路由前綴與前綴列表中的前綴是否匹配[10-12].如果前綴列表為空,那么將允許所有路由前綴通過.路由器R6的相關(guān)配置與路由器R7的配置類似.
路由器R6的相關(guān)配置為
從中不難發(fā)現(xiàn):當(dāng)路由器R7訪問路由器R6回環(huán)接口1時,數(shù)據(jù)包的下一跳地址為“193.168.11.1”,此時數(shù)據(jù)包走M(jìn)1鏈路;而當(dāng)路由器R7訪問路由器R6回環(huán)接口2時,數(shù)據(jù)包的下一跳地址則變?yōu)椤?93.168.10.1”,此時數(shù)據(jù)包走M(jìn)2鏈路.這足以充分說明,通過在路由器R6、R7中部署前綴列表,實(shí)現(xiàn)了既定目標(biāo)(4).
路由器R5、R6分別為AS 64532和AS 64530的邊界路由器.因此,二者之間運(yùn)行的BGP協(xié)議為EBGP[13].而對于路由器R7來說,由于與路由器R6同在AS 64530內(nèi),因此其運(yùn)行的BGP協(xié)議為IBGP.需要讀者注意的是:其一,2臺EBGP鄰居路由器在交換BGP路由更新前,必須要先成功建立TCP會話.其二,EBGP鄰居路由器的IP地址必須是直連或通過靜態(tài)路由可達(dá)的[14-15].路由器R5、R7的配置與R6類似.
路由器R6的相關(guān)配置為
路由器R5、R6、R7配置完成后,首先,以路由器R6為例,使用命令sh ip bgp summary查看其BGP連接狀態(tài)情況(圖9)[16].路由器 R6分別與路由器 R5、R7成功建立了EBGP和IBGP鄰接關(guān)系.其次,以路由器R7為例,使用命令sh ip bgp summary查看其BGP拓?fù)鋽?shù)據(jù)庫.在路由器R7的BGP拓?fù)鋽?shù)據(jù)庫中,存在一條去往路由器R5回環(huán)接口1所在網(wǎng)絡(luò)“175.13.1.0/24”的路由(該路由已被BGP選為最佳路由,并提交給路由表).再次,使用Ping命令測試,終端計(jì)算機(jī)C3訪問路由器R回環(huán)接口1的連通性(圖10).AS 64530自治系統(tǒng)內(nèi)的終端計(jì)算機(jī)C3,能夠正常訪問AS 64532自治系統(tǒng)內(nèi)路由器R5回環(huán)接口1.這足以說明,通過在路由器R5、R6、R7中部署B(yǎng)GP協(xié)議,實(shí)現(xiàn)了既定目標(biāo)(5).
圖9 查看路由器R6的BGP連接狀態(tài)
圖10 測試終端計(jì)算機(jī)C3訪問路由器R5回環(huán)接口1的連通性
現(xiàn)實(shí)中網(wǎng)絡(luò)管理者在構(gòu)建網(wǎng)絡(luò)過程中,不僅要考慮網(wǎng)絡(luò)的可擴(kuò)展性,而且還要充分考慮網(wǎng)絡(luò)的整體性能.多數(shù)情況下并不需要在網(wǎng)絡(luò)中通告所有的路由更新,只需通告特定的路由更新即可.因此,有必要部署相關(guān)路由過濾技術(shù),在充分考慮網(wǎng)絡(luò)應(yīng)用場景的情況下做好網(wǎng)絡(luò)優(yōu)化工作.