工作原理:
基礎:
規則(rules)其實就是網絡管理者預定義的條件,規則一般的定義為“如果資料標頭符合這樣的條件,就這樣處理這個資料包”。規則存儲在核心空間的資訊包過濾表中,這些規則分别指定了源位址、目的位址、傳輸協定(如TCP、UDP、ICMP)和服務類型(如HTTP、FTP和SMTP)等。當資料包與規則比對時,iptables就根據規則所定義的方法來處理這些資料包,如放行(accept)、拒絕(r
eject)和丢棄(drop)等。配置防火牆的主要工作就是添加、修改和删除這些規則。
鍊(chains)是資料包傳播的路徑,每一條鍊其實就是衆多規則中的一個檢查清單,每一條鍊中可以有一條或數條規則。當一個資料包到達一個鍊時,iptables就會從鍊中第一條規則開始檢查,看該資料包是否滿足規則所定義的條件。如果滿足,系統就會根據該條規則所定義的方法處理該資料包;否則iptables将繼續檢查下一條規則,如果該資料包不符合鍊中任一條規則,iptables就會根據該鍊預先定義的預設政策來處理資料包。
表(tables)提供特定的功能,iptables内置了4個表,即filter表、nat表、mangle表和raw表,分别用于實作包過濾,網絡位址轉換、包重構(修改)和資料跟蹤處理。一般隻用到filter表
傳輸資料包的過程
指令格式:
iptables [-t table] 指令 [chain] [rules] [-j target]
table——指定表明
指令——對鍊的操作指令
chain——鍊名
rules——規則
target——動作如何進行
1.表選項
表選項用于指定指令應用于哪個iptables内置表,iptables内置包括filter表、nat表、mangle表和raw表。
2.指令選項iptables指令格式
指令 說明
-P或–policy <鍊名> 定義預設政策
-L或–list <鍊名> 檢視iptables規則清單
-A或—append <鍊名> 在規則清單的最後增加1條規則
-I或–insert <鍊名> 在指定的位置插入1條規則
-D或–delete <鍊名> 從規則清單中删除1條規則
-R或–replace <鍊名> 替換規則清單中的某條規則
-F或–flush <鍊名> 删除表中所有規則
-Z或–zero <鍊名> 将表中資料包計數器和流量計數器歸零
3.比對選項
比對 說明
-i或–in-interface <網絡接口名> 指定資料包從哪個網絡接口進入,如ppp0、eth0和eth1等
-o或–out-interface <網絡接口名> 指定資料包從哪塊網絡接口輸出,如ppp0、eth0和eth1等
-p或—proto協定類型 < 協定類型> 指定資料包比對的協定,如TCP、UDP和ICMP等
-s或–source <源位址或子網> 指定資料包比對的源位址
–sport <源端口号> 指定資料包比對的源端口号,可以使用“起始端口号:結束端口号”的格式指定一個範圍的端口
-d或–destination <目标位址或子網> 指定資料包比對的目标位址
–dport目标端口号 指定資料包比對的目标端口号,可以使用“起始端口号:結束端口号”的格式指定一個範圍的端口
4.動作選項
動作 說明
ACCEPT 接受資料包
DROP 丢棄資料包
REDIRECT 與DROP基本一樣,差別在于它除了阻塞包之外, 還向發送者傳回錯誤資訊。
SNAT 源位址轉換,即改變資料包的源位址
DNAT 目标位址轉換,即改變資料包的目的位址
MASQUERADE IP僞裝,即是常說的NAT技術,MASQUERADE隻能用于ADSL等撥号上網的IP僞裝,也就是主機的IP是由ISP配置設定動态的;如果主機的IP位址是靜态固定的,就要使用SNAT
LOG 日志功能,将符合規則的資料包的相關資訊記錄在日志中,以便管理者的分析和排錯
實際例子:
-A OUTPOUT 往OUTPUT鍊路中append一條規則
-d 10.199.160.231 目标位址為10.199.160.231
-p tcp --tcp--flags 指定為tcp協定
-j DROP 丢棄資料包
雖千萬人,吾往矣!