NAT功能
NAT不只能解決了lP地址不足的問題,並且還可以有效地避免來自網絡外部的攻擊,隱藏並保護網絡內部的計算機。
1.寬帶分享:這是 NAT 主機的最大功能。解決IP4地址短缺的問題。
2.安全防禦:NAT 以內的 PC 聯機到 Internet 上面時,他所顯示的 IP 是 NAT 主機的公共 IP,因此 Client 端的 PC 固然就具備必定程度的安全了,外界在進行 portscan(端口掃描) 的時候,就偵測不到源Client 端的 PC 。
NAT實現方式
有三種,即
1.靜態轉換Static Nat (靜態ip 靜態端口)
2.動態(源地址)轉換Dynamic Nat
3.動態(目的地址)轉換Dynamic Nat
4..端口多路複用OverLoad(PAT)
這些東西仍是放在前面講吧,看不懂,記不住無所謂,底層的原理
Inside 內部
Outside 外部
四個概念:
Inside local 內部本地地址(內部主機的實際地址,通常爲私有地址)
Inside global 內部全局地址(內部主機經NAT轉換後去往外部的地址,是ISP分配的合法IP地址)
Outside local 外部本地地址(外部主機由NAT設備轉換後的地址,通常爲私有地址,內部主機訪問該外部主機時,
認爲它是一個內部的主機而非外部主機)
Outside global 外部全局地址(外部主機的真實地址,互聯網上的合法IP地址)
數據包只有在 outside 接口和 inside 接口之間路由時,而且符合
必定規則的,纔會進行NAT轉換。
因此實現NAT的路由器必須配置至少一個 outside 接口和一個 inside 接口,也可配置多個
內部端口鏈接的網絡用戶使用的是內部IP地址。 內部端口能夠爲任意一個路由器端口。
外部端口鏈接的是外部的網絡,如Internet 。外部端口能夠爲路由器上的任意端口
ip nat inside source
ip nat inside destination (不少路由設備沒有此選項)
都是內部地址轉換
ip nat inside source 便是IL->IG (由內部發起的流量)
ip nat inside destination 便是IG->IL (由外部發起的流量)
撇開流量的發起方不說,達到的效果是同樣的(都是IL與IG之間轉換),即NAT Translation表的IL和IG項都同樣。可是對於ip nat inside destination 須要注意
①只有TCP流量纔會轉換,ping 流量是不會觸發NAT的Destination轉換的!
②nat pool 必定要設置type爲 rotary!!
cisco的NAT 命令彙總
ip nat inside source list 訪問控制列表 (pool 池名 | interface 接口名) overload
ip nat inside source static 本地(ip | 端口) 外部(ip|端口)
ip nat outside source
pool
一.靜態轉換
1.靜態IP轉換
是指將內部網絡的私有IP地址轉換爲公有IP地址,IP地址對是一對一的,是一成不變的,某個私有IP地址只轉換爲某個公有IP地址。藉助於靜態轉換,能夠實現外部網絡對內部網絡中某些特定設備(如服務器)的訪問。
. 將網絡的一個內部地址L映射到一個外部地址G上。從內部網絡發送以L爲源的數據包的源地址會被替換成地址G。同時,從外部發往內部網絡的目的地址爲G的數據包的目的地址會被替換成L。這樣內部主機就能夠假裝成G與外部網絡通訊
語法:程序員
ip nat inside source static 內部本地地址 內部全局地址 安全
ip nat inside source static 10.0.0.1 222.2.2.1 // 配置靜態NAT
ip nat inside source static 10.0.0.2 222.2.2.2
ip nat inside source static 10.0.0.3 222.2.2.3服務器
interface f0/0
ip nat inside // 設置該端口爲內部端口網絡
interface f0/1
ip nat outside // 設置該端口爲外部端口負載均衡
實例:先設置好ACL語言,再設置NAT轉換(使用上述代碼)
2.靜態端口轉換
ip nat inside source static tcp/udp 內部本地地址 端口 內部全局地址 端口
ip nat inside source static tcp 10.0.0.1 80 222.2.2.1 80tcp
ip nat inside source static tcp 10.0.0.2 24 222.2.2.1 24ide
interface f0/0
ip nat inside // 設置該端口爲內部端口spa
interface f0/1
ip nat outside // 設置該端口爲外部端口
二.動態(源地址)轉換
將內部網絡訪問外部網絡數據包的源地址L替換成設定好的全局地址G。使內部網絡主機能夠用這個全局地址G訪問外部網絡 ,但外部主機沒法用G地址訪問內部主機L
1.定義要轉換的內部設備
這裏使用 acl 訪問控制列表
access-list 1 permit host 10.0.0.1翻譯
access-list 1 permit host 10.0.0.2debug
2.定義內部全局IP地址池
ip nat pool 池名 開始地址 結束地址 netmask 子網掩碼
ip nat pool nat-pool 222.2.2.1 222.2.2.1 netmask 255.255.255.0
3.爲內部本地調用轉換地址池
ip nat inside source list acl語句 pool 池名
(這裏也能夠將池名換爲路由器接口,全部動態轉換使用此接口ip)
ip nat inside source list 1 pool nat-pool //使用地址池
ip nat inside source list <number> interface <interface> //使用路由器接口
4.定義內部外部端口
interface f0/0
ip nat inside // 設置該端口爲內部端口
interface f0/1
ip nat outside // 設置該端口爲外部端口
三.端口映射(pat)
1.定義要轉換的內部設備
這裏使用 acl 訪問控制列表
access-list 1 permit host 10.0.0.1
access-list 1 permit host 10.0.0.2
2.定義內部全局IP地址池
ip nat pool 池名 開始地址 結束地址 netmask 子網掩碼
ip nat pool nat-pool 222.2.2.1 222.2.2.1 netmask 255.255.255.0
3.爲內部本地調用轉換地址池
ip nat inside source list acl語句 pool 池名overload
ip nat inside source list 1 pool nat-pool overload
四,動態(目的地址)轉換
語法:
ip nat inside destination list 訪問控制列表編號 pool 池名
NAT內部目標地址轉換可用於實現TCP負載均衡,你能夠用一臺虛擬主機代替
多臺實際主機接收用戶的TCP請求,由NAT把這些請求輪流映射到各個實際主機上,
達到負載分流的目的。
配置TCP負載均衡時,訪問控制列表定義的是虛擬主機的地址,IP地址池中定義的是各臺實際主機的地址
範例:
ip nat pool np 192.168.1.1 192.168.1.3 netmask 255.255.255.0 // 內網地址
access-list 1 permit 60.8.1.1 0.0.0.0 //外網地址
ip nat inside destination list 1 pool np //內外網地址進行映射
查詢:
show ip nat statistics
查看NAT統計數據和規則,包括inside和outside接口
show ip nat translations
查看生效的NAT設置
清除全部動態NAT配置 clear ip nat translation *
清除單個動態NAT配置: clear ip nat translation <global-ip>
清除特定NAT配置:
clear ip nat translation <global-ip> <local-ip> <protocol> <global-port> <local-port>
debug: debug ip nat [<list>] [detailed]
一些高級配置:
1.更靈活的地址池的配置:
ip nat pool <name> { netmask <mask> | prefix-length <length> } [ type { rotary } ]
這樣能夠容許定義不連續地址池,接下來定義地址空間: address <start> <end>
例子:
Router(config)#ip nat pool fred prefix-length 24
Router(config-ipnat-pool)#address 171.69.233.225 171.69.233.226
Router(config-ipnat-pool)#address 171.69.233.228 171.69.233.238
這樣就定義了一個171.69.233.225-226和and 171.69.233.228-238的地址池
2.翻譯爲接口地址:
ip nat inside source list <number> interface <interface> overload
若是接口shut或者接口沒有設置IP地址的話,NAT不會生效
3.映射某個服務到某個主機上(好比郵件服務):
ip nat inside source static { tcp | udp } <localaddr> <localport> <globaladdr> <globalport>
更高級擴展:
4.對route map的支持:
(route map和ACL很相似,它能夠用於路由的再發布和策略路由,還常常使用在BGP中)
ip nat inside source route-map <name> pool <name>
例子:
ip nat pool provider1-space 171.69.232.1 171.69.232.254 prefix-length 24
ip nat pool provider2-space 131.108.43.1 131.108.43.254 prefix-length 24
ip nat inside source route-map provider1-map pool provider1-space
ip nat inside source route-map provider2-map pool provider2-space
interface Serial0/0
ip nat outside
interface Serial0/1
ip nat outside
interface Fddi1/0
ip nat inside
route-map provider1-map permit 10
match ip address 1
match interface Serial0/0
route-map provider2-map permit 10
match ip address 1 match interface Serial0/1