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
февруари 28th, 2008 on 6:34 pm
Искам да отбележа, че в >=kernel-2.6.23 и в >=iptables-1.4.0 connlimit най-после е вграден и не трябва с patch-o-matic-ng да ги пачвате.