路由重分佈筆記

當網絡中原有的路由協議不能再很好的滿足需求的時候,就需要轉換爲另一種路由協議,這就需要進行路由協議的遷移。
原則:
1、儘可能少的減少網絡的停工時間
2、一旦在遷移過程中出了問題,要能迅速回退到初始狀態
3、在遷移過程中要避免出現路由黑洞和環路
在路由遷移過程中還有可能要改變原有的IP地址,使用新的編址方案,這就需要進行地址的遷移。
地址遷移過程:
1、配置第二地址
2、將第二地址network進路由協議中
3、如果第二地址路由正常,將第二地址改爲第一地址
R1(config-is)#ip address address mask secondary 配置輔助地址
路由遷移過程:
1、將原有協議的AD值改小
2、在現在網絡上配置新的路由協議
3、將原有協議的AD值再改大,讓新協議的路由起作用
4、如果路由正常,刪除原有協議
R1(config-route)#distance eigrp 150 170   修改路由協議的管理距離
注:OSPF不能用Secondary地址建鄰居。Eigrp能用Secondary地址建鄰居。
<路由協議的重分佈>
定義:重分佈是指連接到不同路由選擇域的邊界路由器在不同自主系統之間交換和通告路由選擇信息的能力。
重分佈原則:路由必須位於路由選擇表中才能被重分發
在重分發時設定種子metric
協議        Seed Metric
RIP           無限大    必須手工指定    (看ios版本)
EIGRP         無限大    也必須手工指定 (看ios版本)
OSPF          20    如果重分佈進來的是BGP的話,Metric是1,這是個特例
IS-IS         0
BGP          攜帶原來的Metric值
R1(config-router)#default-metric 1  使用此命令來設定種子metric值
重分佈分兩種:
1、單向重分佈
2、雙向重分佈
1)OSPF -> RIP:
 將其它路由協議重分佈進RIP,要注意加metric值

 
  R1(config)#router rip
  R1(config-router)#redistribute ospf 110 metric 1 (優於default-metric命令)
            
  也可用以下方法指定Metric值
  R1(config-router)#default-metric 3 (默認Seed Metric=infinity無限大,修改Seed Metric=3)
 R1(config-router)#redistribute connected (可不加Metric,默認=1)重分佈直連
 R1(config-router)#redistribute static   (可不加Metric,默認=1)重分佈靜態,路由前會打上R
2)RIP -> OSPF: 
  將其它路由協議重分佈進OSPF,要注意加subnets參數
 R1(config)#router ospf 110
 R1(config-router)#redistribute rip subnets (如不加Subnets,默認只有主類地址能被重分佈)
  默認的metric值爲20,也可用以下命令指定:
  R1(config-router)#default-metric 8
 R1(config-router)#redistribute rip subnets metric 10
(默認Seed Cost=20,如果將BGP->OSPF,默認=1)
 R1(config-router)#redistribute rip subnets metric 10 metric-type 1 
(加上路徑Cost,默認爲E2)
  R1(config-router)#redistribute connected subnets
 R1(config-router)#redistribute static subnets  還可在後面加router-map來過濾路由
3)ISIS -> EIGRP:
將其它路由協議重分佈進EIGRP時也要指定Metric值

R1(config)#router eigrp 90
R1(config-router)#default-metric 1500 100 255 1 1500
R1(config-router)#redistribute isis (level2) metric 1544  100  255  1  1500
 (不加Metric,默認Seed Metric=infinity)        BW   DLY   R   Lo  MTU
                           帶寬 延遲 可靠性 負載 MTU
R2#show ip ei topology 3.3.3.0/24
R1(config-router)#redistribute connected (不加Metric也可)
                                (根據直連接口的不同計算Metric)
R1(config-router)#redistribute static (不加Metric也可)
                                (根據下一跳接口計算Metric)
·當把ISIS重分佈進其他路由協議時,運行ISIS的直連接口不能重分佈進去,這是ISIS本身的BUG。只能通過重分佈直連解決。
4)EIGRP -> ISIS:

R1(config)#router isis
R1(config-router)#redistribute eigrp 90 (默認Seed Metric=0 ,默認以L2路由進入ISIS)
R1(config-router)#redistribute eigrp 90 metric 8
R1(config-router)#redistribute ei 90 level-1 (以L1的路由進入ISIS,不做修改的話,L1路由器就收不到外部重分佈進來的路由,因爲默認是L2)
R1(config-router)#redistribute ei 90 level-1-2
R3#show isis database detail/verbose
經典的重分佈試驗:


試驗題:在R1上做三次重分佈,先將OSPF重分佈進EIGRP,然後將EIGRP重分佈進RIP,再將RIP重分佈進OSPF,完成後,看看能否實現全網互通。也就是說,3.3.3.3和4.4.4.4,以及2.2.2.2能否互相Ping通。
·重分佈-在Router上,將A協議重分佈到B協議中:  
  Router上所有運行A協議的接口(除ISIS/ODR),以及Router路由表中所有從A協議學到的路由,都會被重分佈到B協議中。
-----------------------------------------------------------------------------------------
<單點雙向重分佈時的彙總路由回饋問題>
實驗:
1、在R1上將OSPF重分佈進EIGRP
2、在R1的S1/0接口做EIGRP的手動彙總,彙總出一條172.16.0.0/16路由。這時R2將只收到一條彙總路由。
3、再在R1上將EIGRP重分佈進OSPF
這時你會發現,R3上除了正常收到12.1.1.0的路由之外,還多了一條彙總路由,因爲在R1上做了彙總之後,生成了一條指向NULL0接口的彙總路由,這樣,在把EIGRP重分佈進OSPF時,把這條路由也帶進去了。
解決方法:做過濾
<雙向雙出口重分佈>

試驗:在R1和R4上先將OSPF重分佈進RIP,看看網絡會不會出問題,每個路由器的路由表正不正常。
      再在R1和R4上將RIP重分佈進OSPF,看看有沒有問題。
通過試驗,我們總結出:
·做雙點雙向重分佈時,把AD值低的路由協議重分佈進AD值高的路由協議,沒啥問題。
·當把AD高的協議重分佈到AD低的協議中時,就有可能出現問題。
解決方法:
1、不好的方法--改所有路由的AD
R1(config)#router ospf 110
R1(config-router)#distance 171 (將此協議的路由的AD改爲171,對本協議所有路由都有效,改動範圍太大,通常不建議這樣做,而且是有問題的。)
2、好的方法--縮小範圍
R1(config-router)#distance 171 4.4.4.4(在OSPF中,這是RID) 0.0.0.0  (只將路由器4.4.4.4通告的OSPF路由AD改爲171)
                
3、最好的方法--進一步縮小範圍
R1(config)#access-list 2 permit 2.2.2.0
R1(config-router)#distance 171 4.4.4.4 0.0.0.0 2 (只針對4.4.4.4通告的2.2.2.0路由將AD改爲171,對4.4.4.4通告的其它路由AD不變)
R1(config-router)#distance 171  0.0.0.0 255.255.255.255 2 
上面這條命令針對所有路由器通告的指定路由來改AD,在這一定要注意通告路由器的概念,在OSPF中和EIGRP中通告的路由器的區別,要注意你所要更改的路由是由哪一個路由器通告的。
4、還可以通過爲OSPF設置外部路由的管理距離來解決,只要將外部路由的管理距離增大到超過重分佈進來的協議的AD就可以了
R4(config-router)#distance ospf external 99 inter-area 88 intra-area 77(可以設置三種管理距離,需要在所有路由器上做)
如果把ospf換成eigrp則沒有問題,因爲eigrp存在外部管理距離
____________________________________________________________________________________
在EIGRP中的修改:
R4(config)#router eigrp 90
R4(config-router)#distance 109 24.1.1.2  0.0.0.0 (只對D路由有效,對D EX路由無效,因爲EX路由是邊界路由器通告的)
                              (Next-hop)(Wildcard)
R4(config)#access-list 2 permit 1.1.1.0
R4(config-router)#distance 109 24.1.1.2 0.0.0.0 2
           (只針對1.1.1.0路由將AD改爲109,只對D路由有效)
R4(config-router)#distance eigrp    89      169
                               (internal)(external)
---------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------
訪問列表的分類:(數據層面;控制層面)
1、標準訪問列表
   只能基於源IP地址來進行分類
   可以使用列表號:1-99、1300-1999
   標準的訪問列表通常要求放置在靠近目標的地方
2、擴展訪問列表
   可以根據源IP地址、目的IP地址、源端口號、目的端口號,協議來進行分類
   可以使用列表號:100-199、2000-2699
   擴展訪問列表通常要求放置在靠近源的地方
3、命名的訪問列表
   只是將標準訪問列表或擴展訪問列表取個名字
   優點:可以對訪問列表進行增加、刪除操作。
訪問列表的比較規則:
1、如果一個訪問列表有多行語句,通常按順序從第一條開始比較,然後再往下一條條比較。
2、一個數據包如果與訪問列表的一行匹配,則按規定進行操作,不再進行後續的比較。
3、在每個訪問列表的最後一行是隱含的deny any語句--意味着如果數據包與所有行都不配的話,將被丟棄。
訪問列表的配置規則:
1、你在訪問列表中可以寫多條比較語句,它們是按你輸入的順序來進行放置的。
2、在標準訪問列表擴展訪問列表中,你不能單獨刪除其中的一行,只能刪除整個列表。
3、每個列表應當至少有一個permit語句,否則將拒絕所有流量。
4、訪問列表可以用在接口的出方向,也可以用在入方向,但是要注意,在一個接口在一個方向上只能有一個訪問列表。
5、訪問列表可以過濾通過路由器的流量,對自已產生的流量不起作用。
6、將標準訪問列表要儘可能放置在靠近目的地址的地方
7、將擴展訪問列表要儘量放置在靠近源地址的地方
ACL的運算符:
1、eq   等於
2、neq   不等於
3、gt   大於
4、lt   小於
5、range   範圍
ACL具體是過濾數據包還是路由,是由調用它的工具來決定的。
舉例:
1、在路由器上,允許來自172.16.1.0網段的流量通過
access-list 1 permit 172.16.1.0 0.0.0.255
2、允許來自於172.16.1.0網段的流量去訪問192.168.1.0網段
access-list 100 permit ip 172.16.1.0 0.0.0.255 192.168.1.0 0.0.0.255
3、拒絕來自於172.16.1.0網段的流量通過,允許其它任意的流量通過
access-list 1 deny 172.16.1.0 0.0.0.255
access-list 1 permit any
4、允許172.16.1.1 telnet 192.168.1.1的流量通過,其它拒絕
access-list 1 permit tcp host 172.16.1.1 host 192.168.1.1 eq telnet
5、抓出172.16.1.0的路由
access-list 1 permit 172.16.1.0 0.0.0.0
6、用一條ACL抓出172.16.0.0、172.16.1.0、172.16.2.0、172.16.3.0四個子網
access-list 1 permit 172.16.0.0 0.0.3.0
7、用一條語句抓出172.16.0.0---172.16.255.0/24之間所有子網號爲奇數的路由
access-list 1 permit 172.16.1.0 0.0.254.0
8、用一條語句抓出前兩個字節爲172.16.0.0、掩碼爲255.255.255.0的所有路由
access-list 100 permit ip 172.16.0.0 0.0.255.255 host 255.255.255.0
用ACL抓掩碼,但要注意,只能用在route-map 中,在分佈列表中無效
9、阻止外部發起的TCP會話,但允許內部發起的連接到外部的TCP會話。
access-list 100 permit tcp any any established
established --允許ACK/RST=1的TCP報文通過,通常用於只允許內部的主機向外部發起TCP連接,不允許外部的主機向本網發起TCP連接
時間ACL,自反ACL

<Distribute-List>用來過濾路由
分佈列表通過調用ACL來對路由進行過濾,可以在一個單獨的路由選擇區域內過濾,也可在路由協議之間做重分佈的時候進行過濾。
注意:分佈列表只能用於距離矢量協議,在鏈路狀態協議中是沒有意義的。
例一:

R1(config)#access-list 2 permit 2.2.2.0
R1(config-router)#distribute-list 2 in serial 0 (只允許2.2.2.0路由從S0進)
例二:
R1(config)#access-list 2 deny 2.2.2.0
R1(config)#access-list 2 permit any
R1(config-router)#distribute-list 2 out serial 1 (不允許2.2.2.0路由從S1接口出去)
例三:協議間重分佈時過濾
R1(config)#access-list 1 permit 2.2.2.0
R1(config)#router ospf 110
R1(config-router)#distribute-list 1 out eigrp 90
注意:當在重分佈時進行過濾,僅允許使用關鍵字out(當外部來理解),後面可以跟上協議名,但不能跟接口,因爲無意義,詳見卷一496頁(注意:in後面不能跟協議,只有out後能跟)
例四:在OSPF中使用分佈列表:(沒啥意義) 可以用前綴列表在ABR上實現
router ospf 110
area 1 filter-list prefix 1 out
還有就是not-adver
  
   
試驗:
    1、在R1上寫一個訪問列表
       access-list 1 permit 172.16.1.1
    2、在R1的OSPF進程下調用
       distribute-list 1 in s1
    3、查看R1和R3的路由表,比較有啥不同
總結:實際上並不能對LSA進行過濾,只能對自已的路由條目進行過濾。
<Prefix-List>前綴列表
和ACL類似的東東,設計用於專抓路由的工具,不僅可以匹配網絡號,還可以匹配掩碼
R4(config)#ip prefix-list 2(用名字也行) permit 2.2.2.0/24
R4(config-router)#distribute-list prefix 2 in serial 1
ip prefix-list 2 permit 2.2.2.0/24       (匹配前24位:2.2.2.* ,掩碼必須爲24位)

ip prefix-list 2 permit 2.2.2.0/24 ge 25 le 30 (匹配前24位:2.2.2.* ,掩碼必須爲25-30位)

ip prefix-list 2 permit 2.2.2.0/24 le 32    (匹配前24位:2.2.2.* ,掩碼必須爲24-32位)

ip prefix-list 2 permit 2.2.2.0/24 ge 26    (匹配前24位:2.2.2.* ,掩碼必須爲26-32位)

ip prefix-list 3 permit 0.0.0.0/0 le 32     (匹配所有)不能像access-list哪樣用any參數
ge必須大於前面的數字,小或等於le ,len<ge-value<=le-value
sh ip prefix-list用於查看
用前綴列表過濾A、B、C類路由
A類路由:ip prefix-list 1 permit 0.0.0.0/1 le 32
B類路由:ip prefix-list 1 permit 128.0.0.0/2 le 32
C類路由:ip prefix-list 1 permit 192.0.0.0/3 le 32

<Route-Map>(定義策略的工具)
也叫路由圖或者路由映射表,是對路由進行加工處理的工具。
1、route-map可以調用ACL或prefix抓出一部分路由進行加工處理
2、每一個route-map可以有多條語句,每條語句都有一個序號
3、每條語句都有兩種動作:match 和 set
4、每條語句對路由都有兩種處理方式:permit 或 deny

route-map的使用分三步操作:
1、定義ACL或prefix抓出路由
2、定義route-map說明對匹配的路由所採取的處理方式
3、調用route-map
route-map的匹配邏輯:
route-map NAME permit 10
match ip address x y z
                 -------> OR
match ip address a  ¦
match ip address b  ¦ AND
match ip address c  ↓
如不寫match/set,默認:  match any
                       set   nothing
例一:
R1(config)#access-list 1 permit 172.16.1.0 0.0.0.0
R1(config)#route-map WOLF permit 10
R1(config-route-map)#match ip address 1
R1(config-route-map)#set metric 88 
R1(config-route-map)#set metric-type type-1
·在route-map的最後隱含了一條deny any的語句
·如果不寫一句空Route-map 去允許其它路由通過,則沒有定義的路由直接被丟棄。
R1(config)#route-map WOLF permit 20 通常都會加上這一句
例二:match 接口
還可以在重分佈直連的時候match一個接口,直接寫route-map就可以,不用定義訪問列表。
R1(config)#route-map WOLF permit 10
R1(config-route-map)#match interface e0
使用route-map打tag:
對一些路由打上tag,好讓後面的路由器根據tag找出這些路由並進行相應的策略
R1(config)#route-map WOLF permit 10
R1(config-route-map)#match ip address 37 39
R1(config-route-map)#set metric 88 
到了R2之後,對打tag的路由丟棄
R1(config)#route-map WOLF deny 10
R1(config-route-map)#match tag 20
<Policy-Based Routing>
PBR就是使用route-map這一工具對某個接口進來的數據流做一些策略,符合條件的按相應的策略進行路由,不符合條件的按正常情況進行轉發。
PBR的規則:
·PBR allows for source-based routing.

·PBR優於路由表-----如果路由器上設置了PBR,當數據包到達路由器時,是先匹配PBR,如果匹配上了,直接按PBR進行轉發,如果沒匹配上,再去找路由表進行轉發,所以說PBR覆蓋了正常的路由選擇進程。
·PBR中不匹配的數據包不會DENY(丟棄),而是normal forwarding(正常轉發)
注意: Applied to incoming packets PBR只針對於入項接口
例一:

第一步:
R1(config)#access-list 1 permit 1.1.1.0 0.0.0.255
R1(config)#access-list 2 permit 2.2.2.0 0.0.0.255
第二步:
R1(config)#route-map WOLF permit 10
R1(config-route-map)#match ip address 1
R1(config-route-map)#set ip next-hop 12.1.1.2 發給與本機直連的下一跳路由器
R1(config)#route-map WOLF permit 20
R1(config-route-map)#match ip address 2
R1(config-route-map)#set ip next-hop 13.1.1.3
第三步:
R1(config)#int e0/0  (入口調用策略)
R1(config-if)#ip policy route-map WOLF
PBR其它用途:
R1(config)#route-map PBR per 10
R1(config-route-map)#match ip address 9
R1(config-route-map)#set ip precedence 2 對數據分組設置優先級
R3#debug ip policy
  
本地策略路由:                    
·PBR默認對本地產生的數據流量不起效。也就是對自已產生的包不執行策略。
R3(config)#ip local policy route-map PBR (使PBR對本地數據流量有效)加上這一條命令纔會對自已產生的包也做策略
發佈了9 篇原創文章 · 獲贊 13 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章