iptables學習總結
netfilter/iptables(簡稱為iptables)組成Linux平臺下的包過濾防火墻更啄,其實iptables只是Linux防火墻的管理工具而已属百,位于/sbin/iptables。真正實現(xiàn)防火墻功能的是netfilter枣购,它是Linux內核中實現(xiàn)包過濾的內部結構。
表
iptables為我們提供了如下規(guī)則的分類,或者說峻呕,iptables為我們提供了如下”表”
- filter表:負責過濾功能吻商,防火墻掏颊;內核模塊:iptables_filter
- nat表:network address translation,網(wǎng)絡地址轉換功能;內核模塊:iptable_nat
- mangle表:拆解報文乌叶,做出修改盆偿,并重新封裝 的功能;iptable_mangle
- raw表:關閉nat表上啟用的連接追蹤機制准浴;iptable_raw
規(guī)則表之間的優(yōu)先順序:
Raw——mangle——nat——filter
鏈
鏈(chains)是數(shù)據(jù)包傳播的路徑事扭,每一條鏈其實就是眾多規(guī)則中的一個檢查清單,每一條鏈中可以有一 條或數(shù)條規(guī)則乐横。當一個數(shù)據(jù)包到達一個鏈時求橄,iptables就會從鏈中第一條規(guī)則開始檢查,看該數(shù)據(jù)包是否滿足規(guī)則所定義的條件葡公。如果滿足罐农,系統(tǒng)就會根據(jù) 該條規(guī)則所定義的方法處理該數(shù)據(jù)包;否則iptables將繼續(xù)檢查下一條規(guī)則催什,如果該數(shù)據(jù)包不符合鏈中任一條規(guī)則涵亏,iptables就會根據(jù)該鏈預先定 義的默認策略來處理數(shù)據(jù)包。
- INPUT——進來的數(shù)據(jù)包應用此規(guī)則鏈中的策略
- OUTPUT——外出的數(shù)據(jù)包應用此規(guī)則鏈中的策略
- FORWARD——轉發(fā)數(shù)據(jù)包時應用此規(guī)則鏈中的策略
- PREROUTING——對數(shù)據(jù)包作路由選擇前應用此鏈中的規(guī)則(記灼研住溯乒!所有的數(shù)據(jù)包進來的時侯都先由這個鏈處理)
- POSTROUTING——對數(shù)據(jù)包作路由選擇后應用此鏈中的規(guī)則(所有的數(shù)據(jù)包出來的時侯都先由這個鏈處理)
根據(jù)上圖,我們能夠想象出某些常用場景中豹爹,報文的流向:
到本機某進程的報文:PREROUTING –> INPUT
由本機轉發(fā)的報文:PREROUTING –> FORWARD –> POSTROUTING
由本機的某進程發(fā)出報文(通常為響應報文):OUTPUT –> POSTROUTING
各表包含的鏈
- Filter表——三個鏈:INPUT裆悄、FORWARD、OUTPUT
作用:過濾數(shù)據(jù)包 內核模塊:iptables_filter. - Nat表——三個鏈:PREROUTING臂聋、POSTROUTING光稼、OUTPUT
作用:用于網(wǎng)絡地址轉換(IP、端口) 內核模塊:iptable_nat - Mangle表——五個鏈:PREROUTING孩等、POSTROUTING艾君、INPUT、OUTPUT肄方、FORWARD , 即作用于全部鏈(chains).
作用:修改數(shù)據(jù)包的服務類型冰垄、TTL、并且可以配置路由實現(xiàn)QOS內核模塊:iptable_mangle(別看這個表這么麻煩权她,咱們設置策略時幾乎都不會用到它) - Raw表——兩個鏈:OUTPUT虹茶、PREROUTING
作用:決定數(shù)據(jù)包是否被狀態(tài)跟蹤機制處理 內核模塊:iptable_raw