亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Linux防火墻中mark模塊分析及編寫

        2013-12-31 00:00:00朱耀勤
        計算機光盤軟件與應用 2013年19期

        摘 要:本文主要分析了linux下防火墻netfilter/iptables的結構和模塊屬性,主要解決系統(tǒng)在多線負載均衡和自己開發(fā)的防火墻不能共用mark時,提供了一種擴展模塊應用。通過對netfilter/iptables程序結構的分析,期待解決Linux中防火墻系統(tǒng)在實際生活中的應用。

        關鍵詞:Netfilter/iptables結構;擴展match;Netfilter/iptables模塊

        中圖分類號:TP393.08

        在linux系統(tǒng)中為了更好的實現(xiàn)網絡流量的管理,使用了內核的mark來標識網絡流量。這樣造成了用戶層再使用mark來標記多線負載,兩種mark會互相覆蓋,達不到想要的結果。在此種情況下,通過研究發(fā)現(xiàn)可以擴展mark模塊來解決這種沖突。

        1 Iptables的結構和命令格式分析

        1.1 Iptables的結構分析

        Iptables是linux系統(tǒng)為用戶提供的一個配置防火墻的工具。它提供一個命名規(guī)則集。在linux中iptables防火墻實現(xiàn)的核心模塊是netfilter,它負責維護防火墻的規(guī)則鏈表,實現(xiàn)防火墻安全防御能力。Netfilter主要有三種功能:數(shù)據(jù)包過濾、網絡地址轉換(nat)以及數(shù)據(jù)包處理(mangle)。數(shù)據(jù)包過濾模塊的功能是過濾報文,不作任何修改,或者接受,或者拒絕。Nat是網絡地址轉換,該模塊以connection tracking模塊為基礎,僅對每個連接的第一個報文進行匹配和處理,然后交由connection tracking模塊將處理結果應用到該連接之后的所有報文。Mangle是屬于可以進行報文內容修改的ip tables,可供修改的報文內容包括mark、tos、ttl等。同時該模塊帶有用戶空間和內核交流的接口。

        1.2 Iptables命令格式分析

        一個最簡單的規(guī)則可以描述為拒絕所有轉發(fā)報文,用iptables命令表示就是:iptables -A FORWORD -j DROP。Iptables應用程序將命令行輸入轉換為程序可讀的格式,然后再調用libiptc庫提供的iptc_commit()函數(shù)向核心提交該操作請求。它根據(jù)請求設置了一個struct ipt_replace結構,用來描述規(guī)則所涉及的表和HOOK點等信息,并在其后附接當前這條規(guī)則,一個struct ipt_entry結構。組織好這些數(shù)據(jù)后,iptc_commit()調用setsockopt()系統(tǒng)調用來啟動核心處理這一請求。

        2 Netfilter的結構分析

        Netfilter是linux系統(tǒng)中的內核防火墻框架,主要進行包過濾,連接跟蹤,地址轉換的功能,是防火墻的基礎。其主要通過表、鏈實現(xiàn)。在netfilter中,每種網絡協(xié)議都有自己的一套hook函數(shù)。數(shù)據(jù)報經過協(xié)議棧的幾個關鍵點時調用hook函數(shù),hook函數(shù)標號和協(xié)議棧數(shù)據(jù)報作為參數(shù),傳遞給netfilter框架。其主要框架如圖1所示:

        3 Netfilter和 Iptables相關模塊屬性分析

        3.1 與netfilter有關的結構

        Netfilter一個重大修正思想就是將netfilter作為一個協(xié)議無關的框架,表現(xiàn)在內核結構樹中單獨建立net/netfilter目錄,在net/netfilter下的匹配和目標模塊文件名稱以“xt_”開頭。

        為了和iptables兼容,這些文件中增加了一個新的宏定義:module_alias,來表示模塊的別名。所有擴展程序的名稱也是以xt開頭。

        Netfilter擴展的程序框架:

        Xt_kzmark.c:

        Static unsigned int kzmark_tg(struct sk_buff *skb, const struct xt_action_param *par)

        Static int kzmark_tg_check(const struct xt_tgchk_param *par)

        Static void kzmark_tg_destroy(const struct xt_tgdtor_param *par)

        Static boool kzmark_mt(const struct sk_buff *skb, struct xt_action_param *par)

        Static int kzmark_mt_check(const struct xt_mtchk_param *par)

        Static void kzmark_mt_destroy(const struct xt_mtdtor_param *par)

        Static struct xt_target kzmark_tg_reg __read_mostly = {}

        Static struct xt_match kzmark_mt_reg __read_mostly = {}

        Static int __init kzmark_mt_init(void)

        {Int ret;

        Need_ipv4_conntrack();

        Ret = xt_register_target(kzmark_tg_reg);

        Ret = xt_register_match(kzmark_mt_reg);}

        Static void_exit kzmark_mt_exit(void)

        {Xt_unregister_match(kzmark_mt_reg);

        Xt_unregister_target(kzmark_tg_reg);}

        Module_init(kzmark_mt_init);

        Module_exit(kzmark_mt_exit);

        3.2 與Iptables有關的擴展

        Iptables是一個用戶可自行配置狀態(tài)防火墻的應用程序,其實現(xiàn)由extension來完成,其機制類似于插件,可以有效的擴展iptables功能。Iptables是由模塊化集成的,它所有的功能都在模塊中實現(xiàn)。如一個很簡單的配置項:-m state,-m是一個match,而state是match的一個模塊,對于-m這個match,其它可選的模塊許多。在iptables結構中,模塊和模塊名稱是相關的。此次擴展的iptables代碼libxt_kzmark.c,libxt_KZMARK.c要放入extension文件夾中。

        匹配模塊的程序框架:

        Libxt_kzmark.c:

        Static const struct option kzmark_opts[] = {};

        Static void parse_range(const char *arg, struct xt_kzmark_mtinfo *si)

        Static int kzmark_parse(int c, char **argv, int invert, unsigned int *flags, const void *entry, struct xt_entry_match **match)

        Static void kzmark_print(const void *ip, const struct xt_entry_match *match, int numeric)

        Static void kzmark_save(const void *ip, const struct xt_entry_match *match)

        Static struct xtables_match kzmark_match = {//Todo something};

        Void _init(void)

        {Xtables_register_match(kzmark_match);}

        4 程序使用及效果

        Kzmark的使用:

        Iptables -A INPUT -d 192.168.1.11/32 -m kzmark -j DROP

        KZMARK的使用:

        Iptables -A INPUT -d 192.168.1.11/32 -j KZMARK --set-mark 3000

        通過對以上模塊的測試,使用效果良好。Netfilter/iptables可以很好地擴展新的匹配模塊,但需要使用者按照一定的方式編寫程序,使其注意力集中在功能的具體實現(xiàn)上,而不再考慮其他因素。在具體程序的實現(xiàn)上以現(xiàn)成的匹配模塊為基礎進行修改,不需要了解內部結構的定義就可以完成編碼,因此netfilter/iptables是一個程序模塊化實現(xiàn)很好的實例,可以推廣應用。

        參考文獻:

        [1]季剛,姚艷.Linux下基于Netfilter/iptables防火墻的構建[J].電腦知識與技術,2011.

        [2]劉建峰,潘軍,李祥和.Linux防火墻內核中Netfilter和Iptables的分析[J].微計算機信息,2006.

        [3]http://blog.csdn.net/wuruixn/article/details/7957368.

        [4]曹成,周健,黃方劍,錢田芬.Netfilter框架下防火墻模型總體結構設計[J].計算機應用,2007.

        作者簡介:朱耀勤(1978-),女,講師,研究方向:計算機應用技術。

        作者單位:青島黃海管理學院,山東青島 266427

        基金項目:本文系2011年山東省教育科學規(guī)劃領導小組組織的“基于民辦高職教育教學模式現(xiàn)代化研究”的階段性研究成果。(項目編號:2011GG362,項目主持人:朱耀勤)。

        欧美成人精品福利在线视频| 精品少妇无码av无码专区| 午夜亚洲www湿好爽| 久久综合亚洲色社区| 伊人久久大香线蕉综合av| 综合色免费在线精品视频| 性裸交a片一区二区三区| 成年视频国产免费观看| 亚洲午夜久久久精品国产| 人妖一区二区三区在线| 精品伊人久久大香线蕉综合| 激情内射亚洲一区二区三区爱妻| 曰本亚洲欧洲色a在线| 草逼视频污的网站免费| 美女露内裤扒开腿让男人桶无遮挡| 久久欧美与黑人双交男男| 午夜无码无遮挡在线视频| 情av一区二区三区在线观看| 无码aⅴ精品一区二区三区浪潮| 亚洲av无码一区二区三区性色| 亚洲精品日本| 粉嫩的极品女神尤物在线| 中文字幕人妻第一区| 亚洲国际无码中文字幕| 男女上床视频在线观看| 亚洲av成人av三上悠亚| 亚洲日韩av无码| 国产精品主播视频| 成人综合激情自拍视频在线观看 | 伊人久久五月丁香综合中文亚洲| 中文乱码字幕高清在线观看| 东京热加勒比国产精品| 免费国产a国产片高清网站 | 国产精品成人午夜久久| 91九色精品日韩内射无| 久久久久亚洲av成人片| 无码专区久久综合久中文字幕| 漂亮的小少妇诱惑内射系列| 国产麻豆久久av入口| 精品国产午夜理论片不卡| 丝袜欧美视频首页在线|