NAT應用與配置完全攻略
NAT釋義
現(xiàn)在越來越多的地方用到網(wǎng)絡(luò)地址轉(zhuǎn)換(Network Address Translation,NAT)。網(wǎng)絡(luò)中的IP包從源地址出發(fā),到最終的目的地址,會經(jīng)過很多不同的連接。這些連接(包括路由器、交換機、服務器等)不會修改IP包的內(nèi)容,只是根據(jù)目的地址選擇轉(zhuǎn)發(fā)路徑。NAT的作用就是修改IP包的源、目的地址或者源、目的端口(Port)。通常,NAT設(shè)備(服務器、防火墻或路由器)會記錄它是如何轉(zhuǎn)換的,當相應的IP包通過時,它會對相應的IP包做反向轉(zhuǎn)換。簡言之,就是通過地址轉(zhuǎn)換訪問不同網(wǎng)段的信息。本文將介紹在Windows 2000 Server、Linux和路由器中如何配置NAT。
NAT的應用環(huán)境
情況1:一個企業(yè)不想讓外部網(wǎng)絡(luò)用戶知道自己的網(wǎng)絡(luò)內(nèi)部結(jié)構(gòu),可以通過NAT將內(nèi)部網(wǎng)絡(luò)與外部Internet 隔離開,則外部用戶根本不知道通過NAT設(shè)置的內(nèi)部IP地址。
情況2:一個企業(yè)申請的合法Internet IP地址很少,而內(nèi)部網(wǎng)絡(luò)用戶很多??梢酝ㄟ^NAT功能實現(xiàn)多個用戶同時公用一個合法IP與外部Internet 進行通信。
NAT的類型
靜態(tài)地址轉(zhuǎn)換:將內(nèi)部本地地址與內(nèi)部合法地址進行一對一的轉(zhuǎn)換,或者說是將外網(wǎng)某個IP與內(nèi)網(wǎng)中某個IP捆綁,延伸開去,可以把內(nèi)網(wǎng)某個IP的某個端口(比如80)與外網(wǎng)的某個IP的某個端口(比如8080)捆綁。如果內(nèi)部網(wǎng)絡(luò)有E-mail服務器或FTP服務器等可以為外部用戶提供的服務,那么這些服務器的IP地址必須采用靜態(tài)地址轉(zhuǎn)換,以便外部用戶可以使用這些服務。這種NAT方式,也可稱作PAT(Port Address Translation)。
動態(tài)網(wǎng)絡(luò)地址轉(zhuǎn)換:是將外網(wǎng)某個或者多個IP(稱為地址池)與整個內(nèi)網(wǎng)捆綁,相當于內(nèi)網(wǎng)有了一個或多個外網(wǎng)地址。
NAT的實現(xiàn)
為了便于描述,我們下面做內(nèi)網(wǎng)(192.168.2.0/24)與外網(wǎng)(211.84.20.0/28)之間動態(tài)NAT地址轉(zhuǎn)換和靜態(tài)地址轉(zhuǎn)換。內(nèi)網(wǎng)192.168.2.1提供WWW服務,并且偵聽8080端口。當外部向地址211.84.20.1提交WWW的80端口請求時,系統(tǒng)NAT將目的地址轉(zhuǎn)換為192.168.2.1,并將端口轉(zhuǎn)換為8080。
一、在Windows 2000 Server系統(tǒng)環(huán)境下NAT的設(shè)置。
首先需要安裝兩塊網(wǎng)卡,分別配置兩個網(wǎng)段地址(內(nèi)網(wǎng)網(wǎng)卡配192.168.2.2;外網(wǎng)網(wǎng)卡配211.84.20.1)。通過“控制面板”或者“管理工具”進入“路由和遠程訪問”。如果原先沒有啟用配置過路由(如果原先已經(jīng)啟用了靜態(tài)路由等其他功能,建議先禁用,原因下面會講到)訪問,進入配置向?qū)?,按照向?qū)Вx擇“Internat連接服務”→ “設(shè)置有網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)路由協(xié)議的路由器”→ “使用選擇的Internat連接”,下面的列表框里顯示了兩個連接(見圖1左窗口,本地連接和本地連接2),選擇配置了外網(wǎng)IP的那個連接(比如配置了公網(wǎng)IP的連接),再點擊下一步就完成了。打開本機樹,您會看到四個子項(見圖1):路由接口、IP路由選擇、遠程訪問策略、遠程訪問記錄。

圖1
第一項顯示本機路由接口,不需配置,第三四項提供遠程訪問服務(比如遠程撥入),在這里不是本文中心,略過。展開第二項可看到常規(guī)、靜態(tài)路由、IGMP、網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)四個小子項;可根據(jù)需求配置靜態(tài)路由;如果不需要IGMP(組播)功能,建議刪除。展開網(wǎng)絡(luò)地址轉(zhuǎn)換,可以看到兩個連接,打開配置了外網(wǎng)地址的連接,如圖2所示。

圖2
常規(guī)中的選項不用改變,就用默認即可。地址池是您所擁有的外網(wǎng)地址,比如您有從211.84.20.1到211.84.20.7七個地址(這里是示例,實際情況可能并不合理,因為至少應該留一個做網(wǎng)關(guān)地址,以便到達其他網(wǎng)段),就可以寫在這里。下面的保留公用地址,是為了一對一的靜態(tài)地址轉(zhuǎn)換用的。
特殊端口的配置實際上就是配置所謂的靜態(tài)NAT+Port。上圖顯示內(nèi)網(wǎng)地址為192.168.2.1提供WWW服務,并且偵聽8080端口。當外部提交WWW請求(80端口)時,系統(tǒng)NAT將目的地址轉(zhuǎn)換為192.168.2.1(見圖3)。

圖3#p#
二、在 Linux系統(tǒng)環(huán)境下NAT的設(shè)置。
NAT在以前的Linux版本中被稱為端口轉(zhuǎn)發(fā)。SNAT就是改變轉(zhuǎn)發(fā)數(shù)據(jù)包的源地址,DNAT就是改變轉(zhuǎn)發(fā)數(shù)據(jù)包的目的地址。
做NAT有三條規(guī)則:
POSTROUTING:定義進行目的NAT的規(guī)則;
POSTROUTING:定義進行源NAT的規(guī)則;
OUTPUT:定義對本地產(chǎn)生的數(shù)據(jù)包的目的NAT規(guī)則。
具體實現(xiàn)過程如下:
要使用NAT表時,必須首先載入相關(guān)模塊:
modprobe ip_tables
modprobe ip_nat_ftp
iptable_nat 模塊會在運行時自動載入。
我們還用上面的那個例子。
靜態(tài)NAT(帶端口轉(zhuǎn)發(fā)):
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
動態(tài)NAT:
iptables -t nat -A POSTROUTING -s 192.168.1.0/255.255.255.0 -j -d 211.84.20.1
動態(tài)NAT也可用偽裝,這條規(guī)則一般是沒有固定外部地址,常用于撥號訪問Internet。
iptables -t nat -A POSTROUTING -s 192.168.1.0/255.255.255.0 -j MASQUERADE
說明:使用iptables的NAT功能時,我們必須在每一條規(guī)則中使用“-t nat”顯示指明使用NAT表。
-A加入(append) 一個新規(guī)則到一個鏈 (-A)的最后;
-I可以插入一條規(guī)則,插入位置序號寫在POSTROUTING后;
-D在鏈內(nèi)某個位置刪除(delete) 一條規(guī)則;
-R在鏈內(nèi)某個位置替換(replace) 一條規(guī)則;
--source或-src或-s來指定源地址;
--destination或-dst或-s來指定目的地址;
--in-interface或-I指定網(wǎng)絡(luò)入口;
--out-interface或-o指定網(wǎng)絡(luò)出口(從NAT的原理可以看出,對于PREROUTING鏈,我們只能用-i指定進來的網(wǎng)絡(luò)接口;而對于POSTROUTING和OUTPUT我們只能用-o指定出去的網(wǎng)絡(luò)接口。);
--protocol或-p選項來指定協(xié)議;
--source-port或-sport
--destination-port或--dport來指明端口;
MASQUERADE 做NAT欺騙;
Redirection重定向。#p#
三、設(shè)置NAT所需路由器的硬件配置和軟件配置。
很多路由器都提供NAT功能,這里選擇比較常用的Cisco路由器。首先設(shè)置NAT功能的路由器的IOS應支持NAT功能。至少要有一個內(nèi)部(Inside)接口,配置內(nèi)網(wǎng)地址(192.168.2.2),一個外部(Outside)接口,配置外網(wǎng)地址(211.84.20.1)。
NAT的設(shè)置方法:
1.靜態(tài)地址轉(zhuǎn)換基本配置步驟。
(1)在內(nèi)部本地地址與外部合法地址之間建立靜態(tài)地址轉(zhuǎn)換。在全局設(shè)置狀態(tài)下輸入:
ip nat inside source static 192.168.2.2 211.84.20.1
如果加上端口轉(zhuǎn)發(fā)則為:
ip nat inside source static tcp 192.168.2.1 8080 211.84.20.1 80 extendable
(2)指定連接網(wǎng)絡(luò)的內(nèi)部接口上配置:
ip nat inside
(3)指定連接外部網(wǎng)絡(luò)的外部接口上配置:
ip nat outside
注:可以根據(jù)實際需要定義多個內(nèi)部接口及多個外部接口。
2.動態(tài)地址轉(zhuǎn)換基本配置步驟。
(1)如果有多個IP地址,可以在全局設(shè)置模式下,定義內(nèi)部合法地址池,如果只有一個,就不用定義了(建議不要定義地址池,這不會帶來什么好處)。
其格式為:ip nat pool 地址池名稱 起始IP地址 終止IP地址 子網(wǎng)掩碼。例如:
ip nat pool outnet 211.84.20.1 211.84.20.7 netmask 255.255.255.248
其中地址池名稱可以任意設(shè)定。
(2)在全局設(shè)置模式下,定義access-list(通常是標準的,也可以是擴展的或是命名的)規(guī)則以判斷哪些地址需要進行動態(tài)地址轉(zhuǎn)換。
其格式為:Access-list 標號 permit 源地址 通配符
例如:
access-list 1 permit 192.168.2.0 0.0.0.255
其中標號為1-99之間的整數(shù)。
(3)在全局設(shè)置模式下,將由access-list指定的內(nèi)部本地地址與指定的合法地址池進行地址轉(zhuǎn)換。
其格式為:ip nat inside source list 訪問列表標號 pool內(nèi)部合法地址池名字。
例如:
ip nat inside source list 1 pool outnet overload
其中overload是指一對多做地址轉(zhuǎn)換,建議加上。
(4)指定與內(nèi)部網(wǎng)絡(luò)相連的內(nèi)部接口上配置。
其格式為:ip nat inside
(5)指定與外部網(wǎng)絡(luò)相連的外部接口上配置。
其格式為:ip nat outside
NAT規(guī)則的查看:
show ip nat statistcs
show ip nat translations
【編輯推薦】



















