filter表
主要用於對數據包進行過濾,根據具體的規則決定是否放行該數據包(如DROP、ACCEPT、REJECT、LOG)。filter 表對應的內核模塊為iptable_filter,包含三個規則鏈:
INPUT鏈:INPUT針對那些目的地是本地的包;
FORWARD鏈:FORWARD過濾所有不是本地產生的並且目的地不是本地(即本機只是負責轉發)的包;
OUTPUT鏈:OUTPUT是用來過濾所有本地生成的包;
nat表
主要用於修改數據包的IP地址、端口號等信息(網絡地址轉換,如SNAT、DNAT、MASQUERADE、REDIRECT)。屬於一個流的包(因為包 的大小限制導致數據可能會被分成多個數據包)只會經過這個表一次。如果第一個包被允許做NAT或Masqueraded,那么余下的包都會自動地被做相同的操作,也就是說,余下的包不會再通過這個表。表對應的內核模塊為 iptable_nat,包含三個鏈:
PREROUTING鏈:作用是在包剛剛到達防火牆時改變它的目的地址;
OUTPUT鏈:改變本地產生的包的目的地址;
POSTROUTING鏈:在包就要離開防火牆之前改變其源地址;
(centos7中還有INPUT,centos6中沒有)
mangle表
主要用於修改數據包的TOS(Type Of Service,服務類型)、TTL(Time To Live,生存周期)指以及為數據包設置Mark標記,以實現Qos(Quality Of Service,服務質量)調整以及策略路由等應用,由於需要相應的路由設備支持,因此應用並不廣泛。
包含五個規則鏈:PREROUTING,POSTROUTING,INPUT,OUTPUT,FORWARD。
raw表
是自1.2.9以后版本的iptables新增的表,主要用於決定數據包是否被狀態跟蹤機制處理。在匹配數據包時,raw表的規則要優先於其他表。
包含兩條規則鏈——OUTPUT、PREROUTING