簡介
??當主機收到一個數據包后但惶,數據包先在內核空間中處理枷遂,若發(fā)現目的地址是自身澈灼,則傳到用戶空間中交給對應的應用程序處理竞川,若發(fā)現目的不是自身,則會將包丟棄或進行轉發(fā)叁熔。
??iptables實現防火墻功能的原理是:在數據包經過內核的過程中有五處關鍵地方委乌,分別是PREROUTING、INPUT荣回、OUTPUT遭贸、FORWARD、POSTROUTING心软,稱為鉤子函數壕吹,iptables這款用戶空間的軟件可以在這5處地方寫規(guī)則,對經過的數據包進行處理删铃,規(guī)則一般的定義為“如果數據包頭符合這樣的條件耳贬,就這樣處理數據包”。
??iptables中定義有表猎唁,分別表示提供的功能咒劲,有filter表(實現包過濾)、nat表(實現網絡地址轉換)诫隅、mangle表(實現包修改)腐魂、raw表(實現數據跟蹤),這些表具有一定的優(yōu)先級:raw-->mangle-->nat-->filter
常用操作
&emsp常用操作命令 說明
-A 在指定鏈尾部添加規(guī)則
-D 刪除匹配的規(guī)則
-R 替換匹配的規(guī)則
-I 在指定位置插入規(guī)則
例:iptables -I INPUT 1 --dport 80 -j ACCEPT
(將規(guī)則插入到filter表INPUT鏈中的第一位上)
-L/S 列出指定鏈或所有鏈的規(guī)則
-F 刪除指定鏈或所有鏈的規(guī)則
-N 創(chuàng)建用戶自定義鏈
例:iptables -N allowed
-X 刪除指定的用戶自定義鏈
-P 為指定鏈設置默認規(guī)則策略逐纬,對自定義鏈不起作用
例:iptables -P OUTPUT DROP
-Z 將指定鏈或所有鏈的計數器清零
-E 更改自定義鏈的名稱
例:iptables -E allowed disallowed
-n ip地址和端口號以數字方式顯示
例:iptables -Ln
常見規(guī)則匹配器 說明
-p tcp|udp|icmp|all 匹配協(xié)議蛔屹,all會匹配所有協(xié)議
-s addr[/mask] 匹配源地址
-d addr[/mask] 匹配目標地址
--sport port1[:port2] 匹配源端口(可指定連續(xù)的端口)
--dport port1[:port2] 匹配目的端口(可指定連續(xù)的端口)
-o interface 匹配出口網卡,只適用FORWARD豁生、POSTROUTING兔毒、OUTPUT。
例:iptables -A FORWARD -o eth0
-i interface 匹配入口網卡沛硅,只使用PREROUTING眼刃、INPUT、FORWARD摇肌。
--icmp-type 匹配icmp類型(使用iptables -p icmp -h可查看可用的ICMP類型
)
--tcp-flags mask comp 匹配TCP標記,mask表示檢查范圍仪际,comp表示匹配mask中的哪些標記围小。
例:iptables -A FORWARD -p tcp --tcp-flags ALL SYN昵骤,ACK -j ACCEPT
(表示匹配SYN和ACK標記的數據包)
目標動作 說明
ACCEPT 允許數據包通過
DROP 丟棄數據包
REJECT 丟棄數據包,并且將拒絕信息發(fā)送給發(fā)送方
SNAT 源地址轉換(在nat表上)
例:iptables -t nat -A POSTROUTING -d 192.168.0.102 -j SNAT --to 192.168.0.1
DNAT 目標地址轉換(在nat表上)
例:iptables -t nat -A PREROUTING -d 202.202.202.2 -j DNAT --to-destination 192.168.0.102
REDIRECT 目標端口轉換(在nat表上)
例:iptables -t nat -D PREROUTING -p tcp --dport 8080 -i eth2.2 -j REDIRECT --to 80
MARK 將數據包打上標記
例:iptables -t mangle -A PREROUTING -s 192.168.1.3 -j MARK --set-mark 60
注意要點:
1肯适、目標地址轉換一般在PREROUTING鏈上操作
2变秦、源地址轉換一般在POSTROUTING鏈上操作
state:匹配指定的狀態(tài)數據包
參數 說明
--state value value可以為NEW、RELATED(有關聯的)框舔、ESTABLISHED蹦玫、INVALID(未知連接)
例子:
iptables -A INPUT -m state --state NEW,ESTABLISHED -j ACCEPT
常見iptables
??MASQUERADE:是動態(tài)分配ip時用的IP偽裝:在nat表的POSTROUTING鏈加入一條規(guī)則:所有從ppp0口送出的包會被偽裝(MASQUERADE)
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
??REDIRECT:重定向刘绣,這個在squid透明代理時肯定要用到它
所有從eth1進入的請求80和82端口的數據樱溉,被轉發(fā)到80端口,由squid處理纬凤。
iptables -t nat -A PREROUTING - -i eth1 -p tcp -m multiport --dports 80,82 -j REDIRECT --to-ports 80
保存和恢復iptables規(guī)則
使用iptables-save可以保存到特定文件中
??iptables-save >/etc/sysconfig/iptables_save
使用iptables-restore可以恢復規(guī)則
??iptables-restore</etc/sysconfig/iptables_save