Iptables作網關時一種簡單的NAT使用方式

轉自:http://netsecurity.51cto.com/art/201005/202340.htm


Iptables的基本語法(更好的理解後面的網關NAT腳本):

iptables [-t表名] <-A| I |D |R>  鏈名[規則編號] [-i | o 網卡名稱] [-p 協議類型] [-s 源IP地址 | 源子網][--sport 源端口號] [-d 目標IP地址 | 目標子網][--dport 目標端口號] <-j 動作 >

INPUT鏈:當一個數據包由內核中的路由計算確定爲本地Linux系統後,它會通過INPUT鏈的檢查。             

OUTPUT鏈:保留給系統自身生成的數據包。

FORWARD鏈:經過Linux系統路由的數據包(即當iptables防火牆用於連接兩個網絡,兩個網絡之間的數據包必須流經該防火牆)。

PREROUTING鏈:用於修改目的地地址(DNAT)。

POSTROUTING鏈:用於修改源地址(SNAT)。

◆轉發和NAT的語義在iptables是獨立的。轉發數據包的功能是在filter表中通過使用FORWARD規則鏈來完成;而NAT功能是在nat通過使用PREROUTING、POSTROUTING規則鏈來完成。混淆這二個概念對它們的功能並沒有影響,但現在記住它們的區別是很重要的。轉發和NAT是二個不同的功能和技術;轉發是一個路由功能,而NAT是在nat表中定義的一個轉換功能。

Iptables作網關NAT路由器,啓動的是NAT的地址僞裝功能SNAT/MASQUERADE,具體以公司NAT路由腳本/root/firewall.sh實例來說明下:

此腳本實現功能如下:

①因爲是綁定mac地址上網,企業內部客戶機如綁定mac後可杜絕局域網內ARP病毒;

②對局域網內機器上網嚴格控制,每增加一臺工作用機,就必須重新刷新NAT服務器的ip-mac對應關係;嚴格杜絕了公司外來用機上網問題(有的員工週末加班時喜歡帶自己手提),在安全問題上做到防患於未然;

③配合NAT網關服務器的監控軟件NTOP+iptraf,可以做到及時監控每臺主機的流量情況,如發現流量異常可及時通知網管或行政處理;

④經工作實際使用發現,此腳本作NAT網關路由器時,可將公司10M電信光纖帶寬發揮得極致,即一個員工用迅雷,整個公司均打不開網頁。

⑤網關NAT服務器也適合做局域網的文件服務器,提供vsftpd,samba服務等;

⑥看過一些其它linux愛好者寫過的腳本,感覺沒此腳本精簡方便;這裏感謝3158.com技術總監唐老師提供技術性指導。

#!/bin/bash

#爲了方便調試工作,將防火牆規則寫成腳本形式方便調試。

echo "1" > /proc/sys/net/ipv4/ip_forward

arp -f /root/mac.txt

#以mac.txt文件定義的主機ip及mac地址來代替原有arp對應關係;每增加一臺工作用機,就要重新運行一次此腳本。

#當iptables對filter nat mangle任意一表進行操作時,會自動加進iptable_nat模塊;這個可以不寫

modprobe iptable_nat

#加載狀態檢測機制,state模塊時用到,這個必寫

modprobe ip_conntrack

#ip_conntrack_ftp是本機做FTP時用到的,這個看你的網關NAT用不用FTP,我這裏用到了所以寫上了

modprobe ip_conntrack_ftp

#ip_nat_ftp是通過本機的FTP時需要用到的,這個我係統用到了。

modprobe ip_nat_ftp

#清除本網關的Filter、FORWARD、POSTROUTIG鏈的默認規則

iptables -F INPUT

iptables -F FORWARD

iptables -F POSTROUTING -t nat

#將FORWARD的默認策略設置爲禁止一切(基於最安全原則考慮)

iptables -P FORWARD DROP

#客戶機綁定mac地址才能上網,這樣防止惡意增加IP在公司內部上網,引起不安全隱患。

cat /root/mac.txt | while read LINE

do       

ipad =`echo $LINE | awk '{print $1}'`      

macd =`echo $LINE | awk '{print $2}'`

iptables -A FORWARD -s $ipad -m mac --mac-source $macd -j ACCEPT

done

#網關上有幾塊網卡,eth0接的是外網IP地址,eth1、eth2等對應該局域網IP,因是租用了電信的光纖,不存在着ADSL上網情況。

iptables -A FORWARD -i eth1 -m state

--state ESTABLISHED,RELATED -j ACCEPT

iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24

-j SNAT --to 59.195.233.234

/root/mac.txt部分內容如下:

192.168.1.50 00:16:D3:F6:BD:F5

192.168.1.57 00:16:36:B4:6C:5D

192.168.1.58 00:13:D3:20:04:12

192.168.1.59 00:1E:37:15:18:59

192.168.1.60 00:16:D3:5F:23:B7

192.168.1.65 00:E0:4C:01:1B:85

192.168.1.66 00:1E:37:15:18:59

192.168.1.67 00:E0:B1:B2:58:18

192.168.1.68 00:15:58:20:47:18

192.168.1.80 00:17:31:67:98:DA

192.168.1.88 00:E0:4C:01:1B:85

192.168.1.93 00:21:85:30:7F:DE

192.168.1.94 00:E2:1C:D1:60:41

192.168.1.97 00:13:D3:5E:2F:12

192.168.1.98 00:1D:0F:0F:CC:A2

192.168.1.99 00:19:DB:64:13:5A

......

【51CTO.COM 獨家特稿,轉載請註明出處及作者!】


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章