Suchart.Blog –> ITupstart.com

ธันวาคม 27, 2007

Kernel 2.6.23.12 + iptables 1.4.0 (1.3.8) + L7-filter + ipp2p on Ubuntu 7.10 Server

Filed under: Debian,Linux,Ubuntu — suchart @ 7:18 pm

Update 20080105

ไม่แน่ใจว่า ถึงตอนนี้ patch-o-matic จะอัพเดต ipp2p ให้ใช้งานได้กับ iptables 1.4.0 หรือยัง แต่คุณ rokoman ได้แนะนำ patch มาให้

http://sources.gentoo.org/viewcvs.py/gentoo-x86/net-firewall/ipp2p/files/ipp2p-0.8.2-iptables-1.4.0.patch?view=markup

รู้สึกว่าจะมาจาก gentoo แต่ผมยังไม่ได้ลองนะครับ

20071228

คำเตือน Segmentation fault <== ไม่สามารถใช้ iptables 1.4.0 กับ ipp2p ได้ ถ้าต้องการใช้ ipp2p ด้วย ควรติดตั้ง iptables 1.3.8 แทน

— ขีดยาวหน่อย มันคือ ขีด 2 ขีดติดกันนะครับ wordpress มันจับมาติดกันเป็นขีดเดียวซะงั้น ถ้าขยัน เดี๋ยวผมจะกลับมาแก้ให้


Netfilter ในเคอร์เนลลีนุกซ์ จะเป็นส่วนจัดการทางด้าน packet filtering โดยมี iptables เป็น user tool ที่ใช้ในการจัดการอีกทีหนึ่ง


ปกติแล้ว
netfilter และ iptables นั้นจะทำงานในชั้นที่สูงสุดก็แค่ transport เท่านั้น แต่เนื่องจากแอพลิเคชันบางส่วน เช่น p2p นั้น จำเป็นจะต้องใช้ความสามารถในระดับชั้นที่ 7 หรือ application layer จึงจะสามารถกลั่นกรองได้


L7-filter เป็น patch ที่ช่วยใช้ netfilter และ iptables สามารถกลั่นกรองแพ็คเก็ตในระดับชั้นที่ 7 โดยทั่วๆไปได้ ในขณะที่ ipp2p จะเจาะจงเฉพาะ p2p เท่านั้น


ทั้ง
L7-filter และ ipp2p สามารถติดตั้งใช้งานได้หลายแบบ วิธีที่แสดงนี้เป็นแค่วิธีหนึ่งเท่านั้นที่ผมได้ลองติดตั้ง

1. ติดตั้งแพคเกจที่ใช้ในการคอมไพล์และสร้าง kernel image

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

2.

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

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


คำเตือน Segmentation fault <== ไม่สามารถใช้ iptables 1.4.0 กับ ipp2p ได้ ถ้าต้องการใช้ ipp2p ด้วย ควรติดตั้ง iptables 1.3.8 แทน

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

tar xvzf l7-protocols-2007-11-22.tar.gz
tar xvzf netfilter-layer7-v2.17.tar.gz
tar xvjf patch-o-matic-ng-20071226.tar.bz2
tar xvzjf iptables-1.4.0.tar.bz2
ln -s iptables-1.4.0 iptables

3. patch linux kernel & iptables with l7-filter

cd /usr/src/linux
patch -p1 < ../netfilter-layer7-v2.17/kernel-2.6.22-2.6.24-layer7-2.17.patch

cd ../iptables
patch -p1 < ../netfilter-layer7-v2.17/iptables-1.4-for-kernel-2.6.20forward-layer7-2.17.patch
chmod +x extensions/.layer7-test

4. patch linux kernel & iptables with ipp2p (patch-o-matic)

cd ../patch-o-matic-ng-20071226/
./runme –download

Hey! KERNEL_DIR is not set.

Where is your kernel source directory? [/usr/src/linux] <– Enter

Hey! IPTABLES_DIR is not set.

Where is your iptables source code directory? [/usr/src/iptables] <– Enter

./runme ipp2p

Hey! KERNEL_DIR is not set.

Where is your kernel source directory? [/usr/src/linux] <– Enter

Hey! IPTABLES_DIR is not set.

Where is your iptables source code directory? [/usr/src/iptables] <– Enter

Do you want to apply this patch [N/y/t/f/a/r/b/w/q/?] y

5. config and compile kernel

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

####### make oldconfig

make menuconfig

เลือกไปที่

Networking –> Networking options –> Network packet filtering framework (Netfilter)

–> Core netfilter configuration

เลือก <M> “layer7” match support

[*] Layer 7 debugging output

ส่วนอันอื่นที่ยังไม่ได้เลือก ก็สามารถเลือกได้ ตามต้องการ

<M> UDP-Lite protocol connection tracking support (EXPERIMENTAL)

<M> SANE protocol support (EXPERIMENTAL)

<M> “TRACE” target support (NEW)

<M> “connlimit” match support (NEW)

<M> “u32” match support

แล้ว exit ออกมา โดยกด Esc 2 ครั้งติดๆกัน แล้วไปที่ IP: Netfilter Configuration เลือก

<M> IPP2P match support

อยู่ด้านล่างสุดเลย แล้ว exit ออกมา โดยกด Esc 2 ครั้ง ไปเรื่อยๆ จนกระทั่งปรากฏหน้าจอ

Do you wish to save your new kernel configuration?

ให้กด Enter เพื่อบันทึกค่าคอนฟิก

6. คอมไพล์และสร้าง kernel image ใหม่ ขั้นตอนนี้ต้องรอนานหน่อยนะครับ

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

7. หลังจากรอคอยมานาน ต่อไปก็ติดตั้ง kernel ใหม่

cd /usr/src

dpkg -i linux-image-2.6.23.12-l7-p2p_2.6.23.12-l7-p2p-10.00.Custom_i386.deb

dpkg -i linux-headers-2.6.23.12-l7-p2p_2.6.23.12-l7-p2p-10.00.Custom_i386.deb

reboot

shutdown -r now 

8. คอมไพล์และติดตั้ง iptables

cd /usr/src/iptables
make KERNEL_DIR=/usr/src/linux
make install
mv /usr/src/l7-protocols-2007-11-22 /etc/l7-protocols

10. ทดสอบ

iptables -A FORWARD -m layer7 —l7proto bittorrent -j DROP

iptables -A FORWARD -m ipp2p –ipp2p -j DROP

Segmentation fault <== ไม่สามารถใช้ iptables 1.4.0 กับ ipp2p ได้ ซะงั้น (:

11. patch, compile and install iptables 1.3.8 แทน iptables 1.4.0 ที่มีปัญหากับ ipp2p (ไม่ต้อง patch และ compile kernel ใหม่)

cd /usr/src
wget http://iptables.org/projects/iptables/files/iptables-1.3.8.tar.bz2
tar xvjf iptables-1.3.8.tar.bz2
rm iptables
ln -s iptables-1.3.8 iptables
cd iptables
patch -p1 < ../
netfilter-layer7-v2.17/iptables-1.3-for-kernel-2.6.20forward-layer7-2.17.patch
chmod +x extensions/.layer7-test
cd ../patch-o-matic-ng-20071226
./runme –download
./runme ipp2p
cd ../iptables
make KERNEL_DIR=/usr/src/linux
make install

12. Test

iptables -A FORWARD -m layer7 —l7proto bittorrent -j DROP

iptables -A FORWARD -m ipp2p –ipp2p -j DROP

(: ขอพักก่อนนะครับ !

 

Advertisements

ธันวาคม 17, 2007

Traffic Shaping on Linux with tc , iptables and ipp2p

Filed under: Linux — suchart @ 11:14 am

Traffic Shaping on Linux Gateway with tc , iptables and ipp2p

ฝากแปะไว้ก่อนกันลืมนะครับ

modprobe ipt_ipp2p

tc qdisc del dev eth1 root <== eth1 = internal interface
tc qdisc add dev eth1 root handle 1: htb
tc class add dev eth1 parent 1: classid 1:1 htb rate 900kbit <== max dl 900 kbits

tc class add dev eth1 parent 1:1 classid 1:11 htb rate 300kbit ceil 750kbit prio 2 <== p2p dl 300-750 kbits
tc class add dev eth1 parent 1:1 classid 1:12 htb rate 300kbit ceil 750kbit prio 1 <== www dl 300-750 kbits
tc class add dev eth1 parent 1:1 classid 1:13 htb rate 100kbit ceil 150kbit prio 0 <== ssh dl 100-150 kbits

tc qdisc add dev eth1 parent 1:11 handle 11: sfq perturb 10
tc qdisc add dev eth1 parent 1:12 handle 12: sfq perturb 10
tc qdisc add dev eth1 parent 1:13 handle 13: sfq perturb 10

tc filter add dev eth1 parent 1:0 prio 2 protocol ip handle 11 fw flowid 1:11 <== handle match –set-mark
tc filter add dev eth1 parent 1:0 prio 1 protocol ip handle 12 fw flowid 1:12 <== flowid match classid
tc filter add dev eth1 parent 1:0 prio 0 protocol ip handle 13 fw flowid 1:13

iptables -A PREROUTING -t mangle -p tcp -j CONNMARK –restore-mark
iptables -A PREROUTING -t mangle -p tcp -m mark ! –mark 0 -j ACCEPT
iptables -A PREROUTING -t mangle -p tcp -m ipp2p –ipp2p -j MARK –set-mark 11 <== match and mark p2p
iptables -A PREROUTING -t mangle -p tcp -m mark –mark 1 -j CONNMARK –save-mark

iptables -A PREROUTING -t mangle -p tcp –sport 80 -j MARK –set-mark 12 <== mark http
iptables -A PREROUTING -t mangle -p tcp –sport 22 -j MARK –set-mark 13 <== mark ssh

Links

iptables Tutorial

http://ipp2p.org/documents/README

http://lartc.org/howto/lartc.qdisc.filters.html

HTB Linux queuing discipline manual – user guide

ธันวาคม 10, 2007

netstat-nat – A tool that display NAT connections

Filed under: Debian,Linux,Ubuntu — suchart @ 7:07 am

apt-get install netstat-nat

root@myubuntu:~# netstat-nat
Proto NATed Address                  Destination Address            State
tcp   192.168.100.11:1048            mail3.rootly.com:www           TIME_WAIT
tcp   192.168.100.11:1043            ded135-fbsd-174-35.netsoni:www ESTABLISHED
tcp   192.168.100.11:1046            hk-in-f164.google.com:www      ESTABLISHED
tcp   192.168.100.11:1042            ded135-fbsd-174-35.netsoni:www ESTABLISHED
tcp   192.168.100.11:1044            ded135-fbsd-174-35.netsoni:www ESTABLISHED
tcp   192.168.100.11:1047            64.233.189.99:www              ESTABLISHED
tcp   192.168.100.11:1049            mail3.rootly.com:www           TIME_WAIT
udp   192.168.100.11:1035            dns2.asianet.co.th:domain      ASSURED
udp   192.168.100.11:1045            dns2.asianet.co.th:domain      UNREPLIED
root@myubuntu:~# netstat-nat -n
Proto NATed Address                  Destination Address            State
tcp   192.168.100.11:1048            38.98.18.85:80                 TIME_WAIT
tcp   192.168.100.11:1043            66.180.174.35:80               ESTABLISHED
tcp   192.168.100.11:1046            64.233.189.164:80              TIME_WAIT
tcp   192.168.100.11:1042            66.180.174.35:80               TIME_WAIT
tcp   192.168.100.11:1044            66.180.174.35:80               ESTABLISHED
tcp   192.168.100.11:1047            64.233.189.99:80               TIME_WAIT
tcp   192.168.100.11:1049            38.98.18.85:80                 TIME_WAIT
udp   192.168.100.11:1035            203.144.207.49:53              ASSURED
udp   192.168.100.11:1045            203.144.207.49:53              UNREPLIED
root@myubuntu:~#

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/

ธันวาคม 8, 2007

apt-get ผ่าน proxy

Filed under: Debian,Linux,Ubuntu — suchart @ 4:26 pm

export http_proxy=http://myusername:mypassword@myproxy:myproxy_port

sudo apt-get update

sudo apt-get install xxx

ธันวาคม 7, 2007

HP Pavilion dv2109tx + Ubuntu 7.10

Filed under: Linux,Ubuntu — suchart @ 3:06 pm

ได้ฤกษ์ยำ Notebook HP Pavilion dv2109tx เจ้าปัญหาของผมซักที ก่อนอื่นก็ใช้ Partition magic ย่อ Windows XP partition แล้ว ลง CentOS 5.1 ตามด้วย Ubuntu 7.10 ไว้ตัวละ partition ลงได้ไม่มีปัญหาอะไร นี่กะว่าถ้า FreeBSD 7 ออกเมื่อไร จะลงมันด้วยนะนี่

Ubuntu จะสร้างเมนูของ grub มีเมนูบูตทั้งของ XP และ CentOS ให้เรียบร้อยเลย

ลองเล่น Ubuntu ยังไม่ค่อยได้ทำอะไรมากนัก แค่ลองเล่นเน็ต ดูหนัง ฟังเพลง ได้ แต่กว่าจะทำให้เสียงออกลำโพงของ Notebook ได้ก็เล่นเอาเหนื่อยเลย โดยจากการลองผิดลองผิด อยู่นาน ก็พบว่า มันอยู่ที่ตัว PCM-2 โดยไปที่เมนู system -> preferences -> sound ต้องเลือก PCM และ PCM-2 ด้วย แล้วคลิกขวาที่รูปลำโพงที่มุมขวาแล้วเลือก open volume control แล้วไที่เมนู edit -> preferences แล้วเลือกทั้ง PCM และ PCM-2 ด้วย

Ubuntu 7.10 Firefox Flash Plugin

Filed under: Linux,Ubuntu — suchart @ 1:45 pm

ผมติดตั้ง flash plugin จาก firefox มีปัญหา มันติดตั้งได้ แต่ไม่ทำงาน เลยต้องหาวิธีติดตั้งแบบ manual

1. ไปที่ http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash

2. download .tar.gz

3. tar xvzf install_flash_player_9_linux.tar.gz

4. cd install_flash_player_9_linux

5. ./flashplayer-installer

6. ตัวติดตั้งจะบอกให้เราปิดเบราเซอร์

7. กำหนดไดเรกตอรีของ firefox เป็น /usr/lib/firfox

บลอกที่ WordPress.com .