摘 要:隨著Internet網(wǎng)絡(luò)在全世界范圍內(nèi)的迅速發(fā)展,IPv4協(xié)議支持的可用IP地址資源逐漸變得山窮水盡,資源的匱乏使得許多企業(yè)難以申請(qǐng)更多的公網(wǎng)IP地址,或者只能承受一個(gè)或者少數(shù)幾個(gè)公網(wǎng)IP地址的費(fèi)用。而與此同時(shí),大部分企業(yè)面臨著將局域網(wǎng)內(nèi)的主機(jī)接入Internet的需求。針對(duì)這一問(wèn)題,討論一下在Linux操作系統(tǒng)下怎樣使用Iptables的SNAT策略來(lái)化解這一難題。
關(guān)鍵詞:Linux操作系統(tǒng);Iptables;SNAT策略;MASQUERADE
1 SNAT策略概述
隨著Internet網(wǎng)絡(luò)在全世界范圍內(nèi)的迅速發(fā)展,IPv4協(xié)議支持的可用IP地址資源在逐漸減少,能申請(qǐng)到的公網(wǎng)IP也越來(lái)越少,大部分企業(yè)面臨著將局域網(wǎng)內(nèi)的主機(jī)接入到Internet中,為了化解這一難題,我們可以用Iptables的SNAT(Source Network Address Translation,源地址)策略來(lái)解決。
2 SNAT策略的應(yīng)用
SNAT策略主要應(yīng)用在局域網(wǎng)共享上網(wǎng)接入的方面,而處理數(shù)據(jù)包的切入時(shí)機(jī),主要在路由選擇之后(POSTROUTING)進(jìn)行。SNAT中能用于NAT表的POSTROUTING鏈。SNAT策略的關(guān)鍵在于將局域網(wǎng)外發(fā)數(shù)據(jù)包的源IP地址(私有地址)修改為網(wǎng)關(guān)的外網(wǎng)IP地址(公有地址)。因?yàn)榫W(wǎng)關(guān)服務(wù)器的IP地址通常具有兩種情況,一種是固定的靜態(tài)的IP地址,另一種是非固定的動(dòng)態(tài)IP地址。下面分別從這兩方面來(lái)介紹SNAT的使用策略。
2.1 網(wǎng)關(guān)服務(wù)器具有固定的靜態(tài)IP地址的SNAT策略
在對(duì)網(wǎng)關(guān)服務(wù)器為固定的靜態(tài)IP地址的SNAT策略進(jìn)行設(shè)置時(shí),iptables命令需要結(jié)合“- -to-source IP地址”選項(xiàng)使用,該選項(xiàng)用于指定修改后的IP地址,如:-j SNAT - -to-source 202.97.224.68)。
案例環(huán)境如下:
網(wǎng)關(guān)服務(wù)器使用linux操作系統(tǒng)。
網(wǎng)關(guān)上兩塊網(wǎng)卡:eth0:202.97.224.68(接外網(wǎng))
eth1:192.168.0.2(接局域網(wǎng))。
局域網(wǎng)內(nèi)各主機(jī)網(wǎng)關(guān):192.168.0.1,并且已正確設(shè)置了DNS服務(wù)器。
案例要實(shí)現(xiàn)的結(jié)果:在Linux網(wǎng)關(guān)中進(jìn)行正確配置,通過(guò)SNAT策略使192.168.0.0/24網(wǎng)段的局域網(wǎng)用戶能通過(guò)共享的方式訪問(wèn)Internet。
依據(jù)上述要求,使用Iptables的SNAT策略的步驟如下:
(1)開(kāi)啟網(wǎng)關(guān)服務(wù)的路由轉(zhuǎn)發(fā)功能。
[root@www ~]# vi /etc/sysctl.conf //將ip_forward的值改為1
net.ipv4.ip_forward = 1
[root@www ~]# sysctl –p //從默認(rèn)的配置文件中讀取配置
(2)用iptables命令將源地址改為服務(wù)器的公網(wǎng)IP地址,使局域網(wǎng)訪問(wèn)Internet的數(shù)據(jù)包采用SNAT策略。
[root@www ~]# iptables -t nat -A POSTROUTING –s 192.168.0.0/24 -o eth0 -j SNAT
--to-source 202.97.224.68
上述步驟完成網(wǎng)關(guān)服務(wù)器具有固定的靜態(tài)IP地址的SNAT策略的設(shè)置,可以使用局域網(wǎng)內(nèi)的客戶機(jī)訪問(wèn)Internet中的網(wǎng)站進(jìn)行測(cè)試(如新浪)。
2.2 網(wǎng)關(guān)服務(wù)器具有非固定的動(dòng)態(tài)態(tài)IP地址的SNAT策略
在使用SNAT策略時(shí),有時(shí)會(huì)遇到網(wǎng)關(guān)服務(wù)器使用的是非固定的動(dòng)態(tài)IP地址,如使用ADSL寬帶接入時(shí)可能獲取的是動(dòng)態(tài)IP地址。那么在這種網(wǎng)絡(luò)環(huán)境下,使用固定IP地址的方法肯定是不可取的,該如何設(shè)置SNAT策略呢?針對(duì)這種情況,iptables提供了一個(gè)名為MASQUERADE(偽裝)的數(shù)據(jù)包處理方式,MASQUERADE同樣可以完成修改數(shù)據(jù)包源IP地址的工作,只不過(guò)它會(huì)自動(dòng)獲取外網(wǎng)接口的IP地址,不需要使用“--to-source”選項(xiàng)。而是使用“-j MASQUERADE”選項(xiàng)來(lái)指定數(shù)據(jù)處理方式即可。
例:設(shè)置MASQUERADE策略,使192.168.0.0/24網(wǎng)段能夠通過(guò)網(wǎng)關(guān)ppp0(Linux系統(tǒng)中,對(duì)應(yīng)的連接名稱)連接共享上網(wǎng)。
[root@www ~]# iptables -t nat -A POSTROUTING –s 192.168.0.0/24 -o ppp0 –j MASQUERADE
當(dāng)然,在網(wǎng)關(guān)使用固定靜態(tài)IP地址時(shí),也可以使用MASQUERADE,而不用SNAT。只是,MASQUERADE會(huì)比SNAT多些額外的開(kāi)銷,因此如果有固定的IP地址,建議使用SNAT策略,避免出現(xiàn)過(guò)多的開(kāi)銷。
[參考文獻(xiàn)]
[1]北京阿博泰北大青鳥(niǎo)信息技術(shù)有限公司編著.科學(xué)技術(shù)文獻(xiàn)出版社 2009(65).
[2]楊云,張輝.在Linux下配置防火墻[J].電腦知識(shí)與技術(shù),2009(27).