NAT應用與配置完全攻略
NAT釋義
現在越來越多的地方用到網絡地址轉換(Network Address Translation,NAT)。網絡中的IP包從源地址出發,到最終的目的地址,會經過很多不同的連接。這些連接(包括路由器、交換機、服務器等)不會修改IP包的內容,只是根據目的地址選擇轉發路徑。NAT的作用就是修改IP包的源、目的地址或者源、目的端口(Port)。通常,NAT設備(服務器、防火墻或路由器)會記錄它是如何轉換的,當相應的IP包通過時,它會對相應的IP包做反向轉換。簡言之,就是通過地址轉換訪問不同網段的信息。本文將介紹在Windows 2000 Server、Linux和路由器中如何配置NAT。
NAT的應用環境
情況1:一個企業不想讓外部網絡用戶知道自己的網絡內部結構,可以通過NAT將內部網絡與外部Internet 隔離開,則外部用戶根本不知道通過NAT設置的內部IP地址。
情況2:一個企業申請的合法Internet IP地址很少,而內部網絡用戶很多。可以通過NAT功能實現多個用戶同時公用一個合法IP與外部Internet 進行通信。
NAT的類型
靜態地址轉換:將內部本地地址與內部合法地址進行一對一的轉換,或者說是將外網某個IP與內網中某個IP捆綁,延伸開去,可以把內網某個IP的某個端口(比如80)與外網的某個IP的某個端口(比如8080)捆綁。如果內部網絡有E-mail服務器或FTP服務器等可以為外部用戶提供的服務,那么這些服務器的IP地址必須采用靜態地址轉換,以便外部用戶可以使用這些服務。這種NAT方式,也可稱作PAT(Port Address Translation)。
動態網絡地址轉換:是將外網某個或者多個IP(稱為地址池)與整個內網捆綁,相當于內網有了一個或多個外網地址。
NAT的實現
為了便于描述,我們下面做內網(192.168.2.0/24)與外網(211.84.20.0/28)之間動態NAT地址轉換和靜態地址轉換。內網192.168.2.1提供WWW服務,并且偵聽8080端口。當外部向地址211.84.20.1提交WWW的80端口請求時,系統NAT將目的地址轉換為192.168.2.1,并將端口轉換為8080。
一、在Windows 2000 Server系統環境下NAT的設置。
首先需要安裝兩塊網卡,分別配置兩個網段地址(內網網卡配192.168.2.2;外網網卡配211.84.20.1)。通過“控制面板”或者“管理工具”進入“路由和遠程訪問”。如果原先沒有啟用配置過路由(如果原先已經啟用了靜態路由等其他功能,建議先禁用,原因下面會講到)訪問,進入配置向導,按照向導,選擇“Internat連接服務”→ “設置有網絡地址轉換(NAT)路由協議的路由器”→ “使用選擇的Internat連接”,下面的列表框里顯示了兩個連接(見圖1左窗口,本地連接和本地連接2),選擇配置了外網IP的那個連接(比如配置了公網IP的連接),再點擊下一步就完成了。打開本機樹,您會看到四個子項(見圖1):路由接口、IP路由選擇、遠程訪問策略、遠程訪問記錄。
圖1
第一項顯示本機路由接口,不需配置,第三四項提供遠程訪問服務(比如遠程撥入),在這里不是本文中心,略過。展開第二項可看到常規、靜態路由、IGMP、網絡地址轉換(NAT)四個小子項;可根據需求配置靜態路由;如果不需要IGMP(組播)功能,建議刪除。展開網絡地址轉換,可以看到兩個連接,打開配置了外網地址的連接,如圖2所示。
圖2
常規中的選項不用改變,就用默認即可。地址池是您所擁有的外網地址,比如您有從211.84.20.1到211.84.20.7七個地址(這里是示例,實際情況可能并不合理,因為至少應該留一個做網關地址,以便到達其他網段),就可以寫在這里。下面的保留公用地址,是為了一對一的靜態地址轉換用的。
特殊端口的配置實際上就是配置所謂的靜態NAT+Port。上圖顯示內網地址為192.168.2.1提供WWW服務,并且偵聽8080端口。當外部提交WWW請求(80端口)時,系統NAT將目的地址轉換為192.168.2.1(見圖3)。
圖3#p#
二、在 Linux系統環境下NAT的設置。
NAT在以前的Linux版本中被稱為端口轉發。SNAT就是改變轉發數據包的源地址,DNAT就是改變轉發數據包的目的地址。
做NAT有三條規則:
POSTROUTING:定義進行目的NAT的規則;
POSTROUTING:定義進行源NAT的規則;
OUTPUT:定義對本地產生的數據包的目的NAT規則。
具體實現過程如下:
要使用NAT表時,必須首先載入相關模塊:
modprobe ip_tables
modprobe ip_nat_ftp
iptable_nat 模塊會在運行時自動載入。
我們還用上面的那個例子。
靜態NAT(帶端口轉發):
iptables -t nat -A PREROUTING -d 211.84.20.1 -j DNAT -p tcp -m tcp --to-destination 192.168.2.1 --dport 80 REDIRECT --to-port 8080
iptables -t nat -A POSTROUTING -s 192.168.2.1 -j SNAT -p tcp -m tcp --to-source 211.84.20.1
動態NAT:
iptables -t nat -A POSTROUTING -s 192.168.1.0/255.255.255.0 -j -d 211.84.20.1
動態NAT也可用偽裝,這條規則一般是沒有固定外部地址,常用于撥號訪問Internet。
iptables -t nat -A POSTROUTING -s 192.168.1.0/255.255.255.0 -j MASQUERADE
說明:使用iptables的NAT功能時,我們必須在每一條規則中使用“-t nat”顯示指明使用NAT表。
-A加入(append) 一個新規則到一個鏈 (-A)的最后;
-I可以插入一條規則,插入位置序號寫在POSTROUTING后;
-D在鏈內某個位置刪除(delete) 一條規則;
-R在鏈內某個位置替換(replace) 一條規則;
--source或-src或-s來指定源地址;
--destination或-dst或-s來指定目的地址;
--in-interface或-I指定網絡入口;
--out-interface或-o指定網絡出口(從NAT的原理可以看出,對于PREROUTING鏈,我們只能用-i指定進來的網絡接口;而對于POSTROUTING和OUTPUT我們只能用-o指定出去的網絡接口。);
--protocol或-p選項來指定協議;
--source-port或-sport
--destination-port或--dport來指明端口;
MASQUERADE 做NAT欺騙;
Redirection重定向。#p#
三、設置NAT所需路由器的硬件配置和軟件配置。
很多路由器都提供NAT功能,這里選擇比較常用的Cisco路由器。首先設置NAT功能的路由器的IOS應支持NAT功能。至少要有一個內部(Inside)接口,配置內網地址(192.168.2.2),一個外部(Outside)接口,配置外網地址(211.84.20.1)。
NAT的設置方法:
1.靜態地址轉換基本配置步驟。
(1)在內部本地地址與外部合法地址之間建立靜態地址轉換。在全局設置狀態下輸入:
ip nat inside source static 192.168.2.2 211.84.20.1
如果加上端口轉發則為:
ip nat inside source static tcp 192.168.2.1 8080 211.84.20.1 80 extendable
(2)指定連接網絡的內部接口上配置:
ip nat inside
(3)指定連接外部網絡的外部接口上配置:
ip nat outside
注:可以根據實際需要定義多個內部接口及多個外部接口。
2.動態地址轉換基本配置步驟。
(1)如果有多個IP地址,可以在全局設置模式下,定義內部合法地址池,如果只有一個,就不用定義了(建議不要定義地址池,這不會帶來什么好處)。
其格式為:ip nat pool 地址池名稱 起始IP地址 終止IP地址 子網掩碼。例如:
ip nat pool outnet 211.84.20.1 211.84.20.7 netmask 255.255.255.248
其中地址池名稱可以任意設定。
(2)在全局設置模式下,定義access-list(通常是標準的,也可以是擴展的或是命名的)規則以判斷哪些地址需要進行動態地址轉換。
其格式為:Access-list 標號 permit 源地址 通配符
例如:
access-list 1 permit 192.168.2.0 0.0.0.255
其中標號為1-99之間的整數。
(3)在全局設置模式下,將由access-list指定的內部本地地址與指定的合法地址池進行地址轉換。
其格式為:ip nat inside source list 訪問列表標號 pool內部合法地址池名字。
例如:
ip nat inside source list 1 pool outnet overload
其中overload是指一對多做地址轉換,建議加上。
(4)指定與內部網絡相連的內部接口上配置。
其格式為:ip nat inside
(5)指定與外部網絡相連的外部接口上配置。
其格式為:ip nat outside
NAT規則的查看:
show ip nat statistcs
show ip nat translations
【編輯推薦】