(十三)洞悉linux下的Netfilteramp;iptables:为防火墙增添功能模块【实战】
為netfilter/iptables增添新功能模塊:ipp2p
? ??一個防火墻功能模塊包含兩部分:內(nèi)核空間的ko模塊和用戶空間的so模塊。如下:
? ? 而且文件的命令都非常有講究。例如我們有個模塊名叫AAA,那么內(nèi)核中該模塊的文件名一般為ipt_AAA.c和ipt_AAA.h;對應(yīng)的用戶空間模塊叫libipt_AAA.c。今天我通過簡單的向防火墻添加ipp2p擴展功能模塊的例子,向大家展示一下相關(guān)操作和注意事項。
?
下載ipp2p源碼:http://www.ipp2p.org/
????最新版的ipp2p-0.8.2.tar.gz支持的內(nèi)核2.6.17,iptables支持1.3.1。不過這個不影響,我們稍對其源文件進行修改就可以適應(yīng)我們2.6.21平臺了。修改后的源碼從“?ipp2p-0.8.2.zip ”下載。
? ?下載后對其解壓,然后進到ipp2p目錄下。接下來有兩種方式來編譯模塊:
1、? 直接在該目錄下執(zhí)行make。(備注:該目錄下的Makefile我已經(jīng)改過了)
執(zhí)行完make后ipt_ipp2p.ko和libipt_ipp2p.so就都生成了。
chmod x ipt_ipp2p.ko
2、? 依次按下列步驟來操作:
仍然是在ipp2p-0.8.2解壓目錄里,我系統(tǒng)中如下:
然后將每個文件拷貝到對應(yīng)的目錄下:
在我機器上,內(nèi)核源碼在/usr/src/linux-2.6.21,iptables源碼在/usr/src/iptables-1.4.0目錄下。
接下來修改/usr/src/linux-2.6.21/net/ipv4/netfilter/ipt_ipp2p.c文件:
同樣修改/usr/src/iptables-1.4.0/extensions/libipt_ipp2p.c文件如下:
? ? 接換到內(nèi)核源碼目錄/usr/src/linux-2.6.21目錄下
? ? 先備份net/ipv4/netfilter/目錄下原來的Makefile文件,然后照著下面自己寫個新的Makefile。如下所示:
? ? ipt_ipp2p.ko就已經(jīng)編譯出來了,加上執(zhí)行權(quán)限后將其拷貝到/lib/modules/2.6.21目錄里。
? ? 最后編譯用戶空間的so模塊,進入到/usr/src/iptables-1.4.0:
? ? 因為我系統(tǒng)中有兩個版本的iptables 1.3.5和1.4.0,其中1.3.5的庫文件位于/lib/iptables目錄;1.4.0我將其放置在/lib/iptables-1.4.0/iptables目錄。
? ? 最后我們來使用一下ipp2p模塊,執(zhí)行iptables -m ipp2p -h應(yīng)該可以看到下列提示:? ? 加載ipp2p內(nèi)核模塊:
? ? insmod /lib/modules/2.6.21/kernel/net/ipv4/netfilter/ipt_ipp2p.ko
? ? 總結(jié),雖然方法一干凈利落,犀利快捷,可是不利于我們理解netfilter/iptables代碼的組織架構(gòu)。方法二雖然麻煩,但學(xué)的知識更多些。大家各取所需吧。
?
? ? 網(wǎng)上還流傳另外一種通過補丁包的方式來為iptables擴展功能模塊,這里我簡單提一下,因為那玩意兒更easy。一般是到ftp://ftp.netfilter.org/pub/patch-o-matic-ng/下載對應(yīng)的補丁文件,在本地將其解壓后進入補丁文件夾,一般執(zhí)行:./runme ipp2p,然后根據(jù)提示輸入一些配置路徑就OK了。它會自動幫你完成文件的拷貝,Makefile的修改,很方便。感興趣的朋友可以去試一下。
? ? 未完,待續(xù)…
轉(zhuǎn)載于:https://www.cnblogs.com/masterpanda/p/5700490.html
總結(jié)
以上是生活随笔為你收集整理的(十三)洞悉linux下的Netfilteramp;iptables:为防火墙增添功能模块【实战】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Echart在Openlayers的应用
- 下一篇: 设置 tableview 的背景颜色,总