1.iptables的概念了解
iptables全稱的寫法是Netfilter/iptables ,他們是資訊包過濾系統的兩個元件
Netfilter:是核心子產品的實作,是linux核心中一個架構,運作在linux核心空間,作用是定義儲存響應的規則。
iptables:是上層的一種操作工具,用來修改資訊的過濾規則和其他配置,運作在使用者空間
總結:若netfilter/iptables是一輛功能完整的汽車,netfilter就是汽車發動機以及車輪等部件,他可以讓車發動行駛;iptables則是方向盤,刹車,油門,等控制汽車的行駛方向,速度。
表-鍊-規則
netfilter提供了一系列的表,每個表有若幹個鍊組成,每條鍊有一條或多條規則組成。
三表五鍊四狀态八動作
三表:
1.filter :這是netfilter預設的表,包含真正的防火牆過濾規則,内建了三條規則鍊:
INPUT:當一個資料包有核心中的路由計算确認為進入本機的包後,會通過INPUT鍊的檢查
OUTPUT:應用于系統自身生成的資料包
FORWARD:應用與路由經過本地的資料包
2.nat :表包含源位址,目标位址,以及端口轉換使用的規則。
内建的鍊有:
PREROUTING:用于修改目标位址(DNAT)
OUTPUT:路由之前修改本地産生的資料包
POSTROUTING:用于修改源位址(SNAT)
3.mangle:該表用在資料包的特殊變更操作,内建的鍊有:
PREROUTING ,INPUT,PORWARD,POSTROUTING,OUTPUT
五鍊
PREROUTING:資料包進入本機,進入路由表之前
INPUT:通過路由表,目的為本機
OUTPUT:由本機産生向外轉發
FORWARD:通過路由表後目的不是本機
POSTROUTING:通過路由表發送到網卡接口前
四狀态:
NEW:第一次發送連結請求的資料包的狀态就是NEW
ESTABLISHED:建立連接配接後,繼續通信的資料包
RELATED:和現有聯機相關的新連接配接的資料包,如ftp用21端口傳遞指令,其它端口傳遞資料
INVALID:無效的資料包,或不能被識别屬于哪個連接配接或沒任何狀态,這種狀态的資料包一般會被丢棄
八動作:
ACCEPT:接受資料包
DROP:丢棄資料包
REDIRECT:将資料包重新轉向到本機或另一台主機的某一端口
REJECT:攔截該資料包,并發回封包通知對方
SNAT:源位址轉換,改變資料包的源位址在nat表的POSTROUTING鍊進行該動作
DNAT:目标位址轉換,在nat表的PREROUTING鍊進行該動作
MASQUERADE:ip僞裝
LOG:日志功能
iptables的工作流程:(隻對nat表和filter表)
1.資料包進入防火牆後,先進入nat表的PREROUTING鍊;如有規則就進行目标位址的轉換
2.資料包經過路由判斷包是發送給本機還是向其它網絡轉發
3.如果是轉發就發送給filter表的FORWARD鍊進行過濾,然後發給nat表的POSTROUTING鍊根據需要可能會進行網絡位址轉換,修改資料包的源位址,最後資料包發送給網卡,轉發給外部網絡
4.如果目的為本機,資料包進入filter表的INPUT鍊進行相應的操作;再進入nat的POSTROUTING鍊向外發送
詳細文法
iptables [-t 表名] <-A|I|D|R>鍊名[規則号] [-i|o 網卡名稱] [-p 協定類型] [-s 源ip位址|源子網] [--sport 源端口号] [-d 目标ip位址|目标子網] [--dport 目标端口号] <-j 動作>