成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

如何實現(xiàn)Linux內(nèi)核多路鏡像流量聚合和復(fù)制

這篇文章主要介紹“如何實現(xiàn)Linux內(nèi)核多路鏡像流量聚合和復(fù)制”,在日常操作中,相信很多人在如何實現(xiàn)Linux內(nèi)核多路鏡像流量聚合和復(fù)制問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何實現(xiàn)Linux內(nèi)核多路鏡像流量聚合和復(fù)制”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

創(chuàng)新互聯(lián)公司主營碑林網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,手機APP定制開發(fā),碑林h5微信小程序定制開發(fā)搭建,碑林網(wǎng)站營銷推廣歡迎碑林等地區(qū)企業(yè)咨詢

應(yīng)用場景

我們在進行安全性監(jiān)控、測試的過程中,難免會遇到這樣的問題:需要部署大量基于鏡像流量的安全設(shè)備,如IPS,異常流量,數(shù)據(jù)庫審計,流量分析等,可是交換機上可以做鏡像流量的端口數(shù)量有限制,購買專業(yè)的設(shè)備又太昂貴。

本文就針對此種情況,從Linux內(nèi)核模塊對網(wǎng)絡(luò)數(shù)據(jù)庫包進行處理,解決上述問題。這里也感謝“白金PT”給予的幫助。

架構(gòu)設(shè)計

如何實現(xiàn)Linux內(nèi)核多路鏡像流量聚合和復(fù)制

內(nèi)核模塊的流程比較簡單,轉(zhuǎn)發(fā)配置從用戶態(tài)提交給內(nèi)核模塊,如”eth2@eth3_eth2@eth4_eth2/eth5@eth6“,這段的配置是:

來自eth2的流量,復(fù)制給eth3和eth4

來自eth2和eth5的流量,聚合給eth6

MIRROR內(nèi)核模塊中,只需要實現(xiàn)參數(shù)讀取,配置分析,網(wǎng)卡判斷(源,目的)即可。

算法、代碼實現(xiàn)

參數(shù)輸入

如何實現(xiàn)Linux內(nèi)核多路鏡像流量聚合和復(fù)制

這段代碼的功能是,將前面提到的如“eth2@eth3_eth2@eth4_eth2/eth5@eth6“這樣的參數(shù),按照”_”進行拆分,分段提交給參數(shù)設(shè)置函數(shù)”option_setup”

參數(shù)設(shè)置

如何實現(xiàn)Linux內(nèi)核多路鏡像流量聚合和復(fù)制

這里我們把得到的參數(shù)”eth0@eth2”進行進一步的拆分,分出了源網(wǎng)卡eth0,目的網(wǎng)卡eth2,在內(nèi)核模塊的全局變量中,有一個結(jié)構(gòu)

”__read_mostly __u8 ethout_bits[MAX_OUT] ={0};“

用來存儲每個網(wǎng)卡對應(yīng)分發(fā)的網(wǎng)卡號,可以這樣理解,如果服務(wù)器有8個網(wǎng)卡,那么每個網(wǎng)都會有一個8位的二進制數(shù)來標明它的轉(zhuǎn)發(fā),比如eth0復(fù)制到eth2,那么ethout_bits[0]就等于01000000,以此類推,如果我要把eth0復(fù)制到其他所有網(wǎng)卡,就會是01111111。

同時用一個全局的8字節(jié)變量,來存儲哪些網(wǎng)卡是鏡像流量口,防止多余的資源浪費。

__read_mostly__u8 ifindex_bits = 0;

Skb包復(fù)制和轉(zhuǎn)發(fā)

如何實現(xiàn)Linux內(nèi)核多路鏡像流量聚合和復(fù)制

當Linux內(nèi)核收到一個skb結(jié)構(gòu)的數(shù)據(jù)包時,判斷這個數(shù)據(jù)包是不是在轉(zhuǎn)發(fā)列表里,也就是網(wǎng)卡是不是鏡像源。

如何實現(xiàn)Linux內(nèi)核多路鏡像流量聚合和復(fù)制

接著我用了一個循環(huán),來遍歷存儲的轉(zhuǎn)發(fā)目的網(wǎng)口,如果匹配的話,就使用skb_clone函數(shù)將數(shù)據(jù)包復(fù)制一份,然后通過dev_queue_xmit函數(shù)直接發(fā)送出去。

最后清理skb_buff結(jié)構(gòu)。

啟動腳本

為了方便調(diào)試和快速提交參數(shù),可以使用如下的shell腳本:

如何實現(xiàn)Linux內(nèi)核多路鏡像流量聚合和復(fù)制

實測效果

編譯,填充參數(shù)并執(zhí)行

執(zhí)行sh sh.sh

Dmesg輸出

如何實現(xiàn)Linux內(nèi)核多路鏡像流量聚合和復(fù)制

鏡像流量效果

如何實現(xiàn)Linux內(nèi)核多路鏡像流量聚合和復(fù)制

這里可以看到流量統(tǒng)計由于網(wǎng)卡速率,時間差等,并不會100%一樣,是正常的。

CPU占用

當流量已經(jīng)達到400M左右的時候,CPU占用仍然比較低。

如何實現(xiàn)Linux內(nèi)核多路鏡像流量聚合和復(fù)制

到此,關(guān)于“如何實現(xiàn)Linux內(nèi)核多路鏡像流量聚合和復(fù)制”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

文章題目:如何實現(xiàn)Linux內(nèi)核多路鏡像流量聚合和復(fù)制
網(wǎng)頁網(wǎng)址:http://jinyejixie.com/article0/pdccoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化網(wǎng)站設(shè)計、標簽優(yōu)化關(guān)鍵詞優(yōu)化、全網(wǎng)營銷推廣、品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)
荥经县| 牡丹江市| 山东| 监利县| 延长县| 桑日县| 子洲县| 岫岩| 广西| 北海市| 遂平县| 宣武区| 班玛县| 大邑县| 云林县| 崇仁县| 安康市| 保德县| 临清市| 荥经县| 行唐县| 上栗县| 永川市| 甘德县| 连山| 建德市| 紫阳县| 长汀县| 凌云县| 蓝田县| 垫江县| 开封县| 将乐县| 左权县| 枣强县| 正蓝旗| 阿合奇县| 财经| 鹤山市| 于都县| 依安县|