iptables添加模組
來源:互聯網
上載者:User
[轉貼]
這個文檔很簡單,只有“準備工作”和“安裝步驟”兩部分,在這裡我要特別感謝ChinaUnix的“gouya”和“lyxmoo”,
他們給了我很大協助,也謝謝在此期間關心協助過我的朋友們。
準備工作
需要一個核心源碼,下載最新核心源碼包或者使用系統內建的RPM包均可
需要一個最新的patch-o-matic-ng,可以到官方網站下載最新的快照
http://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/
需要一個最新的iptables,可以到官方網站擷取
http://www.netfilter.org/downloads.html
安裝步驟(以CentOS-3.4為例)
1、 展開壓縮包
cd /usr/src
yum install kernel-source
wget http://www.netfilter.org/files/iptables-1.3.1.tar.bz2
wget http://ftp.iasi.roedu.net/netfilter/patch-o-matic-ng/snapshot/patch-o-matic-ng-20050307.tar.bz2
tar xjvf iptables-1.3.1.tar.bz2
tar xjvf patch-o-matic-ng-20050307.tar.bz2
2、 給netfilter打補丁
cd /usr/src/linux-2.4
make mrproper
make menuconfig,什麼都不做,直接儲存退出(見註解1)
uname -r,可得到“2.4.21-27.0.2.EL”的資訊
vi Makefile,將“EXTRAVERSION = -27.0.2.ELcustom”改為“EXTRAVERSION = -27.0.2.EL”
cd /usr/src/patch-o-matic-ng-20050307
KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme base(見註解2)
如何給iptables添加模組 (v2.2)
2 / 4
一路“y、斷行符號”,如果發現和核心源碼有衝突或者其他原因打不上,可以“n、斷行符號”,直到結束
cd /usr/src/linux-2.4
make menuconfig,確認[*] Prompt for development and/or incomplete code/drivers要選中
然後進入Networking options
再進入IP:Netfilter Configuration,會看到增加很多模組,把你想要的選中“<M>”(見註解3)
儲存、退出,至此,給netfilter打補丁工作完成
3、 編譯、並啟用netfilter模組
cd /usr/src/linux-2.4
head -n4 Makefile(見註解4)
make dep
make modules SUBDIRS=net/ipv4/netfilter
cp -f net/ipv4/netfilter/*.o /lib/modules/2.4.21-27.0.2.EL/kernel/net/ipv4/netfilter/
depmod –a
4、 編譯安裝iptables
cd /usr/src/iptables-1.3.1
export KERNEL_DIR=/usr/src/linux-2.4
export IPTABLES_DIR=/usr/src/iptables-1.3.1
make BINDIR=/sbin LIBDIR=/lib MANDIR=/usr/share/man install
ln -s /lib/iptables /usr/local/lib/iptables(可不做,由於之前的iptables-1.3.0有BUG,所以有可能要用到)
5、 測試是否成功
iptables -A FORWARD -m iprange --src-range 192.168.1.5-192.168.1.124 -j ACCEPT
iptables -A OUTPUT -m time --timestart 8:00 --timestop 18:00 -j ACCEPT
iptables -A FORWARD -m string --string "sex" -j DROP
iptables -A FORWARD -m ipp2p --edk --bit -j DROP
[root@platinum root]# iptables -nL
Chain FORWARD (policy ACCEPT)
target prot opt source destination
如何給iptables添加模組 (v2.2)
3 / 4
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 source IP range 192.168.1.5-192.168.1.124
DROP all -- 0.0.0.0/0 0.0.0.0/0 STRING match "sex"
DROP all -- 0.0.0.0/0 0.0.0.0/0 ipp2p v0.7.2 --edk --bit
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 TIME from 8:0 to 18:0 on all days
[root@platinum root]#
FAQ
Q:為什麼depmod -a,提示類似下列的話?
depmod: *** Unresolved symbols in /lib/modules/2.4.21-27.0.2.EL/kernel/net/ipv4/ah4.o
A:這裡失敗的原因是因為模組版本與當前核心版本不匹配,往往是沒有修改Makefile造成的,另一個原因就是,修改
Makefile的工作必須在make dep之前
Q:我一切都做完了,也沒出錯,為什麼我調用模組時提示iptables: No chain/target/match by that name?
A:因為您沒有在make menuconfig裡面,將[*] Prompt for development and/or incomplete code/drivers選中
或者沒有在Networking options -> IP:Netfilter Configuration裡面選中要編譯的模組
Q:為什麼我在Networking options -> IP:Netfilter Configuration裡面沒有看到補丁出來的模組選項?
A:必須在給netfilter打補丁之前,先make menuconfig後儲存退出,產生一個.config
Q:depmod -a的時候,出現很多錯誤,怎麼辦?
A:刪除掉那些模組,然後再depmod -a
Q:在編譯iptables時,有些ipv6的模組總編譯不過去,但我實際不需要ipv6的支援,應該怎麼做?
A:以random舉例,在extensions/.random-test6檔案中,可以看到一個監測資訊,屏蔽掉即可
如何給iptables添加模組 (v2.2)
4 / 4
Q:一切已經OK,但是啟動的時候,-j MASQUERADE無效,提示“iptables: No chain/target/match by that name”
A:需要執行前手動載入模組modprobe ipt_MASQUERADE
Q:為什麼modprobe ip_nat_ftp的時候出錯?
A:修改/lib/modules/2.4.21-27.0.2.EL/modules.dep,找到ip_nat_ftp,刪除含有ip_nat_core 的行,順便刪除
/lib/modules/2.4.21-27.0.2.EL/kernel/net/ipv4/netfilter/ip_nat_core.o,然後再depmod –a,發現有錯誤,
繼續刪除發生錯誤的檔案,直到depmod -a,沒有錯誤為止
Q:為什麼我make modules SUBDIRS=net/ipv4/netfilter的時候,提示我一堆錯誤?
A:第一次make menuconfig產生.config檔案之前,先執行一次make mrproper
註解:
1、為了產生.config檔案,否則以後會有問題
2、根據README,可以選擇base或者extra等參數,這裡我們只打基本包
3、IPV6的東西我沒有選,因為我不需要
4、確認資訊和uname -r的版本一致,否則編譯的模組不能被現有核心使用