Пачване на ядрото с IPMARK, IPCLASSIFY, IPP2P и IPSET
13 юни, 2008 – 3:14 pmИзточник: Myfreesoft forum
Причината за тази статия, са статиите на VladSun Използване на IPSET, IPTABLES и IPMARK и Оптимизация на iptables и tc правила в www.linux-bg.org и по-точно за да може да се възползваме от тях. Ще си позволя направо да го цитирам:
| Цитат: |
| Най-често срещания алгоритъм за разпределяне на трафик между потребители е следния:
1. разделяне на трафика на входящ и изходящ; Освен това обикновено се налага да се прави контрол на достъпа на потребителите – чрез използването на iptables правила в PREROUTING или FORWARD веригите. |
Причината да се ползва IPMARK или IPCLASSIFY e:
- – IPMARK: маркира пакетите, като за стойността на маркера използва стойността на самото IP;
- IPMARK: приема като параметри 3 неща – IP-то по което ще маркираме и 2 параметъра за управление на получения MARK;
- IPMARK: IP-то по което ше маркираме се взима директно от пакета и в зависимост от това дали –addr параметъра е src или dst, се взима съответно src
IP-то или dst IP-то;
- IPMARK: 2-та параметъра за управление на получения MARK реализират побитово И и ИЛИ върху стойността на IP адреса;
Огромното предимство се състой в това, че не се маркира всеки пакет един по един и след това да се задават n на брой филтри в htb-то. IPCLASSIFY е разбработка на VladSun и разликата спрямо IPMARK се състой в това, че не е нужно да се задава филтър, а самият маркиран пакет знае към кой клас се отнася.
Процедурата по пачването на ядрото е както следва:
1. Сваляне на необходимите ни пакети:
2. Копираме свалените пакети в /usr/src и ги дезархивираме
3. Дезархивираме и инсталираме ipset, т.е.
| Код: |
| [debian ~]#cd /usr/src [debian src]# tar jxvf ipset-XXXXX.tar.bz2 [debian src]# cd ipset-XXXXX [debian ipset-XXXXX]# make install |
4. Сваляме сорса на ядрото, което искаме да компилираме (в моят случай 2.6.21) и го разархивираме:
| Код: |
| [gaara@debian root]$ su Password: [debian ~]# apt-get install linux-source-2.6.21 [debian ~]# cd /usr/src/ [debian src]# tar jxvf linux-source-2.6.21.tar.bz2 |
5. Копираме IPCLASSIFY в patch-o-matic-ng-20070921/patchlets/ и премахваме iptables
| Код: |
| [debian src]# cp -r IPCLASSIFY/ patch-o-matic-ng-20070921/patchlets/ [debian src]# apt-get remove iptables |
6. Поради факта, че netfilter отказва да включи IPMARK в официалната си версия, трябва да свалим и неофициалните пачове, т.е.
| Код: |
| [debian src]# cd patch-o-matic-ng [debian patch-o-matic-ng]# export KERNEL_DIR=/usr/src/linux-source-2.6.21 [debian patch-o-matic-ng]# export IPTABLES_DIR=/usr/src/iptables-1.3.8 [debian patch-o-matic-ng]# ./runme –download |
7. Прилагаме пачовете, като изпълним:
| Код: |
| [debian patch-o-matic-ng]# ./runme IPMARK [debian patch-o-matic-ng]# ./runme IPCLASSIFY [debian patch-o-matic-ng]# ./runme set [debian patch-o-matic-ng]# ./runme ipp2p |
Отговаряме с „y“ или натискаме клавиша „Enter“.
8. Задаваме на .IPCLASSIFY-test и .IPMARK-test да са изпълними, които се намират в iptables-1.3.8/extensions/
| Код: |
| [debian src]# cd iptables-1.3.8 [debian iptables-1.3.8]# chmod +x extensions/.IPMARK-test [debian iptables-1.3.8]# chmod +x extensions/.IPCLASSIFY-test |
9. Инсталираме iptables по следният начин:
| Код: |
| [debian iptables-1.3.8]# make KERNEL_DIR=/usr/src/linux-source-2.6.21 [debian iptables-1.3.8]# make install KERNEL_DIR=/usr/src/linux-source-2.6.21 |
10. Компилираме си ядрото, следвайки тази статия, като опциите, които трябва да включиме са (пътя до тях е Networking-> Networking options-> Network packet filtering framework (Netfilter)-> IP: Netfilter Configuration):
| Код: |
| <M> IPMARK target support <M> IP set support (256) Maximum number of IP sets (1024) Hash size for bindings of IP sets <M> ipmap set support <M> macipmap set support <M> portmap set support <M> iphash set support <M> nethash set support <M> ipporthash set support <M> iptree set support <M> iptreemap set support <M> set match support <M> SET target support <M> IPP2P match support <M> IPCLASSIFY target support |
Честито ново ядро с поддръжка на IPMARK, IPCLASSIFY, IPP2P и IPSET