Iptables作網(wǎng)關(guān)時(shí)一種簡(jiǎn)單的NAT使用方式
原創(chuàng)【51CTO.com獨(dú)家特稿】Iptables的基本語(yǔ)法(更好的理解后面的網(wǎng)關(guān)NAT腳本):
iptables [-t表名] <-A| I |D |R> 鏈名[規(guī)則編號(hào)] [-i | o 網(wǎng)卡名稱] [-p 協(xié)議類型] [-s 源IP地址 | 源子網(wǎng)][--sport 源端口號(hào)] [-d 目標(biāo)IP地址 | 目標(biāo)子網(wǎng)][--dport 目標(biāo)端口號(hào)] <-j 動(dòng)作 >
INPUT鏈:當(dāng)一個(gè)數(shù)據(jù)包由內(nèi)核中的路由計(jì)算確定為本地Linux系統(tǒng)后,它會(huì)通過(guò)INPUT鏈的檢查。
OUTPUT鏈:保留給系統(tǒng)自身生成的數(shù)據(jù)包。
FORWARD鏈:經(jīng)過(guò)Linux系統(tǒng)路由的數(shù)據(jù)包(即當(dāng)iptables防火墻用于連接兩個(gè)網(wǎng)絡(luò),兩個(gè)網(wǎng)絡(luò)之間的數(shù)據(jù)包必須流經(jīng)該防火墻)。
PREROUTING鏈:用于修改目的地地址(DNAT)。
POSTROUTING鏈:用于修改源地址(SNAT)。
◆轉(zhuǎn)發(fā)和NAT的語(yǔ)義在iptables是獨(dú)立的。轉(zhuǎn)發(fā)數(shù)據(jù)包的功能是在filter表中通過(guò)使用FORWARD規(guī)則鏈來(lái)完成;而NAT功能是在nat通過(guò)使用PREROUTING、POSTROUTING規(guī)則鏈來(lái)完成?;煜@二個(gè)概念對(duì)它們的功能并沒(méi)有影響,但現(xiàn)在記住它們的區(qū)別是很重要的。轉(zhuǎn)發(fā)和NAT是二個(gè)不同的功能和技術(shù);轉(zhuǎn)發(fā)是一個(gè)路由功能,而NAT是在nat表中定義的一個(gè)轉(zhuǎn)換功能。
Iptables作網(wǎng)關(guān)NAT路由器,啟動(dòng)的是NAT的地址偽裝功能SNAT/MASQUERADE,具體以公司NAT路由腳本/root/firewall.sh實(shí)例來(lái)說(shuō)明下:
此腳本實(shí)現(xiàn)功能如下:
①因?yàn)槭墙壎╩ac地址上網(wǎng),企業(yè)內(nèi)部客戶機(jī)如綁定mac后可杜絕局域網(wǎng)內(nèi)ARP病毒;
②對(duì)局域網(wǎng)內(nèi)機(jī)器上網(wǎng)嚴(yán)格控制,每增加一臺(tái)工作用機(jī),就必須重新刷新NAT服務(wù)器的ip-mac對(duì)應(yīng)關(guān)系;嚴(yán)格杜絕了公司外來(lái)用機(jī)上網(wǎng)問(wèn)題(有的員工周末加班時(shí)喜歡帶自己手提),在安全問(wèn)題上做到防患于未然;
③配合NAT網(wǎng)關(guān)服務(wù)器的監(jiān)控軟件NTOP+iptraf,可以做到及時(shí)監(jiān)控每臺(tái)主機(jī)的流量情況,如發(fā)現(xiàn)流量異常可及時(shí)通知網(wǎng)管或行政處理;
④經(jīng)工作實(shí)際使用發(fā)現(xiàn),此腳本作NAT網(wǎng)關(guān)路由器時(shí),可將公司10M電信光纖帶寬發(fā)揮得極致,即一個(gè)員工用迅雷,整個(gè)公司均打不開(kāi)網(wǎng)頁(yè)。
⑤網(wǎng)關(guān)NAT服務(wù)器也適合做局域網(wǎng)的文件服務(wù)器,提供vsftpd,samba服務(wù)等;
⑥看過(guò)一些其它linux愛(ài)好者寫過(guò)的腳本,感覺(jué)沒(méi)此腳本精簡(jiǎn)方便;這里感謝3158.com技術(shù)總監(jiān)唐老師提供技術(shù)性指導(dǎo)。
#!/bin/bash |
#為了方便調(diào)試工作,將防火墻規(guī)則寫成腳本形式方便調(diào)試。
|
#以mac.txt文件定義的主機(jī)ip及mac地址來(lái)代替原有arp對(duì)應(yīng)關(guān)系;每增加一臺(tái)工作用機(jī),就要重新運(yùn)行一次此腳本。
#當(dāng)iptables對(duì)filter nat mangle任意一表進(jìn)行操作時(shí),會(huì)自動(dòng)加進(jìn)iptable_nat模塊;這個(gè)可以不寫
modprobe iptable_nat |
#加載狀態(tài)檢測(cè)機(jī)制,state模塊時(shí)用到,這個(gè)必寫
modprobe ip_conntrack |
#ip_conntrack_ftp是本機(jī)做FTP時(shí)用到的,這個(gè)看你的網(wǎng)關(guān)NAT用不用FTP,我這里用到了所以寫上了
modprobe ip_conntrack_ftp |
#ip_nat_ftp是通過(guò)本機(jī)的FTP時(shí)需要用到的,這個(gè)我系統(tǒng)用到了。
modprobe ip_nat_ftp |
#清除本網(wǎng)關(guān)的Filter、FORWARD、POSTROUTIG鏈的默認(rèn)規(guī)則
|
#將FORWARD的默認(rèn)策略設(shè)置為禁止一切(基于最安全原則考慮)
iptables -P FORWARD DROP |
#客戶機(jī)綁定mac地址才能上網(wǎng),這樣防止惡意增加IP在公司內(nèi)部上網(wǎng),引起不安全隱患。
|
#網(wǎng)關(guān)上有幾塊網(wǎng)卡,eth0接的是外網(wǎng)IP地址,eth1、eth2等對(duì)應(yīng)該局域網(wǎng)IP,因是租用了電信的光纖,不存在著ADSL上網(wǎng)情況。
|
/root/mac.txt部分內(nèi)容如下:
|
【51CTO.COM 獨(dú)家特稿,轉(zhuǎn)載請(qǐng)注明出處及作者!】
【編輯推薦】