netfilter/iptables IP 信息包過濾系統是一種功能強大的工具,可用於添加、編輯和除去規則,這些規則是在做信息包過濾決定時,防火牆所遵循和組成的規則。這些規則存儲在專用的信息包過濾表中,而這些表集成在 Linux 內核中。在信息包過濾表中,規則被分組放在我們所謂的鏈(chain)中。
雖然 netfilter/iptables IP 信息包過濾系統被稱爲單個實體,但它實際上由兩個組件 netfilter 和 iptables 組成。
netfilter 組件也稱爲內核空間(kernelspace),是內核的一部分,由一些信息包過濾表組成,這些表包含內核用來控制信息包過濾處理的規則集。
iptables 組件是一種工具,也稱爲用戶空間(userspace),它使插入、修改和除去信息包過濾表中的規則變得容易。
iptables包含4個表,5個鏈。其中表是按照對數據包的操作區分的,鏈是按照不同的Hook點來區分的,表和鏈實際上是netfilter的兩個維度。
4個表:filter,nat,mangle,raw,默認表是filter(沒有指定表的時候就是filter表)。表的處理優先級:raw>mangle>nat>filter。
filter:一般的過濾功能
nat:用於nat功能(端口映射,地址映射等)
mangle:用於對特定數據包的修改
raw:有限級最高,設置raw時一般是爲了不再讓iptables做數據包的鏈接跟蹤處理,提高性能
5個鏈:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING。
PREROUTING:數據包進入路由表之前
INPUT:通過路由表後目的地爲本機
FORWARDING:通過路由表後,目的地不爲本機
OUTPUT:由本機產生,向外轉發
POSTROUTIONG:發送到網卡接口之前。如下圖:
iptables中表和鏈的對應關係如下:
iptables規則
規則--顧名思義就是規矩和原則,和現實生活中的事情是一樣的,國有國法,家有家規,所以要遵紀守法的嘛。當然在防火牆上的規則,在內核看來,規則就是決定如何處理一個包的語句。如果一個包符合所有的條件,我們就用相應的處理動作來處理。書寫規則的語法格式爲:
iptables [-t table] command chains [creteria] -j action
-t table就是表名,filter/nat/mangle三個表中的一個,默認是filter表
command告訴程序如何做,比如:插入一個規則,還是刪除等
chains 鏈,有五個,PREROUTING POSTROUTING INPUT OUTPUT FORWARD
action 處理動作,有ACCEPT DENY DROP REJECT SNAT DNAT
理一下思路
下面一點點的說
一、Tables
選項-t用來指定用哪個表,它可以是下面的任何一個,默認的是filter表
本篇文章來源於 Linux公社網站(www.linuxidc.com) 原文鏈接:http://www.linuxidc.com/Linux/2012-08/67505.htm
本篇文章來源於 Linux公社網站(www.linuxidc.com) 原文鏈接:http://www.linuxidc.com/Linux/2012-08/67952.htm