Iptables 配置指南
iptables是IP信息包過濾系統,我們有必要知道iptables的配置過程!
一、數據包經過防火墻的路徑
圖1比較完整地展示了一個數據包是如何經過防火墻的,考慮到節省空間,該圖實際上包了三種情況:
來自外部,以防火墻(本機)為目的地的包,在圖1中自上至下走左邊一條路徑。
由防火墻(本機)產生的包,在圖1中從“本地進程”開始,自上至下走左邊一條路徑
來自外部,目的地是其它主機的包,在圖1中自上至下走右邊一條路徑。

圖1
如果我們從上圖中略去比較少用的mangle表的圖示,就有圖2所顯示的更為清晰的路徑圖.

圖2
#p#
二、禁止端口的實例
禁止ssh端口
只允許在192.168.62.1上使用ssh遠程登錄,從其它計算機上禁止使用ssh
#iptables -A INPUT -s 192.168.62.1 -p tcp --dport 22 -j ACCEPT
#iptables -A INPUT -p tcp --dport 22 -j DROP
禁止代理端口
#iptables -A INPUT -p tcp --dport 3128 -j REJECT
禁止icmp端口
除192.168.62.1外,禁止其它人ping我的主機
#iptables -A INPUT -i eth0 -s 192.168.62.1/32 -p icmp -m icmp --icmp-type echo-request -j ACCEPT
#iptables -A INPUT -i eth0 -p icmp --icmp-type echo-request –j ?DROP
或
#iptables -A INPUT -i eth0 -s 192.168.62.1/32 -p icmp -m icmp --icmp-type 8 -j ACCEPT
#iptables -A INPUT -i eth0 -p icmp -m icmp --icmp-type 8 -j DROP
注:可以用iptables --protocol icmp --help查看ICMP類型
還有沒有其它辦法實現?
禁止QQ端口
#iptables -D FORWARD -p udp --dport 8000 -j REJECT
#p#
三、強制訪問指定的站點

圖3
要使192.168.52.0/24網絡內的計算機(這此計算機的網關應設為192.168.52.10)強制訪問指定的站點,在做為防火墻的計算機(192.168.52.10)上應添加以下規則:
1. 打開ip包轉發功能
echo 1 > /proc/sys/net/ipv4/ip_forward
2. 在NAT/防火墻計算機上的NAT表中添加目的地址轉換規則:
iptables -t nat -I PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 202.96.134.130:80
iptables -t nat -I PREROUTING -i eth0 -p udp --dport 80 -j DNAT --to-destination 202.96.134.130:80
3. 在NAT/防火墻計算機上的NAT表中添加源地址轉換規則:
iptables -t nat -I POSTROUTING -o eth1 -p tcp --dport 80 -s 192.168.52.0/24 -j SNAT --to-source 202.96.134.10:20000-30000
iptables -t nat -I POSTROUTING -o eth1 -p udp --dport 80 -s 192.168.52.0/24 -j SNAT --to-source 202.96.134.10:20000-30000
4. 測試:在內部網的任一臺計算機上打開瀏覽器,輸入任一非本網絡的IP,都將指向IP為202.96.134.130的網站.
#p#
四、發布內部網絡服務器
圖4
要使因特網上的計算機訪問到內部網的FTP服務器、WEB服務器,在做為防火墻的計算機上應添加以下規則:
1. echo 1 > /proc/sys/net/ipv4/ip_forward
2. 發布內部網web服務器
iptables -t nat -I PREROUTING -p tcp -i eth1 -s 202.96.134.0/24 --dport 80 -j DNAT --to-destination 192.168.52.15:80
iptables -t nat -I POSTROUTING -p tcp -i eth0 -s 192.168.52.15 --sport 80 -j SNAT --to-source 202.96.134.10:20000-30000
3. 發布內部網ftp服務器
iptables -t nat -I PREROUTING -p tcp -i eth1 -s 202.96.134.0/24 --dport 21 -j DNAT --to-destination 192.168.52.14:21
iptables -t nat -I POSTROUTING -p tcp -i eth0 -s 192.168.52.14 --sport 21 -j SNAT --to-source 202.96.134.10:40000-50000
4. 注意:內部網的計算機網關要設置為防火墻的ip(192.168.52.1)
5. 測試: 用一臺IP地址為202.96.134.0段的計算機虛擬因特網訪問,當在其瀏覽器中訪問http://202.96.134.10時,實際應看到的是192.168.52.15的的web服務;
當訪問ftp://202.96.134.10時,實際應看到的是192.168.52.14上的的ftp服務
#p#
五、智能DNS

圖5
1. echo 1 > /proc/sys/net/ipv4/ip_forward
2. 在NAT服務器上添加以下規則:
在PREROUTING鏈中添加目的地址轉換規則:
iptables -t nat -I PREROUTING -i eth0 -p tcp --dpor 53 -j DNAT --to-destination 202.96.134.130
iptables -t nat -I PREROUTING -i eth0 -p udp --dpor 53 -j DNAT --to-destination 202.96.134.130
在POSTROUTING鏈中添加源地址轉換規則:
iptables -t nat -I POSTROUTING -o eth1 -s 192.168.52.0/24 -p tcp --dpor 53 -j SNAT --to-source 202.96.134.10:40000-50000
iptables -t nat -I POSTROUTING -o eth1 -s 192.168.52.0/24 -p udp --dpor 53 -j SNAT --to-source 202.96.134.10:40000-50000
3. 測試
在內部網任一臺計算機上,將DNS設置為任意的外網IP,就可以使用DNS測試工具如nslookup來解析DNS服務器202.96.134.130上的名稱.
#p#
六、端口映射
見上節透明代理設置
#iptables -t nat -A PREROUTING -i eth0 -p tcp -s 192.168.62.0/24 --dport 80 -j REDIRECT --to-ports 3128
七、通過NAT上網
典型NAT上網
一般做為NAT的計算機同時也是局域網的網關,假定該機有兩塊網卡eth0、eth1,eth0連接外網,IP為202.96.134.134;eth1連接局域網,IP為192.168.62.10
1. 先在內核里打開ip轉發功能
#echo 1 > /proc/sys/net/ipv4/ip_forward
2.?使局域網用戶能訪問internet所要做的nat
#iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to?202.96.134.134
如果上網的IP是動態IP,則使用以下規則:
#iptables -t nat -A POSTROUTING -o eth0 -s 192.168.62.0/24 -j MASQUERADE
如果是通過ADSL上網,且公網IP是動態IP,則使用以下規則:
#iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.62.0/24 -j MASQUERADE
3. 使internet用戶可以訪問局域網內web主機所要做的nat
#iptables -t nat -A PREROUTING -p tcp -d 202.96.134.134 --dport 80 -j DNAT --to-destination 192.168.62.10
注:局域網內的客戶端需將默認網關、DNS設為防火墻的IP
在我們的網絡機房實現NAT共享上網
工作環境:上層代理192.168.60.6(4480),只授予教師機(192.168.62.111)使用該代理的權限
目標:不使用squid代理上網,而是使用NAT的方式上網
方法:
1) 確保停止教師機(192.168.62.111)的squid或其它代理服務
2) 客戶端網關、DNS均指向192.168.62.111,瀏覽器代理設置為192.168.60.6(4480)。測試在當前情況下能否上網
3) 在教師機(192.168.62.111)上添加如下iptables規則:
#iptables -t nat -A POSTROUTING -p tcp -d 192.168.60.6/32 --dport 4480 -j SNAT --to-source 192.168.62.111:10000-30000
解釋:對于目的地為192.168.60.6、目的端口為4480的TCP包,在經過防火墻路由后,將其源地址轉換為192.168.62.111,端口轉換為10000-30000間的某個端口。
4) 客戶端測試能否上網
#p#
八、IP規則的保存與恢復
iptables-save把規則保存到文件中,再由目錄rc.d下的腳本(/etc/rc.d/init.d/iptables)自動裝載
使用命令iptables-save來保存規則。一般用
iptables-save > /etc/sysconfig/iptables
生成保存規則的文件 /etc/sysconfig/iptables,
也可以用
service iptables save
它能把規則自動保存在/etc/sysconfig/iptables中。
當計算機啟動時,rc.d下的腳本將用命令iptables-restore調用這個文件,從而就自動恢復了規則。
通過文章的詳細介紹,我們可以清楚的知道iptables的八大點配置過程,感興趣的朋友快跟朋友一起分享吧!
【編輯推薦】
- Iptables 詳細介紹
- 在Ubuntu Server 10.10上簡單配置iptables
- Linux安全性和netfilter/iptables
- 如何用iptables來防止web服務器被CC攻擊
- 解決Linux iptables防火墻和vsftpd的問題
- 15.4 iptables的工作原理
- 9.1.2 iptables防火墻內核模塊
- 9.4.2 使用iptables配置源NAT