■ 南京 張韜
編者按:策略路由中定義的不同配置方式會(huì)對數(shù)據(jù)包最終實(shí)際的轉(zhuǎn)發(fā)產(chǎn)生完全不一樣的效果,掌握好相關(guān)的策略路由技術(shù)以及它和傳統(tǒng)查找路由表之間的優(yōu)先轉(zhuǎn)發(fā)順序,可以大大提高我們工作的靈活性和效率。
策略路由(Policy Route)其實(shí)就是一種復(fù)雜的靜態(tài)路由,既可以基于數(shù)據(jù)包頭中源IP地址向指定的下一跳路由器轉(zhuǎn)發(fā)數(shù)據(jù)包,又可以基于協(xié)議類型和端口號進(jìn)行路由選擇,而且只會(huì)影響配置了策略路由的路由器。但是策略路由中定義的不同配置方式卻會(huì)對數(shù)據(jù)包最終實(shí)際的轉(zhuǎn)發(fā)產(chǎn)生完全不一樣的效果。
1.配置route-map
首 先 使 用“routemap name [permit|deny][sequence-number]”命令創(chuàng)建配置路由映射表(routemap),route-map中 包 含 了規(guī)定數(shù)據(jù)轉(zhuǎn)發(fā)的各種策略。當(dāng)route-map子句被配置為permit,則表示對符合條件的報(bào)文執(zhí)行策略路由;當(dāng)子句中遇到匹配的deny節(jié)點(diǎn),則表示對符合條件的報(bào)文不執(zhí)行策略路由,報(bào)文信息按照正常的路由表進(jìn)行轉(zhuǎn)發(fā),并不是將報(bào)文丟棄;如果沒有在route-map中找到匹配規(guī)則的報(bào)文,也將按照正常的路由選擇操作而被轉(zhuǎn)發(fā),報(bào)文并不會(huì)被丟棄。
如果與指定條件不匹配的報(bào)文,希望它不要被正常轉(zhuǎn)發(fā),而是要丟棄,則可以在路由映射表的最后配置一條set語句,將報(bào)文發(fā)到接口null 0。
2.配置match命令
配 置“match ip address {access-listnumber|name}”命令,使用訪問控制列表來指定報(bào)文的匹配條件。
此外,還可以使用“match length min max”命令指定基于報(bào)文長度的匹配條件。
3.配置set命令
如果滿足match語句的條件,則可以使用一個(gè)或多個(gè)set語句來指定對報(bào)文的操作。當(dāng)配置了多個(gè)設(shè)置下一跳地址或本地出接口的set語句后,只有第一條set語句會(huì)被執(zhí)行,其余set語句將被忽略。
具體而言,當(dāng)使用“set ip next-hop ip-address[…ip address]”命令時(shí),將檢查路由表,以確定是否可以可以到達(dá)下一跳地址,而不會(huì)去檢查路由表中是否存在前往報(bào)文目標(biāo)地址的顯示路由。
ip-address […ip address]則提供了一個(gè)IP地址列表,用于指定報(bào)文前往目的地路徑中相鄰下一跳路由器的地址。如果指定了多個(gè)下一跳地址,當(dāng)出現(xiàn)與第一個(gè)下一跳地址相關(guān)聯(lián)的本地接口狀態(tài)為down時(shí),路由器則會(huì)按照順序輪流嘗試后續(xù)的下一跳地址。
同 樣,當(dāng) 使 用“set interface interface […interface]”命令時(shí),則提供了一個(gè)接口列表,用于指定報(bào)文被轉(zhuǎn)發(fā)的本地出接口。如果指定了多個(gè)出接口,第一個(gè)狀態(tài)為up的接口將用于轉(zhuǎn)發(fā)報(bào)文,如果接口為down,路由器將嘗試后續(xù)的出接口。
當(dāng) 使 用“set ip default next-hop ip-address […ip address]”命令時(shí),如果指定了多個(gè)下一跳地址,當(dāng)與第一個(gè)下一跳地址相關(guān)聯(lián)的本地接口狀態(tài)為down時(shí),路由器也會(huì)按照順序輪流嘗試后續(xù)的下一跳地址。和set ip nexthop ip-address […ip address]命令相比較而言,雖然只多了一個(gè)default關(guān)鍵字,但是此時(shí)卻表示僅當(dāng)路由表中沒有到達(dá)報(bào)文目標(biāo)地址的顯式路由時(shí),才將報(bào)文轉(zhuǎn)發(fā)到指定的默認(rèn)下一跳地址。
圖1 策略執(zhí)行案例拓?fù)鋱D
圖2 R1配置
圖3 R2配置
圖4 PC1測試到達(dá)PC2的連通性
同 理, 使 用“set default interface interface […interface]”命令時(shí),也提供了一個(gè)默認(rèn)接口列表,如果指定了多個(gè)出接口,則第一個(gè)狀態(tài)為up的接口將用于轉(zhuǎn)發(fā)報(bào)文;如果接口狀態(tài)為down,路由器則會(huì)嘗試后續(xù)的出接口,并且僅當(dāng)路由表中沒有前往報(bào)文目標(biāo)地址的顯式路由時(shí),才將報(bào)文轉(zhuǎn)發(fā)到命令指定的默認(rèn)出接口。
4.在接口上調(diào)用策略路由
在路由器報(bào)文的入接口下使用命令“ip policy routemap”調(diào)用配置的策略路由,但是只有配置在路由器的入接口才會(huì)對數(shù)據(jù)包的轉(zhuǎn)發(fā)產(chǎn)生作用。
如圖1所示,R1和R2路由器之間使用默認(rèn)路由實(shí)現(xiàn)PC1和PC2之間互連通信,這里路由器以銳捷RSR20-14E型號為例(圖中的fastethernet口實(shí)際為gigabitethernet口,Serial0/2/0口實(shí)際為serial2/0口),具體R1上配置如圖2,R2配置如圖3。
現(xiàn)在PC1可以正常訪問PC2,如圖4所示。
當(dāng)在R1路由器上配置如下策略路由后,則PC1訪問PC2的數(shù)據(jù)包流量會(huì)被R1強(qiáng)制轉(zhuǎn)發(fā)到Server,而不是按照默認(rèn)路由的方式進(jìn)行轉(zhuǎn)發(fā),造成無法ping通PC2,說明定義的策略路由起到了效果,如圖5所示。
R1(config)#routemap abc //配 置route-map
R1(config-routemap)#match ip address 1
R1(config-routemap)#set ip default nexthop 10.1.1.10
R1(config-routemap)#exit
R1(config-if-GigabitEthernet 0/1)#ip policy route-map abc //調(diào)用策略路由
如果上面的R1路由器這里不是采用默認(rèn)路由的配置方式,而是采用靜態(tài)路由或者其他動(dòng)態(tài)路由協(xié)議的配置方式,此時(shí)效果又不一樣,這里把上述配置的默認(rèn)路由改成靜態(tài)路由,策略路由配置不變。
R1(config)#no ip route 0.0.0.0 0.0.0.0 192.168.1.2
圖5 PC1無法訪問PC2
圖6 PC1又可以訪問PC2
圖7 PC1無法訪問路由器R2的直連接口S2/0
R1(config)#ip route 201.1.1.0 255.255.255.0 192.168.1.2
這時(shí)候發(fā)現(xiàn)PC1又可以訪問PC2,說明路由表中的明細(xì)路由(不包括默認(rèn)路由)優(yōu)先于策略路由中的set ip default next-hop 下一跳地址,如圖6所示。
由于R2路由器的Serial0/2/0接口和R1路由器是直連的,R1路由器本身通過直連路由信息就可以轉(zhuǎn)發(fā)到192.168.1.0網(wǎng)段中,如果在R1上配置了如下不帶default關(guān)鍵字的策略路由信息后,此時(shí)可以清楚地看到PC1又無法訪問PC2,甚至連直連網(wǎng)絡(luò)R2路由器的Serial0/2/0接口都無法ping通,如圖7所示。因?yàn)椴呗月酚?中set ip next-hop下一跳地址的策略路由要優(yōu)于明細(xì)路由,即使是和R1路由器直連,數(shù)據(jù)包流量也會(huì)被R1按照策略路由中定義的規(guī)則被強(qiáng)制轉(zhuǎn)發(fā)到Server,而沒有按照路由表中本身的明細(xì)路由進(jìn)行轉(zhuǎn)發(fā),所以造成網(wǎng)絡(luò)不通。
R1(config)#route-map xyz //配置route-map
R1(config-routemap)#match ip address 1
R1(config-routemap)#set ip next-hop 10.1.1.10
R1(config-routemap)#exit
R1(config)#accesslist 1 permit 200.1.1.0 0.0.0.255
R1(config-if-GigabitEthernet 0/1)#ip policy route-map xyz//調(diào)用策略路由
但如果此時(shí)這里是使用帶有default關(guān)鍵字的策略路由信息,則
【】【】
結(jié)果又會(huì)大相徑庭,PC1仍然可以ping通192.168.1.2,因 為set ip default next-hop優(yōu)先級低于路由中的明細(xì)路由。
策略路由可以可以使報(bào)文不按照傳統(tǒng)查找路由表的方式進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā),而是根據(jù)配置的策略將數(shù)據(jù)包發(fā)送到相應(yīng)路徑上。在策略路由中,數(shù)據(jù)轉(zhuǎn)發(fā)優(yōu)先級規(guī)則按照如下順序進(jìn)行選擇 :set ip next-hop( 或interface) >明細(xì)路由> set ip default nexthop(或interface) > 默認(rèn)路由。掌握好相關(guān)的策略路由技術(shù)以及它和傳統(tǒng)查找路由表之間的優(yōu)先轉(zhuǎn)發(fā)順序,可以大大提高我們工作的靈活性和效率,起到事半功倍的效果。