環境說明:
OS:CentOS 2.6.18-308.16.1.el5
Iptables:iptables v1.3.5
剛學習linux的iptables配置,首先想從ping的簡單控制入手,雖然簡單,但是還是遇到了幾個問題。
首先,清空了所有的規則,並將filter的規則缺省為drop
iptables –P INPUT DROP
iptables –P OUTPUT DROP
iptables –P FORWARD DROP
這時候ping操作的時候會出現:
開始設置運行ping操作的規則
iptables –A INPUT –p icmp –icmp-type echo-reply –j ACCEPT
iptables –A OUTPUT –p icmp –icmp-type echo-request –j ACCEPT
這個時候,ping的關鍵規則就設置好了。測試一下:
ping 202.204.80.166
但是我就在這個這裡遇到了問題,我測試的方法是ping 127.0.0.1 ,但是總是不通。我就以為是規則設置不正確,但是一直找不出原因。
後來才發現原來是這個IP地址太特殊了。如果想ping通這個地址,還需要設置其他規則,允許本地回環接口(loopback)通過防火牆,設置如下:
iptables –A INPUT –i lo –p all –j ACCEPT
iptables –A OUTPUT –o lo –p all –j ACCEPT
這時候再進行ping 127.0.0.1操作時就可以通過了。
但是設置到這裡直接ping IP地址是可以的,但是如果ping 域名的話就會出現錯誤。
原因是我們已經把操作系統在進行DNS解析時傳送的數據包給DROP了,所以必須設置規則,允許系統域名解析,進行如下操作:
iptables –A INPUT –p udp –sport 53 –j ACCEPT
iptables –A OUTPUT –p udp –dport 53 –j ACCEPT
這樣設置之後就可以使用ping域名操作了。
最後還需要保存上邊設置的規則。
service iptables save
我的iptables的配置文件如下。