![netfilter框架及基本原理介紹_第1頁(yè)](http://file4.renrendoc.com/view/2f1db152d6beb0dc335abcb8739da3d4/2f1db152d6beb0dc335abcb8739da3d41.gif)
![netfilter框架及基本原理介紹_第2頁(yè)](http://file4.renrendoc.com/view/2f1db152d6beb0dc335abcb8739da3d4/2f1db152d6beb0dc335abcb8739da3d42.gif)
![netfilter框架及基本原理介紹_第3頁(yè)](http://file4.renrendoc.com/view/2f1db152d6beb0dc335abcb8739da3d4/2f1db152d6beb0dc335abcb8739da3d43.gif)
![netfilter框架及基本原理介紹_第4頁(yè)](http://file4.renrendoc.com/view/2f1db152d6beb0dc335abcb8739da3d4/2f1db152d6beb0dc335abcb8739da3d44.gif)
![netfilter框架及基本原理介紹_第5頁(yè)](http://file4.renrendoc.com/view/2f1db152d6beb0dc335abcb8739da3d4/2f1db152d6beb0dc335abcb8739da3d45.gif)
下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、一、Netfilter/IPTables 框架簡(jiǎn)介Netfilter/IPTables 是繼 2.0.x 的 IPfwadm、2.2.x 的 IPchains 之后,新一代的 Linux 防火墻。 Netfilter采用模塊化設(shè)計(jì),具有良好的可擴(kuò)展性,其重要工具模塊IPTables連接到Netfilter 的架構(gòu)中,并允許使用者對(duì)數(shù)據(jù)報(bào)進(jìn)行過(guò)濾、地址轉(zhuǎn)換等處理操作。Netfilter提供了一個(gè)框 架,將對(duì)網(wǎng)絡(luò)的直接干涉降到最低,并允許規(guī)定接口將其它包處理代碼以模塊的形式添加到 內(nèi)核中,具有極強(qiáng)的靈活性。二、Netfilter總體架構(gòu)Netfilter主要通過(guò)表、鏈實(shí)現(xiàn)規(guī)則,可以這么說(shuō),Netf
2、ilter是表的容器,表是鏈的容器, 鏈?zhǔn)且?guī)則的容器,最終形成對(duì)數(shù)據(jù)報(bào)處理規(guī)則的實(shí)現(xiàn)。Netfilter的通用框架不依賴于具體的協(xié)議,而是為每種網(wǎng)絡(luò)協(xié)議定義一套HOOK函數(shù), 這些HOOK函數(shù)在數(shù)據(jù)報(bào)經(jīng)過(guò)協(xié)議棧的幾個(gè)關(guān)鍵點(diǎn)時(shí)被調(diào)用,這樣這些模塊就有機(jī)會(huì)檢查、 修改、丟棄該數(shù)據(jù)報(bào)及指示Netfilter將該數(shù)據(jù)報(bào)傳入用戶空間的隊(duì)列。Netfilter 定義了五大 HOOK,分別是:NF_IP_PRE_ROUTING、NF_IP_LOCAL_IN、 NF_IP_FORWAREK NF_IP_LOCAL_OUT、NF_IP_POST_ROUTING,每個(gè) HOOK 對(duì)應(yīng)一 個(gè)操作鏈,分別是:PRER
3、OUTING、INPUT、FORWARD、OUTPUT、POSTROUTING數(shù)據(jù)報(bào)在進(jìn)入系統(tǒng),進(jìn)行IP校驗(yàn)以后,首先經(jīng)過(guò)第一個(gè)HOOK函數(shù) NF_IP_PRE_ROUTING時(shí)行處理;然后就進(jìn)入路由代碼,其決定該數(shù)據(jù)報(bào)需要轉(zhuǎn)發(fā)還是發(fā)給 本機(jī);若數(shù)據(jù)報(bào)是發(fā)給本機(jī),則該數(shù)據(jù)經(jīng)過(guò)HOOK函數(shù)NF_IP_LOCAL_IN處理以后傳遞給 上層協(xié)議;若該數(shù)據(jù)報(bào)應(yīng)該被轉(zhuǎn)發(fā)則它被NF_IP_FORWARE處理;經(jīng)過(guò)轉(zhuǎn)發(fā)的數(shù)據(jù)報(bào)經(jīng)過(guò)最 后一個(gè)HOOK函數(shù)NF_IP_POST_ROUTING處理以后,再傳輸?shù)骄W(wǎng)絡(luò)上。本地產(chǎn)生的數(shù)據(jù) 報(bào)經(jīng)過(guò)HOOK函數(shù)NF_IP_LOCAL_OUT處理后,進(jìn)行路由選擇處理,然后經(jīng)
4、過(guò) NF_IP_POST_ROUTING處理發(fā)送到網(wǎng)絡(luò)。如下圖1(摘自網(wǎng)絡(luò))所示。Device driversDevice drivers一 OuterNFP_PRE_ROUTINGNF_I P_POST_ROUTI NGInnerROUTE-|NF_IP_FORWARD I| ROyTE一N F_l P_LOCAL_I NN FJ P_LOCAL_OU T Local processesNetfilter-IPv4的數(shù)據(jù)報(bào)篩選體系(圖1)上圖中的兩個(gè)ROUTE環(huán)節(jié)是Linux內(nèi)核中強(qiáng)大的路由代碼,去掉5個(gè)HOOK之后, 我們可以看到Netfilter沒(méi)有出現(xiàn)之前內(nèi)核的數(shù)據(jù)路由體系結(jié)構(gòu)三、 I
5、PTablesIPTables工具模塊提供了三個(gè)表,分別是filter,nat和mangle,每個(gè)表有不同的操作鏈 (chains),對(duì)應(yīng)到Netfilter框架就是各個(gè)HOOk函數(shù)。在filter表中定義了三個(gè)鏈,分別是 INPUT、FORWARD、OUTPUT,也就是對(duì)數(shù)據(jù)報(bào)的入,轉(zhuǎn)發(fā)、出定義了三個(gè)過(guò)濾鏈。在iat 表中定義了 PREROUTING、POSTROUTING、OUTPUT三個(gè)鏈。而在mangle表是一個(gè)自 定義的表,里面包括上面filter和nat表中的各種鏈,它可以讓我們自定義一些操作,同時(shí) 這些chains在Netfilter對(duì)包的處理流程中處于一個(gè)比較優(yōu)先的位置。如下圖
6、2 (摘自網(wǎng)絡(luò))所 示:(MANGLE RERTINGITNAT PREROUTING/ MANGLENAT(圖2)此圖正跟圖1對(duì)應(yīng),HOOK監(jiān)聽不同的表,一個(gè)HOOK可能分很多步驟對(duì)三個(gè)表中的 至少一個(gè)表進(jìn)行操作,表的作用1、Mangle表主要用來(lái)修改包的報(bào)頭,有四種操作:TOS(服務(wù)類型,IP報(bào)頭),TTL (生 存時(shí)間,IP報(bào)頭),MARK(sbk的nfmark域設(shè)置的值)MSS (最大數(shù)據(jù)報(bào)長(zhǎng)度,tcp報(bào)頭)。2、NAT表用作nat,也就是轉(zhuǎn)換包的源或目標(biāo)地址,注意:只有流的第一個(gè)包會(huì)被這個(gè)鏈匹配,其后的包會(huì)自動(dòng)被做相同處理。實(shí)際操作可分:DNAT(目標(biāo)網(wǎng)絡(luò)地址轉(zhuǎn)換),SNAT源網(wǎng)絡(luò)地
7、址轉(zhuǎn)換),MASQUERADE (定義偽裝)。DNAT改變的是目的地址,以使能重路由到某臺(tái)主機(jī)。SNAT改變包的源地址,這在極大程序上可以隱藏你的本地網(wǎng)絡(luò)或DMZ等。如果使用 類似192,168,0.1/24這樣的地址,是不會(huì)從Internet得到任何回應(yīng)的,因?yàn)镮ANA定義這 些網(wǎng)絡(luò)為私有的,只能用于LAN內(nèi)部。MASQUERADE 對(duì)于每個(gè)匹配的包都是要查找可用的IP地址,而不像SNAT用的ip 地址是配置好的。3、filter數(shù)據(jù)報(bào)過(guò)濾,在數(shù)據(jù)報(bào)傳遞的關(guān)鍵點(diǎn)上對(duì)其時(shí)行過(guò)濾。四、Ipvs和Netfilter的關(guān)系Ipvs基本上是一種高效的Layer-4交換機(jī),它提供負(fù)載平衡功能,當(dāng)一個(gè)Tc
8、p連接的初 始SYN報(bào)文到達(dá)時(shí),ipvs就選擇一臺(tái)服務(wù)器,將報(bào)文轉(zhuǎn)發(fā)給它。此后通過(guò)查發(fā)報(bào)文的小和 Tcp報(bào)文頭地址,保證此連接的后繼報(bào)文被轉(zhuǎn)發(fā)到相同的服務(wù),不管請(qǐng)求被送到哪一臺(tái)服務(wù) 器,返回結(jié)果都應(yīng)該是一樣的,但是在有一些應(yīng)用中后端的服務(wù)器可能功能不一,有的是提 供HTML文檔的web服務(wù)器,有的是提供圖片的web服務(wù)器,有的是提供CGI的web服 務(wù)器。這時(shí),就需要基于內(nèi)容請(qǐng)求分發(fā),同時(shí)基于內(nèi)容請(qǐng)求分發(fā)可以提高后端服務(wù)器上訪問(wèn) 的局部性。Ipvs支持三種負(fù)載均衡模式:NAT, Tunnel和direct routing(DR)0 NAT是通用模式,所 有交互數(shù)據(jù)必須通過(guò)均衡器(Directo
9、r);后兩種則是一種半連接處理方式,請(qǐng)求數(shù)據(jù)通過(guò)均衡 器,而服務(wù)器的回應(yīng)則是直接路由返回的,而這兩種方法的區(qū)別是tunnel模式下由于進(jìn)行了 IP封裝所以可路由,而DR方式是修改MAC地址來(lái)實(shí)現(xiàn),所以必須同一個(gè)網(wǎng)段。(圖3)圖3中的第一個(gè)灰色箭頭表示來(lái)自PRE_ROUTING鉤子的數(shù)據(jù)包到達(dá)LOCAL_IN鉤 子,Director接收到的每個(gè)到集群服務(wù)的數(shù)據(jù)包,不管你選擇哪種轉(zhuǎn)發(fā)方法,都必須通過(guò) PRE_ROUTING鉤子抵達(dá)LOCAL_IN鉤子,即所有Director內(nèi)核內(nèi)的數(shù)據(jù)包路由規(guī)則都必 須將數(shù)據(jù)包發(fā)送到LOCAL_IN鉤子,在你建立Director時(shí)這很容易實(shí)現(xiàn),因?yàn)樗械诌_(dá) Dir
10、ector的集群服務(wù)數(shù)據(jù)包都有一個(gè)虛擬ip地址(VIP)作為目標(biāo)地址,VIP實(shí)際上是屬于 Director的一個(gè)ip別名或從屬ip地址,因?yàn)閂IP是Director所有的一個(gè)本地ip地址,Director 內(nèi)核中的路由表將總是在內(nèi)部傳遞數(shù)據(jù)包,因此Director接收到的目標(biāo)地址為VIP的數(shù)據(jù)包 總會(huì)命中LOCAL_IN鉤子。圖3中的第二個(gè)灰色箭頭表示入站數(shù)據(jù)包被內(nèi)核認(rèn)可為是一個(gè)請(qǐng)求虛擬服務(wù)的數(shù)據(jù)包 后的路徑走向,當(dāng)數(shù)據(jù)包命中LOCAL_IN鉤子后,運(yùn)行在內(nèi)核內(nèi)的LVS軟件知道數(shù)據(jù)包是 一個(gè)請(qǐng)求集群服務(wù)(在LVS術(shù)語(yǔ)中叫做虛擬服務(wù))的數(shù)據(jù)包,因?yàn)閿?shù)據(jù)包的目的是到VIP 地址,你在建立你自己的集
11、群時(shí),使用ipvsadm工具添加虛擬服務(wù)VIP地址到內(nèi)核中,以 便LVS能夠識(shí)別發(fā)送到VIP LOCAL_IN鉤子上的入站數(shù)據(jù)包。如果你沒(méi)有添加VIP到LVS 虛擬服務(wù)表(也叫做IPVS表),到VIP的數(shù)據(jù)包可能會(huì)被傳遞到Director本地運(yùn)行的守護(hù) 進(jìn)程上。但是因?yàn)镈irector知道VIP地址3,它可以檢查每個(gè)命中LOCAL_IN鉤子的數(shù)據(jù) 包是否是請(qǐng)求集群服務(wù)的數(shù)據(jù)包,在數(shù)據(jù)包到達(dá)Director本地運(yùn)行的守護(hù)進(jìn)程前,Director 還可以改變數(shù)據(jù)包的命運(yùn),LVS通過(guò)告訴內(nèi)核它不應(yīng)該將到VIP地址的數(shù)據(jù)包傳遞給本地 的守護(hù)進(jìn)程,而應(yīng)該傳遞給集群節(jié)點(diǎn)來(lái)實(shí)現(xiàn),這樣數(shù)據(jù)包就會(huì)發(fā)送到POST_ROUTING鉤子, 如圖3中的第二個(gè)箭頭所指,數(shù)據(jù)包從連接D/RIP網(wǎng)絡(luò)的網(wǎng)卡發(fā)送出去。通過(guò)Net
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 專項(xiàng)法律服務(wù)企業(yè)與律師事務(wù)所合同模板
- 交通接送服務(wù)合同:會(huì)議出行安排
- 不履行房屋買賣合同起訴書范本
- 上海股權(quán)轉(zhuǎn)讓合同范本
- 個(gè)體工商戶借款合同模板
- 中外勞務(wù)輸出合同盤點(diǎn)
- 親朋好友借款合同參考范本
- 五人股東投資合同協(xié)議
- 專業(yè)翻譯服務(wù)采購(gòu)合同
- 中保財(cái)產(chǎn)保險(xiǎn)有限公司建筑工程一切險(xiǎn)合同
- 2024年云南省公務(wù)員考試【申論縣鄉(xiāng)卷、行測(cè)、事業(yè)單位招聘】3套 真題及答案
- 數(shù)字媒體藝術(shù)專業(yè)行業(yè)分析報(bào)告
- 湖南省長(zhǎng)沙市長(zhǎng)郡教育集團(tuán)2024-2025學(xué)年七年級(jí)上學(xué)期期末考試英語(yǔ)試題(含答案)
- 公司員工升職加薪制度模板
- 2024上海市招聘社區(qū)工作者考試題及參考答案
- 2024-2025學(xué)年人教版三年級(jí)(上)英語(yǔ)寒假作業(yè)(九)
- 《招標(biāo)投標(biāo)法》考試題庫(kù)200題(含答案)
- 立春氣象與健康
- 河南退役軍人專升本計(jì)算機(jī)真題答案
- 室內(nèi)空氣治理技術(shù)培訓(xùn)
- 2024-2025學(xué)年上外版高二上學(xué)期期中英語(yǔ)試卷與參考答案
評(píng)論
0/150
提交評(píng)論