NAT技術詳解及配置實例


NAT技術詳解及配置實例

2007022622:17:00

閱讀數:28241

NAT作為一種減輕IPv4地址空間耗盡速度的方法,最早出現在Cisco IOS 11.2版本中。  

為什么要使用NAT

1 內網中主機過多,沒有足夠的合法IP地址可用。

2 當ISP發生變化時,使用NAT技術避免了IP地址的重新編址。

3 當兩個合並的網絡中出現了重復地址的時候。

4 利用NAT來解決TCP的負載均衡問題。

5 隱藏內部網絡,增強安全性。

 

NAT就是將內網中使用的私有地址轉換成可在Internet上進行路由的合法地址的技術。

私有地址范圍:

10.0.0.0 ~ 10.255.255.255

172.16.0.0 ~ 172..31.255.255

192.168.0.0 ~ 192.168.255.255

 

NAT技術主要分為NAT和PAT。

NAT是從內部本地地址到內部全局地址的一對一轉換。

PAT是從多個內部本地地址到內部全局地址的多對一轉換。通過端口號確定其多個內部主機的唯一性。

 

NAT術語

Inside network:需要翻譯成外部地址的內部網絡。

Outside network:使用合法地址進行通信的外部網絡。

Local address:內部網絡使用的地址。

Global address:外部網絡使用的地址。

Inside local address:內部本地地址。數據在內部網絡使用的地址,一般為private ip address。

Inside global address:內部全局地址。數據為了到達外部網絡,用來代表inside local address的地址,一般為ISP提供的合法地址。

Outside local address:外部本地地址,不必是合法地址。當外部網絡數據到達內部網絡,外部網絡中的主機IP地址與內部網絡中的主機處在同一網段時,為防止內部主機誤認外部主機與自己在同一網段而廣播ARP請求,造成無法通信,將外部主機的地址轉換成外部本地地址之后再與內部主機進行通信。

Outside global address:數據在外部網絡使用的地址,是個合法地址。

Simple translation entry:把一個IP地址映射到另外一個地址上的一對一的翻譯方式。

Extended translation entry:把IP地址和端口(port)的組合翻譯成另外一個地址和端口的組合。

Static address translation:靜態地址翻譯,把一個local對應到一個global上去。

Dynamic address translation:動態翻譯,local和global池(pool)建立動態對應關系。

Port address translation(PAT):通過使用地址和端口的結合來達到多個local對應一個global的狀態。端口號用來確定每個local的唯一性。這樣的技術也叫超載(overloading)。

 

NAT的優缺點

優點:

1 極大的節省了合法的IP地址。

2 能夠處理地址重復情況,避免了地址的重新編號,增加了編址的靈活性。

3 隱藏了內部網絡地址,增強了安全性。

4 可以使多個使用TCP負載特性的服務器之間實現基本的數據包負載均衡。

缺點:

1 由於NAT要在邊界路由器上進行地址的轉換,增大了傳輸的延遲。

2 由於NAT改動了IP地址,失去了跟蹤端到端IP流量的能力。當出現惡意流量時,會使故障排除和流量跟蹤變的更加棘手。

3 不支持一些特定的應用程序。如早期版本的MSN。

4 增大了資源開銷。處理NAT進程增加了CPU的負荷,並需要更多內存來存儲NAT表項。

 

配置NAT

inside & outside

每個包含了NAT進程的接口必須被指定為內部接口或外部接口,但不能被同時指定為這兩個接口。在路由器上,必須至少有一個接口被配置成內部接口,一個接口被配置成外部接口。這樣路由器就知道怎樣在接口上處理入站和出站流量了。

D-Lab(config)#int e0    //進入接口模式

D-Lab(config-if)#ip nat inside   //指定inside接口出站

D-Lab(config-if)#int s0

D-Lab(config-if)#ip nat outside //指定outside接口入站

 

靜態NAT

inside|outside local和inside|outside global的一對一映射

D-Lab(config)#ip nat {inside|outside} source static <inside local> < inside global>

這樣就在NAT表中創建了一個永久表項。

配置示例:

D-Lab#config t

D-Lab(config)#int e0

D-Lab(config-if)#ip nat inside

D-Lab(config-if)#int s0

D-Lab(config-if)#ip nat outside

D-Lab(config)#ip nat inside source static 192.168.1.1 210.83.202.1

D-Lab(config)#ip nat outside source static 210.83.202.2 192.168.2.3

 

靜態PAT

D-Lab(config)#ip nat {inside|outside} source static <protocol> <inside local> < port> < inside global> < port>

配置示例:

D-Lab(config)#ip nat inside source static tcp 10.1.1.1 80 214.118.21.121 80

 

動態NAT

動態NAT用來將inside local快速映射到inside global上。這些inside local放在可用的IP地址池中。同樣,必須給參與NAT進程的路由器接口分配IP地址。

當內部網絡主機要與Internet上的主機進行通信時,NAT邊界路由器會從標記為“NAT內部”的接口接收數據包。

D-Lab(config)#ip nat pool <pool-name> <start-ip> <end-ip> netmask xxxx

D-Lab(config)#ip nat pool <pool-name> <start-ip> <end-ip> prefix-length xx     //掩碼長度

例:

D-Lab(config)#ip nat pool dyn-nat-pool 211.10.121.1 211.10.121.254 netmask 255.255.255.0

D-Lab(config)#ip nat pool dyn-nat-pool 211.10.121.1 211.10.121.254 prefix-length 24

配置示例:

D-Lab(config)#inter e0 

D-Lab(config-if)#ip add 192.168.1.1 255.255.255.0    

D-Lab(config-if)#ip nat inside     //指定內部接口

D-Lab(config-if)#inter s0

D-Lab(config-if)#ip add 210.83.202.1 255.255.255.192

D-Lab(config-if)#ip nat outside    //指定外部接口

D-Lab(config-if)#exit

D-Lab(config)#access-list 1 permit 192.168.1.0 0.0.0.255     //標記inside local范圍

D-Lab(config)#ip nat pool in-out210.83.202.2 210.83.202.8 prefix 24    //設置inside global地址池 

!

D-Lab(config)#ip nat inside source list 1 pool in-out    //啟用inside源地址翻譯,把標記的inside local范圍與inside global池關聯起來

 

動態PAT(多對一映射)

路由器為每個轉換表項添加第四層協議和端口信息

D-Lab(config)#ip nat inside source list 1 pool in-out overload

如果不知道出站IP地址,可在命令中指定出站接口

D-Lab(config)#ip nat inside source list 1 e0 overload

//如果接口shut或者接口沒有設置IP地址的話,NAT不會生效

配置實例:

D-Lab(config)#inter e0

D-Lab(config-if)#ip add 192.168.1.1 255.255.255.0

D-Lab(config-if)#ip nat inside

D-Lab(config)#inter s0

D-Lab(config-if)#ip add 210.83.202.1 255.255.255.192

D-Lab(config-if)#ip nat outside

!

!

!

D-Lab(config)#ip nat pool test210.83.202.2 210.83.202.8 prefix 24

!

D-Lab(config)#ip nat inside source list 9 pool test overload

D-Lab(config)#access-list 9 permit 192.168.1.0 0.0.0.255

 

為重復地址配置NAT

D-Lab(config)#ip nat pool in-out211.121.1.1 211.121.1.254 prefix-length 24   //設置local global池

D-Lab(config)#ip nat pool out-in10.1.2.1 10.1.2.254 prefix-length 24   //設置outside local池

D-Lab(config)#ip nat inside source list pool in-out    //啟用inside源地址翻譯,把標記的inside local范圍與inside global池關聯起來

D-Lab(config)#ip nat inside source list 1 pool out-in    //將在標記的inside local范圍里的outside global轉換成outside local池里的地址

D-Lab(config)#int fa0/0

D-Lab(config-if)#ip nat inside    //指定出站接口

D-Lab(config-if)#int s1/1

D-Lab(config-if)#ip nat outside    //指定入站接口

D-Lab(config-if)#exit

D-Lab(config)#access-list 1 permit 10.1.1.0 0.0.0.255    //標記inside local地址范圍

 

更靈活的地址池的配置:

ip nat pool <name> { netmask <mask> | prefix-length <length> } [ type { rotary } ]

這樣可以允許定義不連續地址池,接下來定義地址空間:

address <start> <end>

例:

D-Lab(config)#ip nat pool D-lab prefix-length 24

D-Lab(config-ipnat-pool)#address 11.69.73.12 11.69.73.14

D-Lab(config-ipnat-pool)#address 11.69.73.18 11.69.73.244

這樣就定義了一個11.69.73.12 ~ 11.69.73.14和11.69.73.18~11.69.73.244的地址池

 

NAT關聯routemap的配置:

ip nat inside source route-map <name> pool <name>

例:

ip nat pool d-1 173.26.232.1 173.26.232.254 prefix-length 24

ip nat pool d-2 24.10.12.1 24.10.12.254 prefix-length 24

ip nat inside source route-map d1-map pool d-1

ip nat inside source route-map d2-map pool d-2

!

interface Serial0/0

ip nat outside

!

interface Serial0/1

ip nat outside

!

route-map d1-map permit 10

match ip address 1

match interface Serial0/0

!

route-map d2-map permit 10

match ip address 1

match interface Serial0/1

 

配置NAT超時設置:

ip nat translation timeout <seconds>    //特權模式下

 

 

NAT配置的驗證和故障排除

sh ip nat translations    //查看生效的NAT表項

sh ip nat translations verbose    //查看生效的NAT表項的詳細信息

sh ip nat statistics    //顯示NAT的統計數字和配置信息

 

clear ip nat translation *    //清除所有NAT表項

clear ip nat translation inside <global-ip>    //清除指定的內部NAT表項 :

clear ip nat translation <protocol> <global-ip> <local-ip> <global-port> <local-port>    //清除指定的NAT表項

 

debug ip nat [ <list> ] [ detailed ]    //調試NAT進程

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM