Пачване на ядрото с IPMARK, IPCLASSIFY, IPP2P и IPSET

Статии свързани с компилиране на ядрото и модули към него.

Модератори: Freya, Kulu Ngile

Пачване на ядрото с IPMARK, IPCLASSIFY, IPP2P и IPSET

Мнениеот Kulu Ngile » Нед 23, Сеп, 2007 16:48

Причината за тази статия, са статиите на VladSun Използване на IPSET, IPTABLES и IPMARK и Оптимизация на iptables и tc правила в www.linux-bg.org и по-точно за да може да се възползваме от тях. Ще си позволя направо да го цитирам:

Най-често срещания алгоритъм за разпределяне на трафик между потребители е следния:

1. разделяне на трафика на входящ и изходящ;
2. разделяне на трафика на български и международен чрез подходящо маркиране на пакетите (вж. "Разпределяне на трафик от два (или повече) интернет доставчика");
3. разделяне на трафика за всеки потребител чрез повторно маркиране на пакетите за всеки вид трафик;

Освен това обикновено се налага да се прави контрол на достъпа на потребителите - чрез използването на iptables правила в PREROUTING или FORWARD веригите.
Проблемът при повечето от така реализирани алгоритми е значителното натоварване на сървъра поради ниската ефективност на набора от използваните правила в iptables и tc.
..........................................................
Малката ефективност на този метод е породена от линейното (последователното) обхождане на тези правила за всеки пакет. По този начин всеки пакет минава през около 260 правила, при това само в тези вериги! Още по-лошият вариант, при който няма разделян на изходящ/входящ трафик, броят на правилата обходени от всеки пакет е над 510!


Причината да се ползва 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
Ако съдбата е срещу теб, толкова по-зле за нея.

Изображение
APT HOWTO
Kulu Ngile
Унуфри
 
Мнения: 1233
Регистриран на: Съб 04, Мар, 2006 1:04
Местоположение: София

Назад към Компилиране и настройки на ядрото

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 1 госта

cron