1. 程式人生 > >iptables載入模組實踐總結

iptables載入模組實踐總結

iptables載入模組的方法:

1,首先,要編寫出使用者態的模組 .so, 這個模組把它放入iptables工具的lib中,
一般這個位置在 /lib/xtables中,如果是手動編譯而且沒有更改路徑的化,那麼一般是在
/usr/local/lib/xtables中。
當然,當你手動安裝iptables的時候,最好是能夠把要生成.so的的檔案放入到iptalbes的原始碼包的extentsion目錄下面,這樣,在編譯iptalbes的時候就會申城.so,在安裝的時候,這些.so檔案就會自動
放入相應的lib庫。

2,上面的只是和使用者態打交道,只是輸出一些資訊,而具體的功能是在核心太實現的,所以還要編寫支援使用者太的核心模組,
.ko 這個一般就是普通的編譯.ko就可以了,然後載入到核心中區即可。 注意:在編譯生成.so檔案時候,若出現有一些警告,這可能導致編譯後的.so不能用,所以,最好是能夠 注意書寫,不要出現警告。 3,這裡有意思的是,標頭檔案的位置,在一般情況下,載入一個ipt的模組 需要三個檔案,iptxxx.h iptxxx.c libiptxxx.c 其中,libiptxxx.c用來生成.so 其方法是:把libiptxxx.c放入extension。然後,在iptables的原始碼 目錄下面make 這時候,可能會出現錯誤,原因是沒有找到在libiptxxx.c中引用的標頭檔案, 那麼這個標頭檔案也就是
iptxxx.h這個,它要放入哪裡呢? 是放入使用者空間的標頭檔案目錄,即/usr/include下面,這個後面具體的路徑可以自己定義 然後是iptxxx.c用來生成.ko檔案,當然,這個放在哪裡生成都沒有關係, 因為它是核心中的,和iptables的原始碼沒有關係,我們可以隨便找個地方 ,然後寫上makefile檔案,make就可以了。 當然,在iptxxx.c中也用到了標頭檔案,那麼,需要引入,但是這個標頭檔案要放入到 核心的標頭檔案目錄,即/usr/src/kernel/$(shell uname -r)/include/ 下面,後面的路徑可以隨意定。 然後make後可以生成.ko,載入insmod即可。
可以看出,一個頭檔案既要放入核心空間,也要放入核心空間。