999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Linux的Netfilter處理數(shù)據(jù)包的過程分析

2009-10-26 09:35:10高祥斌
新媒體研究 2009年13期

高祥斌

[摘要]防火墻技術(shù)在保護(hù)網(wǎng)絡(luò)安全方面的作用越來越明顯。相比較window,Linux有更好的網(wǎng)絡(luò)性能,因此基于Linux的Netfilter技術(shù)的使用越來越廣泛。先分析Netfilter技術(shù)的特點(diǎn),然后從兩個(gè)方面對(duì)其進(jìn)行詳細(xì)分析:Netfilter的工作原理和Netfilter對(duì)數(shù)據(jù)包的處理過程,最后簡(jiǎn)要分析Netfilter應(yīng)用開發(fā)及其優(yōu)越性。

[關(guān)鍵詞]Netfilter數(shù)據(jù)包鉤子函數(shù)

中圖分類號(hào):TP3文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1671-7597(2009)0710041-01

網(wǎng)絡(luò)在經(jīng)濟(jì)和生活的各個(gè)領(lǐng)域正在迅速普及,眾多的企業(yè)、組織、政府部門與機(jī)構(gòu)都在組建和發(fā)展自己的網(wǎng)絡(luò),并連接到Internet上。為了保護(hù)組織資源不泄露,不受到病毒侵襲,黑客攻擊,網(wǎng)絡(luò)安全越來越受到人們的重視。Linux良好的網(wǎng)絡(luò)性能和開放源代碼的特點(diǎn),使越來越多的用戶選擇了Linux作為其防火墻的操作平臺(tái),本文正是針對(duì)當(dāng)前流行的Linux中采用的Netfilter技術(shù)進(jìn)行相關(guān)分析。

一、Netfilter的技術(shù)特點(diǎn)

Netfilter技術(shù)對(duì)ipchains進(jìn)行了改進(jìn):它摒棄了ipchains不區(qū)分?jǐn)?shù)據(jù)包是單純的進(jìn)入包、外出包或中轉(zhuǎn)包的做法,同時(shí)為每種網(wǎng)絡(luò)協(xié)議(IPv4、IPv6等)定義一套鉤子函數(shù),這些鉤子函數(shù)在數(shù)據(jù)包流過協(xié)議棧的幾個(gè)關(guān)鍵點(diǎn)被調(diào)用;Netfilter內(nèi)核中,任何模塊可以對(duì)每種協(xié)議的一個(gè)或多個(gè)鉤子進(jìn)行注冊(cè),實(shí)現(xiàn)掛載,這樣當(dāng)某個(gè)數(shù)據(jù)包被傳遞給Netfilter框架時(shí),內(nèi)核能檢測(cè)是否有任何模塊對(duì)某種協(xié)議和鉤子函數(shù)進(jìn)行了注冊(cè)[1]。如果是注冊(cè)了,這些模塊就調(diào)用注冊(cè)時(shí)使用的回調(diào)函數(shù)對(duì)數(shù)據(jù)包進(jìn)行檢查或修改,然后決定是丟棄還是接受數(shù)據(jù)包;Netfilter位于Linux的IP層,它的防火墻的代碼與實(shí)現(xiàn)IP層的代碼完全分離,從而構(gòu)成不同的模塊,使網(wǎng)絡(luò)層和防火墻在結(jié)構(gòu)上很清晰,防火墻代碼修改和功能擴(kuò)充更加容易。

二、Netfilter技術(shù)分析

Netfilter是Linux內(nèi)核實(shí)現(xiàn)數(shù)據(jù)包過濾、網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)、數(shù)據(jù)包處理等的功能框架。相對(duì)于原來的ipchains防火墻,Netfilter防火墻以更好的結(jié)構(gòu)重新構(gòu)造,并實(shí)現(xiàn)了許多新功能。

(一)Netfilter的工作原理。Netfilter的設(shè)計(jì)為L(zhǎng)inux內(nèi)核中其它模塊動(dòng)態(tài)參與IP層中的數(shù)據(jù)包處理提供了途徑。其實(shí)現(xiàn)方法是:

1. 在內(nèi)核中建立了一個(gè)函數(shù)指針鏈表,即鉤子函數(shù)鏈表,加入到鏈表中的函數(shù)指針?biāo)傅暮瘮?shù)稱為鉤子函數(shù)(Hook Function)。當(dāng)內(nèi)核模塊需要參與IP層中對(duì)數(shù)據(jù)包的處理時(shí),通過調(diào)用Netfilter中鉤子函數(shù)的注冊(cè)函數(shù),注冊(cè)內(nèi)核模塊的數(shù)據(jù)包處理函數(shù),Netfilter將在鉤子函數(shù)鏈表中記錄下此模塊中的數(shù)據(jù)包處理函數(shù)指針。

2. IP層在數(shù)據(jù)包處理過程中,會(huì)檢查相應(yīng)的鉤子函數(shù)鏈表中是否有鉤子函數(shù)被注冊(cè):如果存在注冊(cè)的鉤子函數(shù),便會(huì)調(diào)用此函數(shù),并且根據(jù)該函數(shù)的處理結(jié)果,決定是繼續(xù)完成IP層中的后續(xù)處理過程,還是丟棄此數(shù)據(jù)包,中斷數(shù)據(jù)包的傳輸;如果不存在注冊(cè)的鉤子函數(shù),則繼續(xù)完成IP層中的后續(xù)處理。

3. 當(dāng)內(nèi)核模塊不需要參與IP層的數(shù)據(jù)包處理時(shí),調(diào)用Netfilter鉤

子注銷函數(shù),Netfilter從鉤子函數(shù)鏈表中去掉此鉤子函數(shù)指針,這樣IP層檢測(cè)不到鉤子函數(shù)的存在,會(huì)繼續(xù)其后續(xù)操作。

鉤子和掛載函數(shù)是Netfilter架構(gòu)中的核心部分。Linux內(nèi)核的Netfil

Ter框架為IPv4協(xié)議實(shí)現(xiàn)了五個(gè)鉤子函數(shù)掛載點(diǎn),分別為:NF_IP_PRE_ROUT

ING,NF_IP_LOCAL_IN,NF_IP_FORWARD,NF_IP_POST_ROUTING,NF_IP_LOC

AL_OUT。當(dāng)數(shù)據(jù)包流經(jīng)IPv4協(xié)議棧的五個(gè)掛載點(diǎn)時(shí),內(nèi)核就會(huì)調(diào)用在掛載點(diǎn)注冊(cè)的回調(diào)函數(shù)對(duì)數(shù)據(jù)包進(jìn)行處理。Netfilter掛載點(diǎn)回調(diào)函數(shù)的調(diào)用代碼是通過NF_HOOK宏嵌入在網(wǎng)絡(luò)協(xié)議棧的代碼之中的,其定義在include/li

nux/netfilter.h中。

(二)Netfilter對(duì)數(shù)據(jù)包的處理過程?;贚inux的Netfilter防火墻設(shè)計(jì)中,其對(duì)數(shù)據(jù)包的處理過程如圖1所示:

圖1Netfilter中數(shù)據(jù)包的處理過程

圖1中共有5個(gè)鉤子函數(shù)(即HOOK),數(shù)據(jù)包從左邊進(jìn)入系統(tǒng),進(jìn)行IP校驗(yàn)以后,數(shù)據(jù)包經(jīng)過第一個(gè)鉤子函數(shù)鏈表NF_IP_PRE_ROUTING進(jìn)行處理;然后就進(jìn)入路由代碼,決定該數(shù)據(jù)包是需要轉(zhuǎn)發(fā)還是發(fā)給本機(jī);若該數(shù)據(jù)包是發(fā)給本機(jī)的,則經(jīng)過鉤子函數(shù)鏈表NF_IP_LOCAL_IN處理后傳遞給上層協(xié)議;若該數(shù)據(jù)包應(yīng)該被轉(zhuǎn)發(fā),則它被NF_IP_FORWARD處理;轉(zhuǎn)發(fā)的數(shù)據(jù)包經(jīng)過最后一個(gè)鉤子函數(shù)鏈表NF_IP_POST_ROUTING處理以后,再傳輸?shù)骄W(wǎng)絡(luò)上。本地產(chǎn)生的數(shù)據(jù)包經(jīng)過鉤子函數(shù)鏈表NF_IP_LOCAL_OUT處理后,進(jìn)行路由選擇處理,然后經(jīng)過NF_IP_POST_ROUTING處理并發(fā)送到網(wǎng)絡(luò)上。另外,還可以使用內(nèi)核模塊在Netfilter的五個(gè)鉤子函數(shù)鏈表上掛載一個(gè)或者多個(gè)這樣的鉤子函數(shù)。這樣當(dāng)有數(shù)據(jù)包進(jìn)入鉤子點(diǎn)處理時(shí),將查找被掛載的函數(shù),然后調(diào)用這些函數(shù)對(duì)數(shù)據(jù)包進(jìn)行處理。

(三)Netfilter應(yīng)用和開發(fā)。一般而言基于Netfilter的應(yīng)用開發(fā)有兩種[2]:從用戶空間的角度進(jìn)行開發(fā),這種開發(fā)主要是如何充分發(fā)揮內(nèi)核所提供的防火墻功能,它不能為防火墻增加基本功能模塊;另外就是從內(nèi)核空間的角度進(jìn)行開發(fā)。這種方法不僅能充分發(fā)揮現(xiàn)有功能,而且還能添加新的功能模塊。

Netfilter具有良好的框架和拓展性,這使得開發(fā)人員無需過多涉及內(nèi)核協(xié)議棧的改動(dòng)。開發(fā)基于Netfilter框架的內(nèi)核模塊一般有一下幾個(gè)步驟:分析功能需求,確定要在哪幾個(gè)鉤子掛載點(diǎn)處注冊(cè)鉤子函數(shù);按照鉤子函數(shù)的接口規(guī)范編寫鉤子函數(shù);在掛載點(diǎn)處注冊(cè)鉤子函數(shù)。

參考文獻(xiàn):

[1]鄒思軼,嵌入式Linux設(shè)計(jì)與應(yīng)用[M].北京:清華大學(xué)出版社,2002.

[2]姚曉宇、趙晨,Linux內(nèi)核防火墻Netfilter實(shí)現(xiàn)與應(yīng)用研究[J].計(jì)算機(jī)工程,2003(5).

主站蜘蛛池模板: 国产成人成人一区二区| 黄色污网站在线观看| 91久久国产综合精品女同我| 精品人妻系列无码专区久久| 五月天福利视频| 88av在线看| 国产亚洲精品自在久久不卡| 日本www色视频| 国产成人精品亚洲77美色| 国产黄在线观看| 亚洲永久色| 精品福利一区二区免费视频| 亚洲人成影院午夜网站| 亚洲伦理一区二区| 欧美午夜网| 国产成人欧美| 国产Av无码精品色午夜| 正在播放久久| 97免费在线观看视频| 亚洲天堂久久新| 国产精品青青| 在线色国产| 亚洲一区二区三区香蕉| 91精品国产一区| 2020国产免费久久精品99| 国产亚洲高清在线精品99| 一区二区三区在线不卡免费| 亚洲色图狠狠干| 亚洲va精品中文字幕| 国产成人精品男人的天堂下载| 国产情侣一区二区三区| 乱人伦视频中文字幕在线| 广东一级毛片| 亚洲无码高清免费视频亚洲| 久草国产在线观看| 97久久免费视频| 久久国产黑丝袜视频| 国产成人精品亚洲日本对白优播| 九九免费观看全部免费视频| 国产高清自拍视频| 国产成人8x视频一区二区| 国产欧美精品一区二区| 久久精品电影| 精品国产Ⅴ无码大片在线观看81| 中文国产成人久久精品小说| 在线无码av一区二区三区| 午夜人性色福利无码视频在线观看| 极品国产在线| 国产一级做美女做受视频| www.亚洲一区二区三区| 亚洲精品欧美重口| 免费人成又黄又爽的视频网站| 亚洲经典在线中文字幕| av在线5g无码天天| 欧美日韩国产系列在线观看| 免费高清毛片| 91久久夜色精品国产网站| 国产91视频免费| 国产精品嫩草影院视频| 国产视频一区二区在线观看| 国产成人三级在线观看视频| 日韩不卡高清视频| 午夜福利视频一区| 666精品国产精品亚洲| 黄色不卡视频| 女人18毛片一级毛片在线 | 毛片免费视频| 成人免费一级片| 国产伦精品一区二区三区视频优播| 久久综合色视频| 亚洲床戏一区| 无码'专区第一页| 这里只有精品在线播放| 中文字幕2区| 欧美www在线观看| 国产精品视屏| av免费在线观看美女叉开腿| 亚洲AV电影不卡在线观看| 国产拍在线| 四虎国产在线观看| 国产网站免费| 久久香蕉国产线看精品|