Ceci & Tati

Gentoo iptables + l7filter + connlimit със 2.6.22-gentoo-r9

от на ное..14, 2007, категории Линукс

Идеята ми е да огранича броя едновременни сесии на клиентите чрез „connlimit“, поради простата причина че заради шепа клиенти бълващи безобразно много заявки навън, останалите клиенти са ощетени. Чрез „l7filter“ и „MRTG“ смятам по-късно през web да наблюдавам трафика на различните видове протоколи, но това друг път 🙂 .

1. Инсталирате сорса на ядрото:

еmerge gentoo-sources

2. Инсталирате l7-protocols и l7-filter

#Понеже и двата пакета при мен са маркирани като нестабилни, се прави следното:
echo „net-misc/l7-filter ~x86“ >> /etc/portage/package.keywords
echo „net-misc/l7-protocols“ >> /etc/portage/package.keywords
emerge l7-protocols
emerge l7-filter

3. Изтегляте последната версия на patch-o-matic-ng и е разархивирам:

cd /tmp
wget ftp://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/
patch-o-matic-ng-20071109.tar.bz2
tar -xjf patch-o-matic-ng-20071109.tar.bz2


4. Подготовка за инсталиране на iptables:

echo „net-firewall/iptables extensions l7filter“ >> /etc/portage/package.use
ebuild /usr/portage/net-firewall/iptables/iptables-1.3.8-r1.ebuild unpack

5. Пачване на iptables и kernel-source със patch-o-matic-ng:

cd /tmp/patch-o-matic-ng-20071109
IPTABLES_DIR=/var/tmp/portage/net-firewall/iptables-1.3.8-r1/
work/iptables-1.3.8KERNEL_DIR=/usr/src/linux ./runme –download
IPTABLES_DIR=/var/tmp/portage/net-firewall/iptables-1.3.8-r1/
work/iptables-1.3.8KERNEL_DIR=/usr/src/linux ./runme connlimit

6. Подготовка и компилиране на новото ядро:

#Изтегляте този конфигурационен файл за ядрото
cd /tmp
wget http://blog.sharcom.org/docs/files/config-genkernel-x86_64-2.6.22-gentoo-r9
#компилиране и инсталиране
genkernel all –bootloader=grub –kernel-config=/tmp/config-genkernel-x86_64-2.6.22-gentoo-r9

7. Инсталиране на iptables:

ebuild /usr/portage/net-firewall/iptables/iptables-1.3.8-r1.ebuild install
ebuild /usr/portage/net-firewall/iptables/iptables-1.3.8-r1.ebuild qmerge

Малко полезни примери с „connlimit“:

#по този начин клиент с IP адрес 21.121.15.14 ще бъде ограничен до 50 едновременни конекции.
#повчрваите ми има голям ефект 🙂
iptables -A FORWARD -i ppp+ -s 21.121.15.14 -p tcp –syn -m connlimit –connlimit-above 50 -j REJECT

#или пък на цяла мрежа от клас C
IPS=255
while [ $IPS != 1 ]; do
let IPS=$IPS-1
iptables -A FORWARD -i ppp+ -s 21.121.15.$IPS -p tcp –syn -m connlimit –connlimit-above 50 -j REJECT
done

Малко полезни примери и с „l7-filter“:

#Спирате bittorrent трафика на всичко клиенти, направо отлично 🙂
iptables -t filter -A FORWARD -m layer7 –l7proto bittorrent -j DROP

#Моята цел обаче е друга, аз искам за момента да го броя.
iptables -t filter -A FORWARD -m layer7 –l7proto bittorrent -j ACCEPT
#малко по-късно
iptables -L -v -n
123M 74G ACCEPT all – * * 0.0.0.0/0 0.0.0.0/0 LAYER7 l7proto bittorrent

Ползвана литература:
http://gentoo-blog.de/
http://gentoo-wiki.com/HOWTO_Packet_Shaping


1 Comment for this entry

Вашият коментар

*
За да докажете че не сте бот, въведете този код
Anti-Spam Image

Нещто не намирате ли?

Потърси в блога ми:

Моля Ви не прекалявайте с информацията!