一、HSRP中應用NAT的情況
當有兩個運作HSRP的路由器時,如果活動的路由器出現故障,備用路由器會接管。然而,如果使用NAT的時候出現這種情況,它會切斷通過使用動态NAT的活動路由器的所有連接配接,而且使用者将需要重建立立這些連接配接。該如何使用HSRP和SNAT以保持這些NAT轉換呢?
<b>二、什麼是SNAT?</b>
對于SNAT到底代表什麼會産生一些混淆,Google搜尋将傳回各種不同的定義。根據微軟的說法,SNAT代表Secure NAT(安全NAT)而且在ISA Server上可用。除此之外,SNAT可以代表Source NAT(源NAT)。然而,按照Cisco的說法,SNAT代表Stateful NAT(狀态NAT)。
SNAT包括兩個或更多作為一個組執行NAT功能的路由器。這些NAT路由器在它們的NAT轉換資料庫中互相交換資訊。可以使用show ip nat translations指令檢視這些資訊,該指令的輸出列出了協定,内部全局IP,内部本地IP,外部本地IP以及外部全局IP。
無論何時一個新的NAT連接配接通過某個NAT路由器時,路由器将該資訊中繼給SNAT組中的其它路由器。但是這些路由器并非隻是交換NAT IP流的IP 位址;它們還交換這些流的TCP狀态。備用路由器已經建立了NAT轉換表并且等待活動路由器出現故障。
換句話說,這個NAT流資訊交換的目的是保證,如果活動NAT路由器出現故障,某個備用NAT能夠接管。盡管可以配置SNAT為主/備份模式,但是它在用HSRP配置的時候工作得很好。
<b>三、Cisco分階段釋出的SNAT</b>
第一個階段,在Cisco in IOS 12.2(13)T的釋出中,它隻對在應用層中不包含IP位址的協定有效。但是對于Cisco IOS 12.3(7)T,SNAT支援在應用層中嵌入IP資訊的應用,例如FTP。除此之外,Cisco在IOS 12.4(4)T中為SNAT釋出了一些可伸縮的增強。
<b>四、如何配置SNAT?</b>
要配置帶HSRP的SNAT,首先在HSRP接口使用正常的HSRP standby指令。還需要以組名SNATHSRP配置一個HSRP路由器以使用SNAT HSRP API。
你的standby指令應該類似于:
standby name SNATHSRP standby ip 10.10.10.1
在退出接口配置模式之後,輸入ip nat stateful指令;確定它包括相同的SNATHSRP組名。Mapping ID 指令用于指定本地SNAT路由器是否分發本地被建立的nat條目到對端 SNAT router,這裡是一個例子:
ip nat stateful id 1 redundancy SNATHSRP mapping-id 10
現在可以輸入你的标準NAT指令以建立你的轉換池。這裡是一個例子:
access-list 100 permit ip 192.168.1.0 0.0.0.255 any
ip nat pool snatpool1 155.1.45.1 155.1.45.254 prefix-length 24 ip nat inside source list 100 pool snatpool1 mapping-id 10 overload
最後,配置SNAT和HSRP池中的其它路由器以進行通信。之後,可以使用show ip nat translations,show ip nat statistics以及show ip snat這樣的附加NAT指令。
在發生故障的時候結合使用SNAT和HSRP以保持NAT轉換。備用路由器可以加入并接管活動的任務,使用者不會發現出現了故障。
四、實驗配置
【實驗拓撲】

【實驗要求】
1、按照上圖配置好網絡以及HSRP
2、設定HSRP的NAT
3、驗證時通過R6 telnet R1,保證在R4的s0/0接口中斷的情況下,telnet依然可以進行而無需重新連接配接
【實驗配置】
<b>R1:</b>
interface Serial 0/0
encapsulation frame-relay
no frame-relay inverse-arp
ip address 155.1.0.1 255.255.255.0
frame-relay map ip 155.1.0.5 105 broadcast
frame-relay map ip 155.1.0.4 104 broadcast
ip ospf network broadcast
no shutdown
!
router ospf 1
router-id 150.1.1.1
network 155.1.0.1 0.0.0.0 area 0
<b>R4:</b>
interface E 0/1
ip address 155.1.100.4 255.255.255.0
standby 1 name GROUP1
standby 1 ip 155.1.100.254
standby 1 preempt
standby 1 priority 110
standby 1 track Serial 0/0 20
ip address 155.1.0.4 255.255.255.0
frame-relay map ip 155.1.0.5 401 broadcast
frame-relay map ip 155.1.0.1 401
ip ospf priority 0
interface Loopback0
ip address 150.1.45.4 255.255.255.0
router-id 150.1.4.4
redistribute connected subnets metric 400
network 155.1.0.4 0.0.0.0 area 0
<b>R5:</b>
interface E 0/0
ip address 155.1.100.5 255.255.255.0
standby 1 priority 100
no shut
ip address 155.1.0.5 255.255.255.0
frame-relay map ip 155.1.0.1 501 broadcast
frame-relay map ip 155.1.0.4 501
ip address 150.1.45.5 255.255.255.0
router-id 150.1.5.5
network 155.1.0.5 0.0.0.0 area 0
redistribute connected subnets metric 500
<b>R6:</b>
interface G 0/0
ip address 155.1.100.6 255.255.255.0
ip route 0.0.0.0 0.0.0.0 155.1.100.254
<b>NAT 配置</b>
----------------------------------------------------------------------------------
interface Eth 0/0
ip nat inside
ip nat outside
access-list 100 permit ip 155.1.100.0 0.0.0.255 any
定義允許内部的位址
ip nat pool POOL 150.1.45.1 150.1.45.254 prefix 24
定義被轉換的位址池
redundancy GROUP1
定義狀态NAT,指定standby name,并且允許本地SNAT路由器分發nat條目到對端NAT
ip nat inside source list 100 pool POOL mapping-id 10
做NAT配置,并設定mapping-id
R4:
interface Ethernet 0/1
【實驗驗證】
R4#show ip snat distributed
Stateful NAT Connected Peers
SNAT: Mode IP-REDUNDANCY :: ACTIVE
: State READY : Local Address 155.1.100.4 : Local NAT id 1 : Peer Address 155.1.100.5 : Peer NAT id 1 : Mapping List 100
R5#show ip snat distributed
SNAT: Mode IP-REDUNDANCY :: STANDBY
: Local Address 155.1.100.5 : Peer Address 155.1.100.4
R6#telnet 155.1.0.1
Trying 155.1.0.1 ... Open
R1>
通過R4與R5能夠看到相同的條目
R4#show ip nat translations
Pro Inside global Inside local Outside local Outside global
tcp 150.1.45.1:24986 155.1.100.6:24986 155.1.0.1:23 155.1.0.1:23
--- 150.1.45.1 155.1.100.6 --- ---
R5#show ip nat translations
--- 150.1.45.1 155.1.100.6 --- -
R4#<b>conf t</b>
Enter configuration commands, one per line. End with CNTL/Z.
R4(config)#<b>interface serial 0/0</b>
R4(config-if)#<b>shutdown</b>
R5#<b>show standby</b>
Ethernet0/0 - Group 1
State is Active
R5變成了active
2 state changes, last state change 00:00:26
Virtual IP address is 155.1.100.254
Active virtual MAC address is 0000.0c07.ac01
Local virtual MAC address is 0000.0c07.ac01 (v1 default)
Hello time 3 sec, hold time 10 sec
Next hello sent in 0.024 secs
Preemption enabled
Active router is local
Standby router is 155.1.100.4, priority 90 (expires in 8.020 sec)
Priority 100 (default 100)
IP redundancy name is "GROUP1" (cfgd)
tcp 150.1.45.1:33932 155.1.100.6:33932 155.1.0.1:23 155.1.0.1:23
R5#
R6#<b>telnet 155.1.0.1</b>
User Access Verification
Password:
連接配接的telnet一直沒有斷開
【下面測試普通NAT帶來的效果】
驗證:
先tenet到R1上
R1>exit
[Connection to 155.1.0.1 closed by foreign host]
然後再R4上手動shutdown s0/0接口
看上面的高亮顯示,連接配接被重置,此時nat也将失效