8.
擴(kuò)展模塊的應(yīng)用
通過前面的描述,可以看出擴(kuò)展一個(gè)匹配模塊需要做的工作。下面以擴(kuò)展匹配模塊為例,擴(kuò)展動(dòng)作模塊的操作類似,主要包括以下內(nèi)容:
用戶空間:
(1).定義一個(gè)iptables_match模塊并初始化相應(yīng)的參數(shù)值,在模塊的加載函數(shù)中調(diào)用register_match()將iptables_match模塊注冊(cè)到全局鏈表iptables_matches中;
(2).定義用戶態(tài)與內(nèi)核態(tài)共用的數(shù)據(jù)結(jié)構(gòu)ipt_XX_info,其主要用于交互數(shù)據(jù);
內(nèi)核空間:
(1).定義一個(gè)ipt_match模塊并初始化相應(yīng)的參數(shù)值,在模塊的加載函數(shù)中調(diào)用xt_register_match()將ipt_match模塊注冊(cè)到xt_af的相應(yīng)鏈表中;
當(dāng)完成前面的工作后,就需要修改程序的編譯文件及內(nèi)核配置文件,以目前我分析的內(nèi)核版本2.6為例,則需要修改如下文件:
(1).在iptables/extensions/Makefile文件的PF_EXT_SLIB中新加模塊名XX;
(2).在linux/net/ipv4/netfilter/Makefile中新加一行:obj-$(CONFIG_IP_NF_MATCH_XX) += ipt_XX.o
(3).在linux/net/ipv4/netfilter/Kconfig中新加以下行:
config IP_NF_XX
tristate "……"
depends on ……
help
…...
To compile it as a module, choose M here.
If unsure, say N.
完成以上步驟后,重新配置內(nèi)核并選取該模塊,編譯后即可使用該擴(kuò)展模塊了。
9.
總結(jié)
本文主要目的是分析netfilter/iptables實(shí)現(xiàn)機(jī)制的大框架,很多細(xì)節(jié)問題并未涉及到,希望通過此分析文檔對(duì)進(jìn)一步了解該機(jī)制提供幫助,并為使用該機(jī)制提供指導(dǎo)。由于自身水平有限,其中存在的問題望讀者諒解并不吝指正。
聯(lián)系客服