第一章:簡述
iptables是一個用戶態(tài)工具,用于操作linux內(nèi)核部分的netfilter模塊(包過濾)废亭,用來完成防火墻相關(guān)的工作柏锄。linux的netfilter工作于2層(開啟bridge-nf時刻)和3層(ip層)诗良,可以對ip包,二層數(shù)據(jù)鏈路包進(jìn)行操作朽合;而市面上還有一種防火墻是應(yīng)用層防火墻,可以對應(yīng)用層包進(jìn)行檢查(過濾)饱狂。所以linux iptables只能作為一個基礎(chǔ)防火墻曹步。
作為用戶態(tài)工具,iptables是firewalld和iptables(服務(wù))的底層接口休讳。
iptables用戶態(tài)工具包含了一下詳細(xì)包:iptables——ip v4 包過濾
ip6table——ip v6
arptables——arp
ebtables——ethnet包過濾讲婚,用于bridge
同時iptables也可以作為linux netfilter內(nèi)核模塊的代稱在內(nèi)核里是x_tables實現(xiàn),在linux3.13以后內(nèi)核用nftables替代了x_tables實現(xiàn)俊柔。x_tables實現(xiàn)的包過濾筹麸,也被稱為Xtables架構(gòu)。
1.1 基礎(chǔ)概念
在iptables里被提的最多的是“四表五鏈”這樣一個概念雏婶。
表(table):不同的表象征著不同的包處理的目的物赶。例如我們有:filter、nat留晚、mangle酵紫、raw 四個表,表示包過濾有如上所述四個目的。
規(guī)則:是由管理員定義的包匹配規(guī)則奖地,當(dāng)包匹配發(fā)生以后橄唬,就執(zhí)行規(guī)則定義的target。
匹配(match):規(guī)則命中的條件鹉动。常規(guī)匹配轧坎、conntrack匹配,phydev匹配泽示、addrtype匹配缸血、state匹配等等。
Target:就是包匹配以后執(zhí)行的動作械筛。常見的動作有:accept捎泻、drop、reject埋哟、snat笆豁、dnat、log赤赊、masqurade闯狱、log、return抛计、queue哄孤。
鏈(chain):指的是包過濾的錨點,也就是說包過濾在內(nèi)核協(xié)議棧的哪些地方生效吹截。鏈里保存有一系列的有先后次序決定優(yōu)先級的規(guī)則瘦陈。
五鏈指的是:prerouting,forwarding波俄,input晨逝,output 和postrouting這五個鏈。
它們具體的位置如下圖:
圖1-2 中input表示數(shù)據(jù)包被送給本地應(yīng)用之前懦铺;output表示來自上層發(fā)送的報文捉貌。Prerouting 是在包進(jìn)入?yún)f(xié)議棧以后第一個過濾點,forward是包被轉(zhuǎn)發(fā)時候的過濾點阀趴,Postrouting是包被轉(zhuǎn)發(fā)完畢或者包被output處理之后需要發(fā)送出去的時候的過濾點昏翰。IN表示送入到協(xié)議棧的包,OUT表示送出協(xié)議棧的包刘急。這就是著名的“五鏈”棚菊。
在圖1-2中同時列出了四表在五鏈中的使用。