在Debian 上编译内核2.6.26.3加入Layer7模块

系统信息:
OS
:         Debian

KERNEL:2.6.26.2

  1. root #apt-get install debhelper modutils kernel-package libncurses5-dev fakeroot   
  2. root #apt-get install gcc g++ make
注意:
因为Debian系统的内核编译跟RedHat有所不同,它在编译的时候会需要make-kpkg和fakeroot[可选]命令,因此需要安装以上的软件包才行!

第二步,下载并解开所需的源代码软件到相应的位置:

要编译内核并加入layer7模块,必须需要以下的软件的源代码:
  • linux kernel source
  • iptables source
  • l7-filter patch
  • l7-filter protocols

我选用的以上软件的版本如下:

  • kernel:2.6.26.3
  • iptables:1.4.3
  • l7-filter patch:2.2
  • l7-filter protocols:2009-05-28

同时,已经有的旧版本是

  • kernel:2.6.26.2
  • iptables:1.4.2

完整下载如下:

或者通过以下网站下载

The 2.4 or 2.6 Linux kernel source (2.6 strongly preferred) from kernel.orghttp://kernel.org/The iptables source from netfilter.orghttp://netfilter.org/Our "l7-filter kernel versionhttp://sourceforge.net/project/showfiles.php?group_id=80085" package (netfilter-layer7-vX.Y.tar.gz)Our "Protocol definitionshttp://sourceforge.net/project/showfiles.php?group_id=80085" package (l7-protocols-YYYY-MM-DD.tar.gz)


按我的习惯,将这些软件解压到:/usr/local/src/Layer7下面:

因为是编译新的内核,我习惯将编译内核的源代码放在/usr/src下面,并建一个新的目录kernels,

  1. root #cd /usr/src   
  2. root #mkdir kernels   
  3. root #cd kernels  



解开要用的软件包到 /usr/src/kernels下面:

  1. root#tar -jxvf /usr/local/src/Layer7/linux-2.6.26.3.tar.bz2    
  2. root#tar -zxvf /usr/local/src/Layer7/iptables-1.4.3.tar.gz   
  3. root#tar -zxvf /usr/local/src/Layer7/netfilter-layer7-v2.22.tar.gz   
  4. root#tar -zxvf /usr/local/src/Layer7/l7-protocols-2009-05-28.tar.gz  




第三步,将Layer7加入新的内核中并进行编译:

为了方便,做一个符号链接,并进入新内核源代码的目录:
  1. root#ln -s linux-2.6.26.3 linux   
  2. root#cd linux  



如果你要用延续使用旧版本内核中的模块中的功能,你要将/boot/config-kernel-version文件copy到当前的内核目录,并命名为.config

  1. root#cp /boot/config-2.6.26-2-amd64 ./.config  



为内核源代码打上layer7的补丁:
 
  1. root#patch -p1 < ../netfilter-layer7-v2.22/kernel-2.6.25-2.6.28-layer7-2.22.patch  

结果如下:
  1. patching file net/netfilter/Kconfigpatching    
  2. file net/netfilter/Makefilepatching    
  3. file net/netfilter/xt_layer7.cpatching    
  4. file net/netfilter/regexp/regexp.cpatching    
  5. file net/netfilter/regexp/regexp.hpatching    
  6. file net/netfilter/regexp/regmagic.hpatching file net/netfilter/regexp/regsub.cpatching    
  7. file net/netfilter/nf_conntrack_core.cpatching    
  8. file net/netfilter/nf_conntrack_standalone.cpatching    
  9. file include/net/netfilter/nf_conntrack.hpatching    
  10. file include/linux/netfilter/xt_layer7.h  



为内核选择layer7及相关的模块:
  1. root #make menuconfig  


选项如下:
  1. General setup  --->   
  2.     [*] Prompt for development and/or incomplete code/drivers Networking  --->    
  3.      Networking options  --->   
  4.           [*] Network packet filtering framework (Netfilter)  --->   
  5.                    Core Netfilter Configuration  --->   
  6.                     <M> Netfilter connection tracking support   
  7.                     -*- Connection tracking flow accounting   
  8.                     -*- Connection mark tracking support   
  9.                     [*] Connection tracking security mark support   
  10.                     [*] Connection tracking events (EXPERIMENTAL)   
  11.                     <M> SCTP protocol connection tracking support (EXPERIMENTAL)   
  12.                     <M> UDP-Lite protocol connection tracking support (EXPERIMENTAL)   
  13.                     <M> Amanda backup protocol support   
  14.                     <M> FTP protocol support   
  15.                     <M> H.323 protocol support (EXPERIMENTAL)   
  16.                     <M> IRC protocol support   
  17.                     <M> NetBIOS name service protocol support (EXPERIMENTAL)   
  18.                     <M> PPtP protocol support   
  19.                     <M> SANE protocol support (EXPERIMENTAL)   
  20.                     <M> SIP protocol support (EXPERIMENTAL)   
  21.                     <M> TFTP protocol support   
  22.                     <M> Connection tracking netlink interface (EXPERIMENTAL)   
  23.                     {M} Netfilter Xtables support (required for ip_tables)   
  24.                     <M>   "CLASSIFY" target support   
  25.                     <M>   "CONNMARK" target support   
  26.                     <M>   "DSCP" target support   
  27.                     <M>   "MARK" target support   
  28.                     <M>   "NFQUEUE" target Support   
  29.                     <M>   "NFLOG" target support   
  30.                     <M>   "NOTRACK" target support   
  31.                     <M>   "TRACE" target support   
  32.                     <M>   "TRACE" target support   
  33.                     <M>   "SECMARK" target support   
  34.                     <M>   "CONNSECMARK" target support   
  35.                     <M>   "TCPMSS" target support   
  36.                     <M>   "comment" match support   
  37.                     <M>   "connbytes" per-connection counter match support   
  38.                     <M>   "connlimit" match support"   
  39.                     <M>   "connmark" connection mark match support   
  40.                     <M>   "conntrack" connection tracking match support   
  41.                     <M>   "DCCP" protocol match support   
  42.                     <M>   "DCCP" protocol match support   
  43.                     <M>   "DSCP" match support   
  44.                     <M>   "ESP" match support   
  45.                     <M>   "helper" match support   
  46.                     <M>   "length" match support   
  47.                     <M>   "limit" match support   
  48.                     <M>   "mac" address match support   
  49.                     <M>   "mark" match support   
  50.                     <M>   IPsec "policy" match support   
  51.                     <M>   Multiple port match support   
  52.                     <M>   "physdev" match support   
  53.                     <M>   "pkttype" packet type match support   
  54.                     <M>   "quota" match support   
  55.                     <M>   "realm" match support   
  56.                     <M>   "sctp" protocol match support (EXPERIMENTAL)   
  57.                     <M>   "state" match support    
  58.                    <M>   "layer7" match support   
  59.                     [*]     Layer 7 debugging output   
  60.                     <M>   "statistic" match support   
  61.                     <M>   "string" match support   
  62.                     <M>   "tcpmss" match support    
  63.                     <M>   "time" match support   
  64.                     <M>   "u32" match support   
  65.                     <M>   "hashlimit" match support   
  66.                 IP: Netfilter Configuration  --->    
  67.                    <M> IPv4 connection tracking support (required for NAT)   
  68.                     [*]   proc/sysctl compatibility with old connection tracking (NEW   
  69.                     <M> IP Userspace queueing via NETLINK (OBSOLETE)   
  70.                     <M> IP tables support (required for filtering/masq/NAT)   
  71.                     <M>   IP range match support   
  72.                     <M>   TOS match support   
  73.                     <M>   recent match support   
  74.                     <M>   ECN match support   
  75.                     <M>   AH match support   
  76.                     <M>   TTL match support   
  77.                     <M>   Owner match support   
  78.                     <M>   address type match support   
  79.                     <M>   Packet filtering   
  80.                     <M>     REJECT target support   
  81.                     <M>   LOG target support   
  82.                     <M>   ULOG target support   
  83.                     <M>   Full NAT (NEW)   
  84.                     <M>     MASQUERADE target support   
  85.                     <M>     REDIRECT target support   
  86.                     <M>     NETMAP target support   
  87.                     <M>     SAME target support (OBSOLETE)   
  88.                     <M>     Basic SNMP-ALG support (EXPERIMENTAL)   
  89.   
  90.                     <M>   Packet mangling   
  91.                     <M>     TOS target support  

注意,刚开始时,我一直找不到:<M> "layer7" match support [*] Layer 7 debugging output 这两个模块,浪费了很多时间,后来发现是因为这两个模块是属于:<> Netfilter connection tracking support 这个模块,因此得先选择<M> Netfilter connection tracking support 这样下面才有Layer7及相关模块!
其中time模块就是可以通过iptables可以控制上网的时间等功能,就是时间控制的模块!

相关推荐