NAT详解!
NAT(Network Address Traslation)
Functions:
為了緩解IPv4地址的匱乏。
可以應用于:更換ISP或兩個企業內部網絡合并而需要修改內部地址方案的時。
Integrate Static and Dynamic NAT:
以下為需要結合使用動態和靜態NAT的情況:
1>有多個地址空間重疊的網絡
2>修改了方案(更換了ISP)
3>網絡服務器(DNS或WEB服務器)的地址不能變
NAT Teminology and Conception:
NAT的實現是通過修改IP分組的報頭,更換其中的源地址/目標地址,或全部。
內部/外部:IP主機相對于NAT設備的物理位置。
本地/全局:用戶相對于NAT設備的位置或視角。
內部本地IP地址:私有的IP地址。分配給內部網絡的IP地址。
內部全局IP地址:合法的IP地址。將內部IP地址轉換成的目標地址,代表內部主機訪問外部網絡。
外部全局IP地址:合法的IP地址。另一網絡的主機使用的相對于它的全局地址,代表它訪問外部網絡。
外部本地IP地址:私有的IP地址。本地網絡看到的外部網絡的IP地址,有NAT設備轉換成形成的。
Static Translation:轉換規則是靜態指定的,此條目既可以從內部也可以從外部發起連接,因為轉換后的地址總是保留在轉換表中。(不論是使用inside-source-list或是outside-source-list)
Dynamic Translation:轉換規則是動態的指定,IP地址動態的從特定的地址池中取出來。此條目只能從內部或外部發起連接,取決于配置。
如果使用命令:ip nat inside source list配置只能從內部到外部的動態NAT,即只能從內部發起連接。
如果使用命令:ip nat outside source list配置只能從外部到內部的動態NAT,即只能從外部發起連接。
Character:
優點:
1>企業網可以使用私有IP地址在內部,節省了IP地址。
2>可減少編址方案的重疊情況。使有相同編址方案的網絡可以共存。
3>更換ISP時不需要改變編址方案。
缺點:
1>NAT會增加延遲,因為CPU要檢查每個分組。此時默認,處理第一次轉換時,轉換被存儲到高速緩存中,對于隨后的分組將進行快速交換。
2>NAT導致無法進行端到端的IP跟蹤,但同時增加了安全性。
3>NAT使某些在有效負載中使用IP地址的應用無法運行,這是因為要轉換有效負載中的IP地址,NAT必須地知道從哪里開始。所以部署NAT時,應核實NAT是否支持已有的應用。
Configuration Command Reference:
1> ip nat {inside|outside}
2> ip nat inside source static {tcp|udp local-ip local-port global-ip global-port}
3> ip nat outside source static {tcp|udp local-ip local-port global-ip global-port}
4> ip nat pool pool-name start-ip end-ip {netmask netmask|prefix-length prefix-length} [type rotary]
5> ip nat inside source list access-list-number pool pool-name
6> ip nat outside source list access-list-number pool pool-name
Case Study:轉換內部源地址
Static NAT Translation:
R1(config)#ip nat inside source static 10.1.1.1 192.168.2.2
R1(config)#int e0
R1(config-if)#ip add 10.1.1.10 255.255.255.0
R1(config-if)#ip nat inside
R1(config)#int s0
R1(config-if)#ip add 172.16.2.1 255.255.255.0
R1(config-if)#ip nat outside
Static PAT Translation:
R1(config)#ip nat inside source static tcp 10.1.1.1 80 192.168.2.2 80
R1(config)#ip nat inside source static tcp 10.1.1.2 25 192.168.2.2 25
R1(config)#int e0
R1(config-if)#ip add 10.1.1.10 255.255.255.0
R1(config-if)#ip nat inside
R1(config)#int s0
R1(config-if)#ip add 172.16.2.1 255.255.255.0
R1(config-if)#ip nat outside
Dynamic NAT Translation:
R1(config)#ip nat pool sense-nat-list 192.168.2.1 192.168.2.254 netmask 255.255.255.0
R1(config)#ip nat inside source list 1 pool sense-nat-list
R1(config)#int e0
R1(config-if)#ip add 10.1.1.10 255.255.255.0
R1(config-if)#ip nat inside
R1(config)#int s0
R1(config-if)#ip add 172.16.2.1 255.255.255.0
R1(config-if)#ip nat outside
R1(config)#access-list 1 10.1.1.0 0.0.0.255
Case Study:轉換外部源地址
Static NAT Translation:
R1(config)#ip nat outside source static 172.20.7.3 192.168.2.4
R1(config)#int e0
R1(config-if)#ip add 10.1.1.10 255.255.255.0
R1(config-if)#ip nat inside
R1(config)#int s0
R1(config-if)#ip add 172.16.2.1 255.255.255.0
R1(config-if)#ip nat outside
Static PAT Translation:
R1(config)#ip nat outside source static tcp 172.20.7.3 80 192.168.2.4 80
R1(config)#ip nat outside source static tcp 172.20.7.4 25 192.168.2.4 25
R1(config)#int e0
R1(config-if)#ip add 10.1.1.10 255.255.255.0
R1(config-if)#ip nat inside
R1(config)#int s0
R1(config-if)#ip add 172.16.2.1 255.255.255.0
R1(config-if)#ip nat outside
Dynamic NAT Translation:
R1(config)#ip nat pool sense-nat-list 192.168.2.1 192.168.2.254 netmask 255.255.255.0
R1(config)#ip nat outside source list 1 pool sense-nat-list
R1(config)#int e0
R1(config-if)#ip add 10.1.1.10 255.255.255.0
R1(config-if)#ip nat inside
R1(config)#int s0
R1(config-if)#ip add 172.16.2.1 255.255.255.0
R1(config-if)#ip nat outside
R1(config)#access-list 1 172.20.7.0 0.0.0.255
Case Study:重載內部全局地址
Dynamic PAT Translation:
R1(config)#ip nat pool sense-pat-list 192.168.2.1 192.168.2.2 netmask 255.255.255.0
R1(config)#ip nat inside source list 1 pool sense-nat-list overload
R1(config)#int e0
R1(config-if)#ip add 10.1.1.10 255.255.255.0
R1(config-if)#ip nat inside
R1(config)#int s0
R1(config-if)#ip add 172.16.2.1 255.255.255.0
R1(config-if)#ip nat outside
R1(config)#access-list 1 10.1.1.0 0.0.0.255
Case Study:處理地址空間重疊的網絡
注:處理地址空間重疊的網絡時,NAT結合使用了內部源地址轉換和外部源地址的轉換,即雙向NAT。配置了外部源地址轉換后,NAT路由器自動接收來自外部網絡的DNS應答,以確保將正確的內部全局地址返回給發出請求的內部主機。
R1(config)#ip nat pool sense-nat-in-out 192.2.2.1 192.2.2.250 prefix-length 24
R1(config)#ip nat pool sense-nat-out-in 192.3.3.3. 192.3.3.254 prefix-length 24
R1(config)#ip nat inside source list 1 pool sense-nat-in-out
R1(config)#ip nat outside source list 1 pool sense-nat-out-in
R1(config)#int s0
R1(config-if)#ip add 192.2.2.251 255.255.255.0
R1(config-if)#ip nat outside
R1(config)#int e0
R1(config-if)#ip add 10.1.1.254 255.255.255.0
R1(config-if)#ip nat inside
R1(config)#access-list 1 permit 10.1.1.0 0.0.0.255
Case Study:TCP負載分配
這是NAT對static translation的一種擴展,可以將一個全局的地址映射到多個內部地址,以便在多個服務器之間的會話分配。例如:WEB/FTP/DNS服務器負載均衡。此時,NAT設備就可以被稱為虛擬主機。
R1(config)#ip nat pool sense-webserver 171.70.2.3 171.70.2.4 netmask 255.255.255.0 type rotary
R1(config)#access-list 46 permit host 171.70.2.10
R1(config)#ip nat inside destination list 46 pool sense-webserver
R1(config)#int e0
R1(config-if)#ip nat inside
R1(config)#int s0
R1(config-if)#ip nat outside
注:
1>type rotary指定NAT設備在轉換時,輪流使用地址池中的servers,以實現TCP負載均衡。
2>ACL 46指定只是對虛擬主機地址時行轉換。
Case Study:Troubleshooting NAT
1>show ip nat translations [verbose]?????? 顯示活動的轉換條目,verbose參數顯示更詳細的信息
rta(config)#do sh ip nat tr
Pro Inside global????? Inside local?????? Outside local????? Outside global
--- 192.168.2.2??????? 10.1.1.1?????????? ---??????????????? ---
tcp 192.168.2.2:80???? 10.1.1.1:80??????? ---??????????????? ---
--- ---??????????????? ---??????????????? 192.168.2.4??????? 172.20.7.3
rta(config)#do sh ip nat tr ve
Pro Inside global????? Inside local?????? Outside local????? Outside global
--- 192.168.2.2??????? 10.1.1.1?????????? ---??????????????? ---
??? create 00:01:06, use 00:01:06,
??? flags:
static, use_count: 0
tcp 192.168.2.2:80???? 10.1.1.1:80??????? ---??????????????? ---
??? create 00:00:39, use 00:00:39,
??? flags:
static, extended, extendable, use_count: 0
--- ---??????????????? ---??????????????? 192.168.2.4??????? 172.20.7.3
??? create 00:01:42, use 00:01:42,
??? flags:
static, outside, use_count: 0
2>show ip nat statistics?????? 顯示有關轉換的統計信息
rta(config)#do sh ip nat st
Total active translations: 3 (3 static, 0 dynamic; 1 extended)
Outside interfaces:
Inside interfaces:
Hits: 0? Misses: 0
Expired translations: 0
Dynamic mappings:
3>debug ip nat [access-list-number|detailed]
Case Study:刪除NAT轉換條目
clear ip nat translation *????????????? 刪除所有轉換條目
clear ip nat translation inside global-ip local-ip [outside local-ip global-ip]
刪除一個進行內部轉換或內部和外部轉換的簡單轉換條目
clear ip nat translation outside local-ip global-ip
刪除一個進行外部轉換的簡單轉換條目
clear ip nat translation inside global-ip global-port local-ip local-port [outside local-ip local-port global-ip global-port]
刪除一個擴展的轉換條目
Support:
Cisco IOS NAT支持以下數據流類型:
1>不在應用數據中攜帶源/目標IP地址的TCP/UDP數據流
2>HTTP
3>TFTP
4>Telnet
5>Archie
6>Finger
7>NTP
8>NFS
9>rlogin,rsh,rcp
雖然下述數據流類型在應用數據中攜帶IP地址,但Cisco IOS NAT支持它們:
1>ICMP
2>FTP(包括命令PORT和PASV)
3>NetBIOS over TCP/IP(數據報,名稱和會話服務)
4>Progressive Networks的RealAudio
5>White Pines的CuSeeMe
6>Xing Technologies的Streamworks
7>DNS "A"和"PTR"查詢
8>H.323/NetMeeting (12.0(1)/12.0(1)T及更高版本)
9>VDOLive(11.3(4)/11.3(4)T及更高版本)
10>Vxtreme(11.3(4)/11.3(4)T及更高版本)
11>IP多播(12.0(1)T,只轉換源地址)
Cisco IOS不支持下述數據流類型:
1>路由選擇表更新
2>DNS區域(zone)傳輸
3>BOOTP
4>talk,ntalk
5>SNMP
6>NetShow
7>×××本文出自 51CTO.COM技術博客
Functions:
為了緩解IPv4地址的匱乏。
可以應用于:更換ISP或兩個企業內部網絡合并而需要修改內部地址方案的時。
Integrate Static and Dynamic NAT:
以下為需要結合使用動態和靜態NAT的情況:
1>有多個地址空間重疊的網絡
2>修改了方案(更換了ISP)
3>網絡服務器(DNS或WEB服務器)的地址不能變
NAT Teminology and Conception:
NAT的實現是通過修改IP分組的報頭,更換其中的源地址/目標地址,或全部。
內部/外部:IP主機相對于NAT設備的物理位置。
本地/全局:用戶相對于NAT設備的位置或視角。
內部本地IP地址:私有的IP地址。分配給內部網絡的IP地址。
內部全局IP地址:合法的IP地址。將內部IP地址轉換成的目標地址,代表內部主機訪問外部網絡。
外部全局IP地址:合法的IP地址。另一網絡的主機使用的相對于它的全局地址,代表它訪問外部網絡。
外部本地IP地址:私有的IP地址。本地網絡看到的外部網絡的IP地址,有NAT設備轉換成形成的。
Static Translation:轉換規則是靜態指定的,此條目既可以從內部也可以從外部發起連接,因為轉換后的地址總是保留在轉換表中。(不論是使用inside-source-list或是outside-source-list)
Dynamic Translation:轉換規則是動態的指定,IP地址動態的從特定的地址池中取出來。此條目只能從內部或外部發起連接,取決于配置。
如果使用命令:ip nat inside source list配置只能從內部到外部的動態NAT,即只能從內部發起連接。
如果使用命令:ip nat outside source list配置只能從外部到內部的動態NAT,即只能從外部發起連接。
Character:
優點:
1>企業網可以使用私有IP地址在內部,節省了IP地址。
2>可減少編址方案的重疊情況。使有相同編址方案的網絡可以共存。
3>更換ISP時不需要改變編址方案。
缺點:
1>NAT會增加延遲,因為CPU要檢查每個分組。此時默認,處理第一次轉換時,轉換被存儲到高速緩存中,對于隨后的分組將進行快速交換。
2>NAT導致無法進行端到端的IP跟蹤,但同時增加了安全性。
3>NAT使某些在有效負載中使用IP地址的應用無法運行,這是因為要轉換有效負載中的IP地址,NAT必須地知道從哪里開始。所以部署NAT時,應核實NAT是否支持已有的應用。
Configuration Command Reference:
1> ip nat {inside|outside}
2> ip nat inside source static {tcp|udp local-ip local-port global-ip global-port}
3> ip nat outside source static {tcp|udp local-ip local-port global-ip global-port}
4> ip nat pool pool-name start-ip end-ip {netmask netmask|prefix-length prefix-length} [type rotary]
5> ip nat inside source list access-list-number pool pool-name
6> ip nat outside source list access-list-number pool pool-name
Case Study:轉換內部源地址
Static NAT Translation:
R1(config)#ip nat inside source static 10.1.1.1 192.168.2.2
R1(config)#int e0
R1(config-if)#ip add 10.1.1.10 255.255.255.0
R1(config-if)#ip nat inside
R1(config)#int s0
R1(config-if)#ip add 172.16.2.1 255.255.255.0
R1(config-if)#ip nat outside
Static PAT Translation:
R1(config)#ip nat inside source static tcp 10.1.1.1 80 192.168.2.2 80
R1(config)#ip nat inside source static tcp 10.1.1.2 25 192.168.2.2 25
R1(config)#int e0
R1(config-if)#ip add 10.1.1.10 255.255.255.0
R1(config-if)#ip nat inside
R1(config)#int s0
R1(config-if)#ip add 172.16.2.1 255.255.255.0
R1(config-if)#ip nat outside
Dynamic NAT Translation:
R1(config)#ip nat pool sense-nat-list 192.168.2.1 192.168.2.254 netmask 255.255.255.0
R1(config)#ip nat inside source list 1 pool sense-nat-list
R1(config)#int e0
R1(config-if)#ip add 10.1.1.10 255.255.255.0
R1(config-if)#ip nat inside
R1(config)#int s0
R1(config-if)#ip add 172.16.2.1 255.255.255.0
R1(config-if)#ip nat outside
R1(config)#access-list 1 10.1.1.0 0.0.0.255
Case Study:轉換外部源地址
Static NAT Translation:
R1(config)#ip nat outside source static 172.20.7.3 192.168.2.4
R1(config)#int e0
R1(config-if)#ip add 10.1.1.10 255.255.255.0
R1(config-if)#ip nat inside
R1(config)#int s0
R1(config-if)#ip add 172.16.2.1 255.255.255.0
R1(config-if)#ip nat outside
Static PAT Translation:
R1(config)#ip nat outside source static tcp 172.20.7.3 80 192.168.2.4 80
R1(config)#ip nat outside source static tcp 172.20.7.4 25 192.168.2.4 25
R1(config)#int e0
R1(config-if)#ip add 10.1.1.10 255.255.255.0
R1(config-if)#ip nat inside
R1(config)#int s0
R1(config-if)#ip add 172.16.2.1 255.255.255.0
R1(config-if)#ip nat outside
Dynamic NAT Translation:
R1(config)#ip nat pool sense-nat-list 192.168.2.1 192.168.2.254 netmask 255.255.255.0
R1(config)#ip nat outside source list 1 pool sense-nat-list
R1(config)#int e0
R1(config-if)#ip add 10.1.1.10 255.255.255.0
R1(config-if)#ip nat inside
R1(config)#int s0
R1(config-if)#ip add 172.16.2.1 255.255.255.0
R1(config-if)#ip nat outside
R1(config)#access-list 1 172.20.7.0 0.0.0.255
Case Study:重載內部全局地址
Dynamic PAT Translation:
R1(config)#ip nat pool sense-pat-list 192.168.2.1 192.168.2.2 netmask 255.255.255.0
R1(config)#ip nat inside source list 1 pool sense-nat-list overload
R1(config)#int e0
R1(config-if)#ip add 10.1.1.10 255.255.255.0
R1(config-if)#ip nat inside
R1(config)#int s0
R1(config-if)#ip add 172.16.2.1 255.255.255.0
R1(config-if)#ip nat outside
R1(config)#access-list 1 10.1.1.0 0.0.0.255
Case Study:處理地址空間重疊的網絡
注:處理地址空間重疊的網絡時,NAT結合使用了內部源地址轉換和外部源地址的轉換,即雙向NAT。配置了外部源地址轉換后,NAT路由器自動接收來自外部網絡的DNS應答,以確保將正確的內部全局地址返回給發出請求的內部主機。
R1(config)#ip nat pool sense-nat-in-out 192.2.2.1 192.2.2.250 prefix-length 24
R1(config)#ip nat pool sense-nat-out-in 192.3.3.3. 192.3.3.254 prefix-length 24
R1(config)#ip nat inside source list 1 pool sense-nat-in-out
R1(config)#ip nat outside source list 1 pool sense-nat-out-in
R1(config)#int s0
R1(config-if)#ip add 192.2.2.251 255.255.255.0
R1(config-if)#ip nat outside
R1(config)#int e0
R1(config-if)#ip add 10.1.1.254 255.255.255.0
R1(config-if)#ip nat inside
R1(config)#access-list 1 permit 10.1.1.0 0.0.0.255
Case Study:TCP負載分配
這是NAT對static translation的一種擴展,可以將一個全局的地址映射到多個內部地址,以便在多個服務器之間的會話分配。例如:WEB/FTP/DNS服務器負載均衡。此時,NAT設備就可以被稱為虛擬主機。
R1(config)#ip nat pool sense-webserver 171.70.2.3 171.70.2.4 netmask 255.255.255.0 type rotary
R1(config)#access-list 46 permit host 171.70.2.10
R1(config)#ip nat inside destination list 46 pool sense-webserver
R1(config)#int e0
R1(config-if)#ip nat inside
R1(config)#int s0
R1(config-if)#ip nat outside
注:
1>type rotary指定NAT設備在轉換時,輪流使用地址池中的servers,以實現TCP負載均衡。
2>ACL 46指定只是對虛擬主機地址時行轉換。
Case Study:Troubleshooting NAT
1>show ip nat translations [verbose]?????? 顯示活動的轉換條目,verbose參數顯示更詳細的信息
rta(config)#do sh ip nat tr
Pro Inside global????? Inside local?????? Outside local????? Outside global
--- 192.168.2.2??????? 10.1.1.1?????????? ---??????????????? ---
tcp 192.168.2.2:80???? 10.1.1.1:80??????? ---??????????????? ---
--- ---??????????????? ---??????????????? 192.168.2.4??????? 172.20.7.3
rta(config)#do sh ip nat tr ve
Pro Inside global????? Inside local?????? Outside local????? Outside global
--- 192.168.2.2??????? 10.1.1.1?????????? ---??????????????? ---
??? create 00:01:06, use 00:01:06,
??? flags:
static, use_count: 0
tcp 192.168.2.2:80???? 10.1.1.1:80??????? ---??????????????? ---
??? create 00:00:39, use 00:00:39,
??? flags:
static, extended, extendable, use_count: 0
--- ---??????????????? ---??????????????? 192.168.2.4??????? 172.20.7.3
??? create 00:01:42, use 00:01:42,
??? flags:
static, outside, use_count: 0
2>show ip nat statistics?????? 顯示有關轉換的統計信息
rta(config)#do sh ip nat st
Total active translations: 3 (3 static, 0 dynamic; 1 extended)
Outside interfaces:
Inside interfaces:
Hits: 0? Misses: 0
Expired translations: 0
Dynamic mappings:
3>debug ip nat [access-list-number|detailed]
Case Study:刪除NAT轉換條目
clear ip nat translation *????????????? 刪除所有轉換條目
clear ip nat translation inside global-ip local-ip [outside local-ip global-ip]
刪除一個進行內部轉換或內部和外部轉換的簡單轉換條目
clear ip nat translation outside local-ip global-ip
刪除一個進行外部轉換的簡單轉換條目
clear ip nat translation inside global-ip global-port local-ip local-port [outside local-ip local-port global-ip global-port]
刪除一個擴展的轉換條目
Support:
Cisco IOS NAT支持以下數據流類型:
1>不在應用數據中攜帶源/目標IP地址的TCP/UDP數據流
2>HTTP
3>TFTP
4>Telnet
5>Archie
6>Finger
7>NTP
8>NFS
9>rlogin,rsh,rcp
雖然下述數據流類型在應用數據中攜帶IP地址,但Cisco IOS NAT支持它們:
1>ICMP
2>FTP(包括命令PORT和PASV)
3>NetBIOS over TCP/IP(數據報,名稱和會話服務)
4>Progressive Networks的RealAudio
5>White Pines的CuSeeMe
6>Xing Technologies的Streamworks
7>DNS "A"和"PTR"查詢
8>H.323/NetMeeting (12.0(1)/12.0(1)T及更高版本)
9>VDOLive(11.3(4)/11.3(4)T及更高版本)
10>Vxtreme(11.3(4)/11.3(4)T及更高版本)
11>IP多播(12.0(1)T,只轉換源地址)
Cisco IOS不支持下述數據流類型:
1>路由選擇表更新
2>DNS區域(zone)傳輸
3>BOOTP
4>talk,ntalk
5>SNMP
6>NetShow
7>×××本文出自 51CTO.COM技術博客
轉載于:https://blog.51cto.com/dyspangzi/155412
總結