史萊姆論壇

返回   史萊姆論壇 > 教學文件資料庫 > 網路軟硬體架設技術文件
忘記密碼?
論壇說明 標記討論區已讀

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


 
 
主題工具 顯示模式
舊 2004-04-30, 10:53 PM   #1
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 Internet多出口實例分析

Internet多出口實例分析(一)

網路場景:單路由器、Internet多出口、熱制作備份

下面先轉一個針對此場景的帖子:

用route map實現多ISP Internet接入工程實例
作者:usr001
/*轉載請保留作者資訊*/

隨著我國寬帶技術的普及,各個公司都會有一至二條Internet接入線路,這些線路可能由電信、網通、長寬、聯通等不同的IS提供,儘管他們在局端採用的技術可能有不同,但對客戶而言都是同樣接入方式,以太網接入,全部採用8個0的預設路由,而且每個ISP都提供了幾個公共外網IP,因此需用到多個NAT位址池,若採用普通的NAT轉換,則會發現只有一個NAT位址池起作用,路由器並不會使用其餘位址池,那麼,如何配置CISCO路由器以實現多NAT位址池轉換,就要用到ROUTE map,我前些日子作了一個工程,正好用到此項技術,考慮到這種實現方法今後會越來越多,特將配置程序寫出來,供各位共享。

第一步:進入配置模式:
ROUTER>EN
ROUTER#CONFIG T

第二步:配置連接阜
/*接區域網路*/
Router(Config)>int fa 0/0
Router(Config-if)>ip addr 192.168.0.1 255.255.255.0
Router(Config-if)>no shut
Router(Config-if)>ip nat inside

/*接ISP1網口*/
Router(Config-if)>int fa 0/1
Router(Config-if)>ip addr 168.168.18.158 255.255.255.252
Router(Config-if)>no shut
Router(Config-if)>ip nat outside

/*接ISP2網口*/
Router(Config-if)>int s1/0
Router(Config-if)>ip addr 68.18.18.2 255.255.255.224
Router(Config-if)>no shut
Router(Config-if)>ip nat outside

第三步:設定NAT位址池
Router(Config)>Ip Nat Pool Isp1_pool 218.18.18.2 218.18.18.6 Netmask 255.255.255.224
Router(Config)>Ip Nat Pool Isp2_pool 68.18.18.4 68.18.18.10 Netmask 255.255.255.224

第四步:設定訪問控制列表和NAT轉換規則
Router(Config)>Access-list 100 permit Ip 192.168.0.0 0.0.0.255 any
Router(Config)>Ip Nat Inside Source Route-map Isp1 Pool Isp1_pool
Router(Config)>Ip Nat Inside Source Route-map Isp2 Pool Isp2_pool

第五步:設定ROUTE MAP規則
Router(Config)>Route-map Isp1 Permit 10
Router(Config-route-map)>Match Ip address 100
Router(Config-route-map)>Match Int Fa 0/1

Router(Config)>Route-map Isp2 Permit 10
Router(Config-route-map)>Match Ip address 100
Router(Config-route-map)>Match Int S1/0

第六步:設定浮動靜態路由
Router(Config)>Ip Route 0.0.0.0 0.0.0.0 168.168.18.157
Router(Config)>Ip Route 0.0.0.0 0.0.0.0 68.18.18.1 20

第七步:結束並儲存配置:
Router(Config)>end
Router#Copy Ru St

本文允許進行自由轉載,但請保留作者資訊,並不得用於商業用途.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

謝謝usr001的文章,寫得很好。根據usr001的文章我複製了一個環境,進行實際環境測試:

1、環境模擬

拓撲圖見文末

Internet接入路由器2611XM的主要配置:

interface FastEthernet0/0
ip address 1.1.1.2 255.255.255.0
ip nat outside

interface FastEthernet0/1
ip address 2.2.2.2 255.255.255.0
ip nat outside

interface Ethernet1/0
ip address 192.168.168.172 255.255.255.0
ip nat inside

ip nat inside source route-map ISP1 interface FastEthernet0/0 overload
ip nat inside source route-map ISP2 interface FastEthernet0/1 overload
!---我這裡沒有用位址池,借用了外網接頭的位址,這兩個NAT轉換分別引用了route map ISP1和ISP2

access-list 10 permit 192.168.168.170
!---為方便測試,只允許局內網的一台機器出去

route-map ISP1 permit 10
match ip address 10
match interface FastEthernet0/0
!---針對ISP1的NAT route map,如果滿足條件:源位址為ACL 10中的流量、出口位址為F0/0,則進行NAT位址轉換

route-map ISP2 permit 10
match ip address 10
match interface FastEthernet0/1
!---針對ISP2的NAT route map,如果滿足條件:源位址為ACL 10中的流量、出口位址為F0/1,則進行NAT位址轉換

ip route 0.0.0.0 0.0.0.0 1.1.1.1
ip route 0.0.0.0 0.0.0.0 2.2.2.1 30
!---浮動路由,首選路由為ISP1,制作備份路由為ISP2

2、問題分析

檢視路由表,可發現預設路由指向ISP1:

2611XM#sh ip route sta
S* 0.0.0.0/0 [1/0] via 1.1.1.1

在192.168.168.170電腦上ping 3.3.3.3(3.3.3.3為ISP1路由器上的環回位址),再看NAT轉換表:

2611XM#sh ip nat trans
Pro Inside global Inside local Outside local Outside global
icmp 1.1.1.2:768 192.168.168.170:768 3.3.3.3:768 3.3.3.3:768

現在把2611XM到ISP1路由器之間的連線拔掉,檢視路由表,可發現預設路由已轉向ISP2:

2611XM#sh ip route sta
S* 0.0.0.0/0 [30/0] via 2.2.2.1

這時我的192.168.168.170仍在ping 3.3.3.3沒停,現在再看NAT轉換表:

2611XM#sh ip nat trans
Pro Inside global Inside local Outside local Outside global
icmp 1.1.1.2:768 192.168.168.170:768 3.3.3.3:768 3.3.3.3:768

可以看到有點奇怪,NAT轉換表中的global位址仍然用的是連接ISP1接頭的接頭位址。

在ISP2的路由器上開啟debug

ISP2#debug ip icmp
ICMP packet debugging is on
Router#
00:24:00: ICMP: echo reply sent, src 3.3.3.3, dst 1.1.1.2
00:24:00: ICMP: echo reply sent, src 3.3.3.3, dst 1.1.1.2

可以看到ISP2的返回流量是往1.1.1.2送,我這裡的ISP2是台模擬的ISP路由器,實際的ISP路由器看到這個1.1.1.2的位址就會往它的預設網關回送,最終送到1.1.1.2所屬ISP1的AS,然後到達ISP1路由器。

為什麼會出現這個現象呢?Cisco我的文件中有一句話很好地闡釋了這個問題:

If a translation entry already exists that matches the traffic then the translation entry will be used; any access lists or route maps will not be consulted.

因為NAT轉換表中仍然存在著這個表項,所以即使網路出口改變了,它仍然會沿用原來的轉換表。

有什麼解決辦法呢?一個是手工用clear ip nat trans *清除所有的轉換表項,另一個辦法就是消極等待,如ICMP的轉換表項的timer為一分鐘,如果一分鐘內192.168.168.170沒有什麼動作,再ping 3.3.3.3,可以看到這時global位址已成為連接ISP2的接頭位址:

2611XM#sh ip nat trans
Pro Inside global Inside local Outside local Outside global
icmp 2.2.2.2:768 192.168.168.170:768 3.3.3.3:768 3.3.3.3:768

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Internet多出口實例分析(二)

網路場景:雙路由器、Internet多出口、熱制作備份

拓撲圖見文末

在擁有雙路由器多Internet出口的情況下,可以在兩台路由器間執行stateful NAT。Stateful NAT的好處是NAT primary路由器的NAT資訊可以被NAT backup路由器接收到,NAT primary路由器和NAT backup路由器之間通過TCP傳輸協定進行通訊。當NAT primary路由器失效後,NAT backup路由器儲存有NAT資訊並接替上來,從而保證業務流量不中斷。
Stateful NAT有兩種配置方式:SNAT Primary/Backup、SNAT和HSRP聯動。SNAT Primary/Backup配置方式是手動指定哪台路由器為primary,哪台為backup;和HSRP聯動則由HSRP的狀態來決定SNAT的Primary/Backup狀態。
使用stateful NAT的局限性是兩條接入鏈路都要屬於同一家ISP,因為NAT backup路由器上的NAT資訊都是由NAT primary路由器上得來,Cisco我的文件的建議:
it is recommended that you always code identical dynamic NAT configurations for peer SNAT routers

配置部分(RTA):

interface Ethernet0/0
ip address 192.168.168.171 255.255.255.0
ip nat inside
standby ip 192.168.168.173
standby priority 105
standby preempt
standby name test
!---配置HSRP冗余,standby name為test,RTA的HSPR priority為105,RTB的priority為預設值100,RTA成為active router

interface Ethernet1/0
ip address 10.0.0.1 255.255.255.0
ip nat outside

ip nat Stateful id 1
redundancy test
mapping-id 5
!---配置stateful NAT,注意id值在不同的路由器上應具有不同的值。stateful NAT中redundancy test中的test和以太口上的standby name值應相同。mapping id被IP NAT語句來引用

ip nat pool test_pool 1.1.1.10 1.1.1.20 prefix-length 24
ip nat inside source list 10 pool test_pool mapping-id 5 overload
!---配置NAT,mapping-id 5中的5和stateful NAT中的配置相對應

access-list 10 permit 192.168.168.170
!---同樣,為方便測試,只允許一台機器出去

配置部分(RTB):

interface Ethernet1/0
ip address 192.168.168.172 255.255.255.0
ip nat inside
standby ip 192.168.168.173
standby preempt
standby name test
!---和RTA的配置類似

interface FastEthernet0/0
ip address 10.0.0.2 255.255.255.0
ip nat outside

ip nat Stateful id 2
redundancy test
mapping-id 5
!---配置stateful NAT,這裡的id值為2。其餘的配置說明參見RTA的配置

ip nat pool test_pool 1.1.1.10 1.1.1.20 prefix-length 24
ip nat inside source list 10 pool test_pool mapping-id 5 overload
!---配置NAT

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

show部分(RTA):

RTA#sh ip snat di

Stateful NAT Connected Peers

SNAT: Mode IP-REDUNDANCY :: ACTIVE
: State READY
: Local Address 192.168.168.171
: Local NAT id 1
: Peer Address 192.168.168.172
: Peer NAT id 2
: Mapping List 5

RTA#sh standby
Ethernet0/0 - Group 0
State is Active
5 state changes, last state change 00:22:20
Virtual IP address is 192.168.168.173
Active virtual MAC address is 0000.0c07.ac00
Local virtual MAC address is 0000.0c07.ac00 (default)
Hello time 3 sec, hold time 10 sec
Next hello sent in 2.019 secs
Preemption enabled
Active router is local
Standby router is 192.168.168.172, priority 100 (expires in 9.051 sec)
Priority 105 (configured 105)
IP redundancy name is "test" (cfgd)

RTA#sh ip snat peer 192.168.168.172

Show NAT Entries created for peer: 192.168.168.172

Pro Inside global Inside local Outside local Outside global
!---在機器192.168.168.168上不斷ping 10.0.0.1外網位址以產生NAT表項。因為這時RTA是SNAT的active router,所以看SNAT對端的NAT表項顯示為空

show部分(RTB):

RTB#sh ip snat di

Stateful NAT Connected Peers

SNAT: Mode IP-REDUNDANCY :: STANDBY
: State READY
: Local Address 192.168.168.172
: Local NAT id 2
: Peer Address 192.168.168.171
: Peer NAT id 1
: Mapping List 5

RTB#sh stand
Ethernet1/0 - Group 0
State is Standby
26 state changes, last state change 00:22:29
Virtual IP address is 192.168.168.173
Active virtual MAC address is 0000.0c07.ac00
Local virtual MAC address is 0000.0c07.ac00 (default)
Hello time 3 sec, hold time 10 sec
Next hello sent in 1.037 secs
Preemption enabled
Active router is 192.168.168.171, priority 105 (expires in 7.760 sec)
Standby router is local
Priority 100 (default 100)
IP redundancy name is "test" (cfgd)

RTB#sh ip snat peer 192.168.168.171
icmp 1.1.1.11:768 192.168.168.170:768 10.0.0.1:768 10.0.0.1:768
!---因為這時RTA是SNAT的active router,所以在RTB上看RTA的NAT表項時可以看到顯示結果

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

把RTA的外網網線拔掉,再在RTB上看SNAT狀態:

RTB#sh ip snat d

Stateful NAT Connected Peers
!---對端路由器失效,結果顯示為空

RTB#sh standby
Ethernet1/0 - Group 0
State is Active
29 state changes, last state change 00:01:21
Virtual IP address is 192.168.168.173
Active virtual MAC address is 0000.0c07.ac00
Local virtual MAC address is 0000.0c07.ac00 (default)
Hello time 3 sec, hold time 10 sec
Next hello sent in 2.748 secs
Preemption enabled
Active router is local
Standby router is unknown
Priority 100 (default 100)
IP redundancy name is "test" (cfgd)
!---這時RTB成為HSRP active router,192.168.168.168仍可和外網進行通訊

Internet多出口實例分析(三)

網路場景:單路由器、Internet多出口、手動負載均衡

在《Internet多出口實例分析(一)》一文的實例中,我們實現了Internet接入鏈路冗余的功能,但大多數情況下用戶並不希望兩條接入鏈路中總有一條是閒置的。在這種情況下我們希望出口鏈路能做到負載均衡,但要實現Internet鏈路能達到動態負載均衡,最好的辦法就是使用BGP路由傳輸協定,但因為AS自治域號碼的稀缺,對普通的中小型企業網來講這基本是不可能的,在這種情況下我們就只能通過手動方式來實現流量負載均衡。
以前一個工程中就正好遇到這種情況,用戶是一個網咖,接了電信和網通兩條線路進來,用戶要求能實現兩條鏈路分擔網咖用戶的上網流量。偵錯是我們的一個同事去做的,做完後用戶反映說上網較慢,要求解決此問題。

我這個同事做的配置和《Internet多出口實例分析(一)》一文中的配置是類似的,但做了些變化,一個是在兩個route map中引用了兩個不同的ACL,而不是如「實例分析(一)」中的兩個route map均引用了同一個ACL,這樣做的目的是讓符合ACL 10的流量源位址轉換為ISP1的位址,符合ACL 20的流量源位址轉換為ISP2的位址,達到的效果就是手動分流:

Router(Config)>Route-map ISP1 Permit 10
Router(Config-route-map)>Match Ip address 10

Router(Config)>Route-map ISP2 Permit 10
Router(Config-route-map)>Match Ip address 20

第二個變化是路由設定的變化:

ip route 0.0.0.0 0.0.0.0 1.1.1.1
ip route 0.0.0.0 0.0.0.0 2.2.2.2

沒有做浮動路由。他的考慮是首先通過NAT中的route map實現內部網段的手動源位址轉換,然後再通過等價靜態路由來實現流量分擔。這種方式乍一看好像沒什麼問題,但實際實現起來為什麼會出現網路慢的情況呢?
問題出在等價靜態路由上,並且和路由器所採用的交換方式有關,在預設情況下Cisco路由器所有的接頭都採用fast switching交換模式,一種類似關於流的交換方式。採用這種交換方式會造成一種結果,就是出口不確定,有可能源位址為電信的資料包被轉發到網通的出口接頭上,而源位址為網通的資料包卻被轉發到電信的接頭上,最終的結果就是用戶抱怨網路慢。

那怎麼解決這個問題呢?答案是再加原則路由。在解決這個問題之前要先澄清一個問題,就是路由、原則路由、NAT,究竟誰發生在前,誰發生在後。針對資料包是由局內網發往外網的情況,事件發生順序如下:

NAT Order of Operation
Inside-to-Outside

* If IPSec then check input access list

* decryption - for CET (Cisco Encryption Technology) or IPSec

* check input access list

* check input rate limits

* input accounting

* policy routing

* routing

* redirect to web cache

* NAT inside to outside (local to global translation)

* crypto (check map and mark for encryption)

* check output access list

* inspect (Context-based Access Control (CBAC))

* TCP intercept

* encryption

可以看到原則路由最先、路由其次,最後才是NAT。既然原則路由是一種靜態路由,那麼我們首先要做的事情就是先把預設路由去掉:

no ip route 0.0.0.0 0.0.0.0 1.1.1.1
no ip route 0.0.0.0 0.0.0.0 2.2.2.2

然後設定原則路由:

route-map my_policy permit 10
match ip address 10
set ip next-hop FastEthernet0/1
!---滿足條件ACL 10的,往F0/1接頭送

route-map my_policy permit 20
match ip address 20
set ip next-hop Serial1/0
!---滿足條件ACL 20的,往S1/0接頭送

interface FastEthernet0/0
ip route-cache policy
ip policy route-map my_policy
!---在局內網接頭上套用route map

Router(Config)>Route-map ISP1 Permit 10
Router(Config-route-map)>Match Ip address 10
!---因為NAT發生在PBR之後,這時流量的出口接頭已由route-map my_policy確定,Match Int Fa 0/1一句可忽略

Router(Config)>Route-map ISP2 Permit 10
Router(Config-route-map)>Match Ip address 20
!---因為同樣的原因,Match Int S1/0可忽略

做如上修改後,用戶網路慢的情況基本消除,問題解決。

待續:Internet多出口實例分析(三)
路由器和防火牆並存的情況
Alien
psac 目前離線  
送花文章: 3, 收花文章: 1630 篇, 收花: 3204 次
 


主題工具
顯示模式

發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 04:11 AM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2020, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1