linux下nat的應用

隨着Linux的應用普及,Linux在網絡方面的強大逐步爲大家所認識,越來越多的單位選擇使用Linux來作爲服務器的操作系統。今天筆者想就Linux在校園網NAT方面的應用展開一些探討。
大 家都知道,所謂“網絡地址轉換”(Network Address Translation, NAT),它是定義於RFC1631中的Internet標準,主要是用來簡化及保存IP地址,它可讓原來無法上網,但是可以使用內部IP地址的主機可以 成功地連接Internet。這可大大減少IP地址的需求,因爲基本上整個內部網絡都可以憑藉NAT上的一個外部IP來連接Internet。
當 NAT作用於路由器時,通常可以連接兩組以上的網絡在轉送數據包到其他網絡前,將內部IP地址轉換爲Internet上合法的外部IP地址。此外,NAT 還可以對外只用一個地址代表整個網絡,這樣可以提供更高的安全性,將整個內部網絡隱藏在該地址背後,將這種安全性及地址保存的雙重功能的程序通常安裝在遠 程訪問的環境。目前許多路由器支持NAT這項功能,其他如Linux中的IP僞裝(IP Masquerade),FreeBSD中的NATD或Windows上的Sygate、Wingate、或Winroute等軟件都具有相同的功能。
使用NAT的優點如下:
l 減少IP地址使用量。在使用NAT以後,Internet上的主機會誤以爲它正與NAT服務器進行通信,因爲它們並不知在NAT主機背後包含一個局域網。 於是,回傳的數據包會直接發送到NAT服務器,然後NAT服務器再將這個數據包頭文件目的地的IP地址更改爲局域網裏真正發出信息的計算機。
l 可在NAT服務器上的外部IP上建立多個“IP Alias”,當收到傳給那些IP Alias的請求時,NAT服務器可以把這些請求傳給內部網絡中提供服務的服務器。
l 負載均衡(Loading Balancing),也就是說,將同一個IP Alias請求分別導向到其他運行相同服務的服務器,可減少單一服務器的工作量。
雖然使用NAT具有以上優點,但是在某些情況下,必須注意到NAT潛藏的缺點,以下舉出幾個例子共大家參考:
l 理論上,NAT服務器只使用一個IP地址,就可涵蓋無數個內部IP地址,但是許多網絡通信協議或者應用程序都需要真正點對點的連接。
l 有些數據包是從出發地到目的地的過程中不能修改,像IP安全體系結構就不可以使用NAT來進行映射,因爲數據包的文件頭文件中含有數字簽名,如果頭文件被更改(即使是任何一個字),這個數字簽名便從此失去效力。
l 雖然NAT對於無法取得足夠IP地址的企業組織來說,它是一個極佳的解決方案,但當該組織必需合併多個局域網時,必須仔細重新規劃IP分配,否則很容易產生IP重複的情況(因爲每個局域網都使用內部IP地址)。
l NAT通常被人視爲增加計算機安全性的保護措施,但是如果***者可以控制NAT服務器,那麼整個局域網就會暴露在Internet當中,因此NAT並不能拿來代替防火牆使用。
NAT依其作用的方向性通常可以區分爲兩種類型:
l Source NAT (SNAT): 所謂的Source NAT就是改變第一個數據包的來源地址,它永遠會在數據包發送到網絡之前完成,數據包僞裝就是一個SNAT的例子。
l Destination NAT (DNAT): Destination NAT剛好與SNAT相反,它是改變第一個數據包的目的地地址,如平衡負載就屬於DNAT。
經過以上的說明,大家應該對NAT服務器的原理有了一定的瞭解。下面筆者就以自己學校的網絡爲例,來進行實際的NAT服務器的安裝。
學 校整個網絡使用四個IP網段:192.168.0.0/24學校辦公網絡、192.168.1.0/24學校財務網絡、10.0.0.0/16學生網絡、 192.168.2.0/24 NAT服務器所在網絡。這四個網絡以華爲quidway3526爲中心交換機使用vlan劃分開,各個vlan之間通過交 換機配置可以實現相互通信。現在要使這192.168.0.0/192.168.1.0/10.0.0.0這三個網段通過NAT服務器 192.168.2.1來上網。
首先,我們先來進行NAT服務器的安裝。NAT服務器應該至少具備兩張網卡。
第一張網卡名稱:eth0。
IP地址:220.204.56.71。
子網掩碼:255.255.255.0。
第二張網卡名稱:eth1。
IP地址:192.168.2.1。
子網掩碼:255.255.255.0。
在安裝NAT服務器之前,必須確定系統上是否已經安裝了iptables程序,如果不知是否已經安裝了iptables,可以使用以下方法來進行判斷:
#rpm –qa iptalbes
iptables-1.2.7a-2
如果尚未安裝iptables,可以在第一張安裝光盤中的/RedHat/RPMS目錄下,找到名爲“iptables-1.2.7a-2.i386.rpm”的安裝程序,然後按以下方法進行安裝:
#rpm –ivh iptables-1.2.7a-2.i386.rpm
在安裝好iptables以後,我們首先要配置一下靜態路由。以確保NAT主機可以和其它各網段可以相互通信。
首先查看一下路由表:
#route
Kernel IP routing table
Destination Gateway Genmask Flags Use Iface
192.168.2.0 *     255.255.255.0   U  eth1
127.0.0.0 * 255.0.0.0 U lo
default 220.204.56.1 0.0.0.0 UG eth0
現在的NAT主機是無法和其他網段相互通信的,所以我們用添加靜態路由的方法來解決這個問題:
#route add –net 192.168.0.0/24 gw 192.168.2.254
#route add –net 192.168.1.0/24 gw 192.168.2.254
#route add –net 10.0.0.0/16 gw 192.168.2.254
(注:192.168.2.254是quidway3526交換機上192.168.2.0這個vlan的接口)
現在應該已經可以和這三個網段的機器進行相互通信了。用ping命令來進行測試:
C:\Documents and Settings\administrator>ping 192.168.2.1
Pinging 192.168.2.1 with 32 bytes of data:
Reply from 192.168.2.1: bytes=32 time<10ms TTL=63
Reply from 192.168.2.1: bytes=32 time<10ms TTL=63
Ping statistics for 192.168.2.1:
Packets: Sent = 2, Received = 2, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
接下來我們需要使用IP Forwarding的功能,代替內部網絡的主機發送數據包。
1、 修改/etc/sysctl.conf文件內容,將“net.ipv4.ip_forward=”這行設置爲1。
#vi /etc/sysctl.conf
net.ipv4.ip_forward=1
2、 修改/etc/sysconfig/network,加入這句話“echo 1>/proc/sys/net/ipv4/ip_forward”。
3、 重新加載/etc/rc.d/init.d/xinetd,以便使設置生效:
     #/etc/rc.d/init.d/xinetd reload
4、 運行下面的指令使用IP僞裝(IP Masquerading)允許所有內部網絡的主機連接到Internet。
#iptables –t nat –A POSTROUTING –s 192.168.0.0/24 –j MASQUERADE
#iptables –t nat –A POSTROUTING –s 192.168.1.0/24 –j MASQUERADE
#iptables –t nat –A POSTROUTING –s 10.0.0.0/16 –j MASQUERADE
(注:Linux嚴格區分大小寫)
在三個網段上的任意一臺機器運行ping命令進行測試:

C:\Documents and Settings\administrator>ping [url]www.sina.com.cn[/url]
Pinging taurus.sina.com.cn [61.172.201.226] with 32 bytes of data:
Reply from 61.172.201.226: bytes=32 time=78ms TTL=50
Reply from 61.172.201.226: bytes=32 time=62ms TTL=50
Reply from 61.172.201.226: bytes=32 time=93ms TTL=50
Reply from 61.172.201.226: bytes=32 time=63ms TTL=50
Ping statistics for 61.172.201.226:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 62ms, Maximum = 93ms, Average = 74ms
此至使用Linux配置一臺校園網NAT服務器就完成了。當然我們還可以將這臺機器配置成NAT+防火牆,這樣就會使得我們的局域網更加安全,具體怎樣利用iptables來配置防火牆因爲不是本文的重點,所以在這裏就不再詳述了。
Linux 博大精深,其網絡方面的功能強大,安全性和穩定性更是windows所不能及的。但是,Linux的優勢能否更快的爲更多的人所接受,能否在學校信息化進 程中起到顯著的推動作用,還需要每一位Linux愛好者熱情和支持,筆者寫這篇文章也是真正想爲Linux的發展和應用盡上自己的一份力,爲Linux在 學校網絡應用上的推廣做點事情
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章