單路由器多出口解決方案(route-map+sla+track)

    網絡拓撲請見附件:


背景: 當前越來越多的公司,隨着公司的網絡結構和規模的擴大,原有的網絡帶寬已經慢慢達到飽和,這時候需要網絡管理員考慮如何解決網速越來越慢的問題。在已經無法再用限制內部員工的網絡流量的方式之後,增加出口帶寬已經是迫在眉睫。一般都不會選擇直接撤掉原先的網絡,會先申請一根光纖,然後併入現有的網絡中,然後在等原先的帶寬到期廢棄。有些公司直接慢慢增加外網的出口線路。這樣的情況下多出口的網絡解決方案尤爲重要,能更好的利用網絡資源(一根商業光纖價格還是比較昂貴的)。也有些公司增加新的線路就是爲了做備份,可是老闆不會讓一根昂貴的線路睡覺(土豪忽略)。

本文就是要解決,通過分流內部網絡分別從不同的出口走,當一條線路down了,會自動切換到另一條線路上。題外話:最好不要安裝多條相同的isp服務商的線路在同一所大樓裏面,因爲一旦大樓機房某個服務商的光端機down了,那就都沒用啦。

(1)大體描述網絡拓撲結構

client1----->內網部分機器,client2------>內網部分機器。出口router鏈接內網,也就是連接client1和client2。router分別有二個出口分別連接isp1和isp2(都用路由器代替)。isp1和isp2之間也連接了,並且做了ospf,模擬廣域網。

(2)網絡設備ip地址

client1---192.168.10.2 ,網關:192.168.10.1;client2---192.168.20.2,網關:192.168.20.1;

router---10.10.10.2連接isp1---10.10.10.1;router---30.30.30.2連接isp2---30.30.30.1;isp1--

20.20.20.1連接isp2---20.20.20.2;

(3)模擬器

本實驗用的是web iou


配置:

(1) client1:

部分默認配置略

interface Ethernet0/0

 ip address 192.168.10.2 255.255.255.0

 no ip route-cache

!

ip default-gateway 192.168.10.1(因爲用路由器模擬的所以,先no ip routing後增加網關)

ip forward-protocol nd

(2)client2 

ip default-gateway 192.168.20.1

ip forward-protocol nd

ip default-gateway 192.168.20.1

(3)router

!

redundancy

!

!         

!

track 1 ip sla 1 reachability(此處定義一個track,跟蹤連接isp1的鏈路狀態,後面的1是調用這條語句的標識,後面是調用哪個sla,不要調用錯了。本語句的意思就是判斷 sla 1 所定義的語句判斷的結果,如果sla 1結果爲非,那麼結果就是track1 不可達,這個是track調用sla。track自己也可以直接跟蹤端口,並且被調用。但是track跟蹤端口只可以是本機的,端口,協議或者是服務。而sla 可以判斷鏈路對端的端口是否開啓可用。因爲在很多情況下,都有由於電信或者聯通的機房出現問題導致鏈路不可用,如果用track本機,那麼就算對方down了,也不會被判斷出來,所以這裏就是track 和sla的結合使用)

!

track 2 ip sla 2 reachability (定義 track 2,跟蹤連接isp2的鏈路狀態)


interface Ethernet0/0

 ip address 192.168.10.1 255.255.255.0

 ip nat inside

 ip virtual-reassembly in

 ip policy route-map ccie 

!

 --More-- 

*Nov  2 08:24:59.059: %SYS-5-CONFIG_I: Configured from console by console

interface Ethernet0/1

 ip address 192.168.20.1 255.255.255.0

 ip nat inside

 ip virtual-reassembly in

 ip policy route-map ccie (在內部兩個接口上應用route-map,這裏解釋一下做route-map和nat的思路,因爲這個解決方案裏面的route-map比較多,很多剛剛接觸的不知道從何下手,不知道如何去合理的理清思路。大家不妨這樣想,一個內部數據要想送出去,那麼到達路由器被送出去的時候,網關路由器要對數據進行封裝,那麼就需要知道下一條地址和如何被PAT轉換。那麼就很簡單了,分爲二部分解決,二者route-map沒有直接關聯,直接關聯的都是內部的數據。在內部端口應用的策略是爲了讓路由器的得到下一條地址。所以以上二個內部端口都應用了route-map)


!

interface Ethernet0/2 (外部端口連接isp1)

 ip address 10.10.10.2 255.255.255.0

 ip nat outside

 ip virtual-reassembly in

!

interface Ethernet0/3 (外部端口連接isp2)

 ip address 30.30.30.2 255.255.255.0

 ip nat outside

 ip virtual-reassembly in


!

no ip http server

no ip http secure-server

ip nat inside source route-map nat1 interface Ethernet0/2 overload

ip nat inside source route-map nat11 interface Ethernet0/3 overload

(以上二句是處理route-map定義的流量 如何被pat,因爲是二個出口,所以需要二條語句,第二條爲isp2出口,當isp1線路down了之後,路由器會通過第二條語句來pat流量)

ip nat inside source route-map nat2 interface Ethernet0/3 overload

ip nat inside source route-map nat22 interface Ethernet0/2 overload

(同上)

ip route 0.0.0.0 0.0.0.0 10.10.10.1

ip route 0.0.0.0 0.0.0.0 30.30.30.1

!

ip access-list extended client1 (定義client1的感興趣流)

 permit ip 192.168.10.0 0.0.0.255 any

ip access-list extended client2(定義client2的感興趣流)

 permit ip 192.168.20.0 0.0.0.255 any

!

ip sla 1 (測試到isp1的線路)

 icmp-echo 10.10.10.1 source-ip 10.10.10.2

 frequency 5(定義一個sla 通過icmp的echo包從本機的10.2到10.1,並且是5秒一次,不能低於5秒。如果10.1down了那麼sla 1 結果就是非,track 1 的結果就是非)

ip sla schedule 1 life forever start-time noaw

(定義sla 1 從現在開始到永遠 都開啓)

ip sla 2 (測試到isp2 的線路)

 icmp-echo 30.30.30.1 source-ip 30.30.30.1

 frequency 5

ip sla schedule 2 life forever start-time now

!

route-map ccie permit 10

 match ip address client1

 set ip next-hop verify-availability 10.10.10.1 1 track 1

 set ip next-hop verify-availability 30.30.30.1 2 track 2

!

route-map ccie permit 20

 match ip address client2

 set ip next-hop verify-availability 30.30.30.1 1 track 2

 set ip next-hop verify-availability 10.10.10.1 2 track 1

這個route-map是用於定義下一條地址,分別匹配client1和client2的流量,然後爲匹配的流量設定下一跳地址,下面一條是備用下一跳地址,只有當第一條語句結果爲非時才能用到下一句,還不清楚route-map語法和規則請百度。這樣就client1和2定義了主備下一跳地址了,當然是用在內部端口上

!

route-map nat2 permit 10

 match ip address client2

 match interface Ethernet0/3

!

route-map nat1 permit 10

 match ip address client1

 match interface Ethernet0/2

!

route-map nat11 permit 10

 match ip address client1

 match interface Ethernet0/3

!

route-map nat22 permit 10

 match ip address client2

 match interface Ethernet0/2

!

(這四個route-map和上面的route-map沒有關聯。主要是爲了匹配流量和匹配對應的端口,爲下面的pat,可以結合上面的pat部分來看。二者是對應的關係。)

end

以上就是router的配置。

isp1和isp2的配置由於時間關係就忽略了,裏面就是對應的端口ip和ospf。下面就直接上測試結果。全部是真實的實驗結果。

router路由器上面開啓了debug ip nat,查看轉換結果

(1)測試1,client1到外網走isp1出口。在client1 上ping廣域網

在router上的nat轉換表爲:

*Nov  2 10:54:55.853: NAT*: s=192.168.10.2->10.10.10.2, d=10.10.10.1 [30]

*Nov  2 10:54:55.854: NAT*: s=10.10.10.1, d=10.10.10.2->192.168.10.2 [30]

*Nov  2 10:54:55.859: NAT*: s=192.168.10.2->10.10.10.2, d=10.10.10.1 [31]

*Nov  2 10:54:55.859: NAT*: s=10.10.10.1, d=10.10.10.2->192.168.10.2 [31]

說明正確。

(2)測試2,關閉isp2路由器的端口。查看網關router的track:

Router#sh track 

Track 1

  IP SLA 1 reachability

  Reachability is Up

    2 changes, last change 00:07:31

  Latest operation return code: OK

  Latest RTT (millisecs) 1

  Tracked by:

    ROUTE-MAP 0

Track 2

  IP SLA 2 reachability

  Reachability is Down

    1 change, last change 00:12:07

  Latest operation return code: Timeout

  Tracked by:

    ROUTE-MAP 0


然後在從client2上ping外網,本應該轉換爲30.30.30.2。

*Nov  2 11:04:25.625: NAT*: s=192.168.20.2->10.10.10.2, d=20.20.20.1 [15]

*Nov  2 11:04:25.626: NAT*: s=20.20.20.1, d=10.10.10.2->192.168.20.2 [15]

*Nov  2 11:04:25.630: NAT*: s=192.168.20.2->10.10.10.2, d=20.20.20.1 [16]

*Nov  2 11:04:25.631: NAT*: s=20.20.20.1, d=10.10.10.2->192.168.20.2 [16]

已經轉換成 10.10.10.2的外網地址。

實驗結束。謝謝!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章