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| 亚洲男人在线天堂| 国产美女精品一区二区| 国产精品亚欧美一区二区三区| 亚洲精品人成网线在线| 午夜不卡视频| 午夜无码一区二区三区| 无码av免费不卡在线观看| 亚洲精品无码日韩国产不卡| 在线观看国产网址你懂的| 综合五月天网| 99久久精品国产自免费| 免费观看国产小粉嫩喷水| 色欲色欲久久综合网| 老司机午夜精品网站在线观看 | 亚洲综合激情另类专区| 免费在线色| 亚洲无码高清视频在线观看| 国产成人久久综合777777麻豆| 亚洲中文久久精品无玛| 波多野结衣视频网站| 久久精品国产精品一区二区| 久久香蕉国产线| 国产成人夜色91| 午夜激情婷婷| 精品久久人人爽人人玩人人妻| 亚洲男人天堂久久| 色综合网址| 韩国自拍偷自拍亚洲精品| 精品国产aⅴ一区二区三区| 毛片网站免费在线观看| 亚洲天堂自拍| 日韩一区二区三免费高清| 无码粉嫩虎白一线天在线观看| 在线不卡免费视频| 天天综合天天综合| 欧美另类第一页| 欧美日韩中文国产va另类| 亚洲三级色| 鲁鲁鲁爽爽爽在线视频观看| 国产欧美又粗又猛又爽老| 亚洲欧美人成人让影院| 久久女人网| 日韩欧美国产另类| 999国内精品久久免费视频| 精品国产亚洲人成在线| 99久久国产综合精品2023 | 高清国产在线| 999福利激情视频| 女高中生自慰污污网站| 熟妇无码人妻| 国产欧美在线观看视频| 中文字幕2区| 欧美亚洲欧美| 亚洲 欧美 偷自乱 图片| 无码国产伊人| 乱人伦99久久| 久久夜色精品国产嚕嚕亚洲av| 喷潮白浆直流在线播放| 毛片国产精品完整版| 日本一区二区三区精品AⅤ| 无码日韩人妻精品久久蜜桃| 亚洲AⅤ综合在线欧美一区| 97在线碰| 久久午夜夜伦鲁鲁片无码免费 | 一本一本大道香蕉久在线播放| 久久精品人人做人人爽电影蜜月 | 国产又色又爽又黄| 日韩欧美91| 日韩av无码DVD| 黄色网站不卡无码| 国产欧美又粗又猛又爽老| 极品私人尤物在线精品首页| 久久婷婷国产综合尤物精品| 精品久久久久久久久久久| 亚州AV秘 一区二区三区| 免费看黄片一区二区三区| 成人蜜桃网| 99er这里只有精品| 国产欧美视频综合二区| 精品一区二区三区水蜜桃| 97影院午夜在线观看视频|