Suchart.Blog –> ITupstart.com

ธันวาคม 10, 2007

Kernel 2.6.23.9 + iptables 1.3.8 + L7-filter + ipp2p on Ubuntu 7.10 Server

Filed under: Linux,Ubuntu — suchart @ 12:53 am

โน้ตคำสั่งต่างๆ ที่ใช้ไว้ก่อนกันลืม

===============================================================

Update 20071223

พอดีว่า iptables 1.4.0 ออกมาแล้ว ผมได้ลองติดตั้งโดยวิธีนี้ สามารถติดตั้งได้โดยใช้

kernel 2.6.23.12

iptables 1.4.0 + netfilter-layer7-v2.17

patch-o-matic-ng-20071222 + IPP2P v0.8.1_rc1

Update 20071228

iptables 1.4.0 จะมีปัญหา ไม่สามารถใช้งานได้กับ ipp2p 

==============================================================

ในที่นี้ผมลองใช้ทั้ง L7-filter และ ipp2p ใครจะใช้อย่างใดอย่างหนึ่งก็ได้นะครับ

apt-get update
apt-get install build-essential
apt-get install kernel-package

ถ้าต้องการใช้คำสั่ง make menuconfig ติดตั้งตามคสั่งบรรทัดด้านล่าง

####################### apt-get install libncurses5-dev
ใช้คำสั่งบรรทัดด้านล่าง ถ้าต้อง kernel source ของ ubuntu (linux-source-2.6.22.tar.bz2)

###################### apt-get install kernel-source

cd /usr/src
wget http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.9.tar.bz2
tar xvjf linux-2.6.23.9.tar.bz2
ln -s linux-2.6.23.9 linux

wget http://jaist.dl.sourceforge.net/sourceforge/l7-filter/netfilter-layer7-v2.16.1.tar.gz
wget http://jaist.dl.sourceforge.net/sourceforge/l7-filter/l7-protocols-2007-11-22.tar.gz

wget http://iptables.org/projects/iptables/files/iptables-1.3.8.tar.bz2
wget ftp://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/patch-o-matic-ng-20071208.tar.bz2

tar xvzf l7-protocols-2007-11-22.tar.gz
tar xvzf netfilter-layer7-v2.16.1.tar.gz
tar xvjf patch-o-matic-ng-20071208.tar.bz2
tar xvzjf iptables-1.3.8.tar.bz2
ln -s iptables-1.3.8 iptables

cd /usr/src/linux
patch -p1 < ../netfilter-layer7-v2.16.1/kernel-2.6.22-2.6.23-layer7-2.16.1.patch

cd ../iptables
patch -p1 < ../netfilter-layer7-v2.16.1/iptables-1.3-for-kernel-2.6.20forward-layer7-2.16.1.patch
chmod +x extensions/.layer7-test

cd ../patch-o-matic-ng-20071208/
./runme –download
./runme ipp2p

cd /usr/src/linux
cp /boot/config-2.6.22-14-server ./.config
make oldconfig

เลือก m หรือ y ในหัวข้อที่เกี่ยวกับ layer 7 และ ipp2p ส่วนอันอื่นก็สามารถจะ enter ผ่านไปได้

คอมไพล์และสร้าง kernel image รอนานหน่อยนะครับ

make-kpkg clean
make-kpkg –initrd –append-to-version=-p2p kernel_image kernel_headers

cd /usr/src/iptables
make KERNEL_DIR=/usr/src/linux
make install

ต่อไปก็ติดตั้ง kernel ใหม่

cd ..
dpkg -i linux-image-2.6.23.9-p2p_2.6.23.9-p2p-10.00.Custom_i386.deb
dpkg -i linux-headers-2.6.23.9-p2p_2.6.23.9-p2p-10.00.Custom_i386.deb

cd /usr/src
tar xvzf l7-protocols-2007-11-22.tar.gz
mv /usr/src/l7-protocols-2007-11-22 /etc/l7-protocols

reboot

ลองทดสอบดู

iptables -m ipp2p –help
iptables -m layer7 –help

iptables -A FORWARD -m layer7 –l7proto bittorrent -j DROP
iptables -A FORWARD -m ipp2p –ipp2p -j DROP

root@myubuntu:/usr/src# iptables -L -n -v
Chain INPUT (policy ACCEPT 2385 packets, 153K bytes)
pkts bytes target prot opt in out source destination

Chain FORWARD (policy ACCEPT 17040 packets, 4942K bytes)
pkts bytes target prot opt in out source destination
484 36972 DROP all — * * 0.0.0.0/0 0.0.0.0/0 LAYER7 l7proto bittorrent
6 2106 DROP all — * * 0.0.0.0/0 0.0.0.0/0 ipp2p v0.8.1_rc1 –ipp2p

Chain OUTPUT (policy ACCEPT 2527 packets, 308K bytes)
pkts bytes target prot opt in out source destination

root@myubuntu:/usr/src# lsmod
Module Size Used by
ipt_MASQUERADE 4864 1
iptable_nat 8708 1
nf_nat 21036 2 ipt_MASQUERADE,iptable_nat
nf_conntrack_ipv4 19848 3 iptable_nat
xt_layer7 13700 1
nf_conntrack 67144 5 ipt_MASQUERADE,iptable_nat,nf_nat,nf_conntrack_ipv4,xt_layer7
nfnetlink 7192 3 nf_nat,nf_conntrack_ipv4,nf_conntrack
ipt_ipp2p 9600 1
iptable_filter 4224 1
ip_tables 15204 2 iptable_nat,iptable_filter
x_tables 16516 5 ipt_MASQUERADE,iptable_nat,xt_layer7,ipt_ipp2p,ip_tables

Update

ถ้า patch connlimit ด้วยจะคอมไพล์ kernel ไม่ผ่าน ใน kernel 2.6.23.9 ได้รวมไว้ใน kernel แล้ว สามารถเลือกเป็น module (m) ได้เลย แต่ว่าเท่าที่ผมได้ลอง iptables 1.3.8 จะยังไม่ support connlimit แต่ใน 1.4.0 rc1 จะสามารถใช้งานได้ แต่ไม่แน่ใจว่ามันจะมี bug ยังไงบ้างหรือเปล่า เพราะมันยังไม่ stable

root@myubuntu:/usr/src/iptables-1.3.8-ipp2p-L7# iptables -V
iptables v1.3.8
root@myubuntu:/usr/src/iptables-1.3.8-ipp2p-L7# iptables -m connlimit -h
iptables v1.3.8: Couldn’t load match `connlimit’:/usr/local/lib/iptables/libipt_connlimit.so: cannot open shared object file: No such file or directory

Try `iptables -h’ or ‘iptables –help’ for more information.
root@myubuntu:/usr/src/iptables-1.3.8-ipp2p-L7#

root@myubuntu:/usr/src/iptables# iptables -V
iptables v1.4.0rc1

root@myubuntu:/usr/src/iptables# iptables -m connlimit -h

……………………….

connlimit v1.4.0rc1 options:
[!] –connlimit-above n match if the number of existing connections is (not) above n
–connlimit-mask n group hosts using mask

Links

http://www.ipp2p.org/

http://l7-filter.sourceforge.net/

http://ubuntuforums.org/showthread.php?t=56835

http://www.kernel.org/

http://www.netfilter.org/

Advertisements

4 ความเห็น »

  1. […] um look nesse artigo aqui mano velho! Kernel 2.6.23.9 + iptables 1.3.8 + L7-filter + ipp2p on Ubuntu 7.10 Server SuChart.Blog […]

    Pingback โดย Erro ao compilar kernel 2.6.23.9 + Patch o matic + iptables 1.3.8 + layer7 - Pgina 2 - Under-Linux.org Fruns — ธันวาคม 11, 2007 @ 4:04 pm | ตอบกลับ

  2. I followed step-by-step your guide under Ubuntu 8.04 Server and always getting the following error:

    root@devlinux:/usr/src/ipp2p-0.8.2# make
    make -C /lib/modules/2.6.23.9-p2p/build SUBDIRS=/usr/src/ipp2p-0.8.2 modules
    make[1]: Entering directory `/usr/src/linux-2.6.23.9′
    CC [M] /usr/src/ipp2p-0.8.2/ipt_ipp2p.o
    /usr/src/ipp2p-0.8.2/ipt_ipp2p.c: In function ‘match’:
    /usr/src/ipp2p-0.8.2/ipt_ipp2p.c:751: error: ‘const struct sk_buff’ has no member named ‘nh’
    /usr/src/ipp2p-0.8.2/ipt_ipp2p.c: At top level:
    /usr/src/ipp2p-0.8.2/ipt_ipp2p.c:871: warning: initialization from incompatible pointer type
    /usr/src/ipp2p-0.8.2/ipt_ipp2p.c:874: warning: initialization from incompatible pointer type
    /usr/src/ipp2p-0.8.2/ipt_ipp2p.c: In function ‘init’:
    /usr/src/ipp2p-0.8.2/ipt_ipp2p.c:883: error: implicit declaration of function ‘ipt_register_match’
    /usr/src/ipp2p-0.8.2/ipt_ipp2p.c: In function ‘fini’:
    /usr/src/ipp2p-0.8.2/ipt_ipp2p.c:888: error: implicit declaration of function ‘ipt_unregister_match’
    make[2]: *** [/usr/src/ipp2p-0.8.2/ipt_ipp2p.o] Error 1
    make[1]: *** [_module_/usr/src/ipp2p-0.8.2] Error 2
    make[1]: Leaving directory `/usr/src/linux-2.6.23.9′
    make: *** [ipt_ipp2p.ko] Error 2
    root@devlinux:/usr/src/ipp2p-0.8.2

    Any help is much appreciated.

    ความเห็น โดย Stelios — กันยายน 16, 2008 @ 5:13 pm | ตอบกลับ

  3. I managed to pass this by applying the relevant patches but now stack on segmentaion fault. Any ideas?
    I’ve pasted below the strace output.

    execve(“/usr/local/sbin/iptables”, [“iptables”, “-A”, “FORWARD”, “-m”, “ipp2p”, “–ipp2p”, “-j”, “MARK”, “–set-mark”, “0x01”], [/* 18 vars */]) = 0
    brk(0) = 0x8054000
    access(“/etc/ld.so.nohwcap”, F_OK) = -1 ENOENT (No such file or directory)
    mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7fb5000
    access(“/etc/ld.so.preload”, R_OK) = -1 ENOENT (No such file or directory)
    open(“/etc/ld.so.cache”, O_RDONLY) = 3
    fstat64(3, {st_mode=S_IFREG|0644, st_size=23241, …}) = 0
    mmap2(NULL, 23241, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7faf000
    close(3) = 0
    access(“/etc/ld.so.nohwcap”, F_OK) = -1 ENOENT (No such file or directory)
    open(“/lib/tls/i686/cmov/libdl.so.2”, O_RDONLY) = 3
    read(3, “\177ELF\1\1\1\3\3\1p\n00″…, 512) = 512
    fstat64(3, {st_mode=S_IFREG|0644, st_size=9684, …}) = 0
    mmap2(NULL, 12412, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7fab000
    mmap2(0xb7fad000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1) = 0xb7fad000
    close(3) = 0
    access(“/etc/ld.so.nohwcap”, F_OK) = -1 ENOENT (No such file or directory)
    open(“/lib/tls/i686/cmov/libc.so.6”, O_RDONLY) = 3
    read(3, “\177ELF\1\1\1\3\3\1\260e\1″…, 512) = 512
    fstat64(3, {st_mode=S_IFREG|0755, st_size=1364388, …}) = 0
    mmap2(NULL, 1369712, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7e5c000
    mmap2(0xb7fa5000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x149) = 0xb7fa5000
    mmap2(0xb7fa8000, 9840, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7fa8000
    close(3) = 0
    mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7e5b000
    set_thread_area({entry_number:-1 -> 6, base_addr:0xb7e5bad0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
    mprotect(0xb7fa5000, 4096, PROT_READ) = 0
    munmap(0xb7faf000, 23241) = 0
    brk(0) = 0x8054000
    brk(0x8075000) = 0x8075000
    open(“/usr/local/lib/iptables/libipt_ipp2p.so”, O_RDONLY) = 3
    read(3, “\177ELF\1\1\1\3\3\1\300\4″…, 512) = 512
    fstat64(3, {st_mode=S_IFREG|0755, st_size=11594, …}) = 0
    mmap2(NULL, 11252, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7fb2000
    mmap2(0xb7fb4000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1) = 0xb7fb4000
    close(3) = 0
    — SIGSEGV (Segmentation fault) @ 0 (0) —
    +++ killed by SIGSEGV +++
    Process 6301 detached

    ความเห็น โดย Stelios — กันยายน 16, 2008 @ 9:49 pm | ตอบกลับ


RSS feed for comments on this post. TrackBack URI

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s

บลอกที่ WordPress.com .

%d bloggers like this: