/*** By Steve, 2008/03/12, Label Cloud Styles ***/ /*** -----------------------------------------***/

2008年7月23日 星期三

[Note] FC8 編譯 Kernel 以便支持 L7-filter

Note:
FC8 編譯 Kernel 以便支持 L7-filter

L7-filter is a classifier for Linux's Netfilter that identifies packets based on application layer data. It can classify packets as Kazaa, HTTP, Jabber, Citrix, Bittorrent, FTP, Gnucleus, eDonkey2000, etc., regardless of port. 利用支持 L7-filter 的 Kernel,搭配經過 L7-filter Patch 並重新編譯的 iptables,就可以在 iptables 的 rule 中攔截處理如 p2p, IM 等封包。

1. 準備 Build Kernel 的環境 (參考:http://logicornot.blogspot.com/2008/03/note-fc8-kernel.html)

#確認目前已經安裝了 kernel-devel 套件...
yum install kernel-devel
#安裝 "rpmdevtools"...
yum install rpmdevtool
#在 User 的根目錄下建立 rpmbuild 目錄 Trees...(Optional, 或使用 default 目錄:/usr/src)
rpmdev-setuptree
#安裝 "yum-utils"...
yum install yum-utils
#取得目前 kernel 版本的 Source Code,取得的 rpm 會存在目前目錄下...
yumdownloader --source kernel
#安裝 kernel source rpm, 注意替換正確的版本號
rpm -ivh kernel-2.6.25.11.fc8.src.rpm
2. 取得 Application Layer Packet Classifier for Linux
官網:http://l7-filter.sourceforge.net/
下載:http://sourceforge.net/project/platformdownload.php?group_id=80085 (l7-filter kernel version, Protocol definitions)
支援 (可處理) 的 Protocols:http://l7-filter.sourceforge.net/protocols
3. 安裝 L7-filter protocol definitions 以及 kernel 及 iptables 的 patch 檔
#變更目錄到 /usr/src
cd /usr/src
#解壓縮 L7-filter protocol definitions, 注意替換正確的版本號
tar -zxvf ~/l7-protocols-2008-04-23.tar.gz
#安裝 L7-filter protocol definitions
cd l7-protocols-2008-04-23
make install
#變更目錄到 /usr/src
cd /usr/src
#解壓縮 kernel 及 iptables 的 patch, 注意替換正確的版本號
tar -zxvf ~/netfilter-layer7-v2.19.tar.gz
4. Patch and Rebuild Kernel
#變更目錄到 /usr/src
cd /usr/src
#解壓縮 kernel source 到 /usr/src (注意替換正確的版本號)
#
--- 有建立 rpmbuild 時 --- :
tar -jxvf ~/rpmbuild/SOURCES/linux-2.6.25.tar.bz2
#--- 未建立 rpmbuild 時 --- :
tar -jxvf /usr/src/redhat/SOURCES/linux-2.6.25.tar.bz2
#變更目錄到 kernel source 所在目錄
cd linux-2.6.25
#patch kernel (注意替換正確的版本號)
#--- 有建立 rpmbuild 時 --- :
bzip2 -dc ~/rpmbuild/SOURCES/patch-2.6.25.11.bz2 | patch -p1
#--- 未建立 rpmbuild 時 --- :
bzip2 -dc /usr/src/redhat/SOURCES/patch-2.6.25.11.bz2 | patch -p1
#L7-filter patch kernel (注意替換正確的版本號)
patch -p1 < /usr/src/netfilter-layer7-v2.19/kernel-2.6.25-layer7-2.19.patch #Make oldconfig (記得開啟 l7-filter 的設定)
make oldconfig
#Make menuconfig (非必要,除非要改變設定值)
make menuconfig
make
make modules_install
make install
#調整開機預設 kernel
vi /boot/grub/grub.conf
5. 取得 iptables source
官網:http://netfilter.org/
下載:http://netfilter.org/projects/iptables/downloads.html
6. Patch and Rebuild iptables
#變更目錄到 /usr/src
cd /usr/src
#解壓縮 iptables source 到 /usr/src (注意替換正確的版本號)
tar -jxvf ~/iptables-1.4.1.1.tar.bz2
#變更目錄到 iptables source 所在目錄
cd iptables-1.4.1.1
#L7-filter patch (注意替換正確的版本號)
patch -p1 < /usr/src/netfilter-layer7-v2.19/iptables-1.4.1.1-for-kernel-2.6.20forward-layer7-2.19.patch #Config and Make
chmod +x ./extensions/.layer7-test
./configure --with-ksource=/usr/src/linux-2.6.25
make
make install
cp ./iptables /sbin
cp ./ip6tables /sbin

0 Comments: