|
|
|
СЪВЕТИ
|
iptables с layer7 и pp2p под slackware 11 new!
|
|
|
|
|
|
от Вальо(30-01-2007)
рейтинг (7)
[ добре ]
[ зле ]
Вариант за отпечатване Статията има за цел да Ви покаже едно от решенията за ограничаване на трафика генериран от peer-to-peer (p2p).Най удачния начин за това е като ползваме l7-filter и
ipp2p.
А каво е p2p (peer-to-peer):
Peer to Peer (P2P) е термин, описващ технология, която изгражда
мрежа от потребители, които свободно могат да разменят помежду
си файлове без нуждата от сървър, който да играе ролята на
посредник. Наместо един потребител да трябва да качи дадена
информация на сървър, а всички останали да я изтеглят оттам, при
P2P мрежите, трансферът се осъществява директно от хард диска
на потребителя, към всички, които са заинтересувани от този
файл. Това става с помощта на програма, наричана P2P или file
sharing (анг. споделяне на файлове) клиент. Стартирайки тази
програма на компютъра си, потребителят определя част от
съдържанието на своя хард диск като "споделено", т.е. достъпно за
всички останали, използващи съответния клиент.
Малко повече за iptables:
IPTABLES е firewall с невероятни възможности.. С него можете да филтрирате пакети или да маскирате ip адреси или портове(ip masquerade, NAT, PAT) и тн..
За да извършва филтриране на пакети или маскиране iptables се води по така наречените вериги(chains)- логически групиран списък от правила. Всяко правило от веригата е тест, на който ip хедърът се подлага.
Веригите съдържат правила започващи от едно. Можете да задавате правилата или чрез спецификация, или чрез номер.
Спецификацията на правило( rule specification ) е правилото или ( наборът от правила ), на което пакетът трябва да отговаря - тестът. Едно и също основно правило може да съществува в няколко вериги, така че аргументът верига(вижте по-долу) обикновено е задължителен. Ако целта на веригата е една от следните: ACCEPT (пропускане на пакета), DROP (отхвърляне на пакета), REJECT (отхвърляне на пакета и връщане на съобщение за грешка) или MASQUERADE (маскиране на пакета), тази цел завършва веригата, така че в тази верига няма да бъдат изпълнявани повече правила.
Що е l7-filter:
L7-филтъра е класификатор за линукския Netfilter който идентифицира пакети на база на данните от апликейшън леъра (оси модела). Той може да класифицира пакети като Kazaa, HTTP, Jabber, Citrix, Bittorrent, FTP, Gnucleus, eDonkey2000, и т.н. без значение от порта. Той Допълва съществуващи класификатори които са фиксирани по IP адреси, номер на порт и т.н.
За какво служи IPP2P и що за животно е:
Целта на IPP2P е да идентифицира peer-към-peer(p2p) данните в IP трафика. За тази цел е разширена iptables/netfilter архитектурата чрез нов сходен модул. В следствие на което IPP2P се интегрира лесно в Линукските защитни стени (Firewall) и функционалността му може да се използва чрез задаване на подходящи правила за филтриране.
Let's go...
Първото нещо което трябва да направим е да де-инсталираме iptables. Това можем да направим по следният начин:
removepkg iptables или removepkg /var/log/packages/iptables*
Следва да свалим пакетите които ще ни трябват, а те са:
kernel-source-2.4.3.33 - cd1
iptables-1.3.7 - тук
netfilter-layer7-v2.9 - тук
l7-protocols-2007-01-08 - тук
ipp2p-0.8.1_rc1 - тук
Извлечаме архивите със следните команди:
installpkg kernel-source-2.4.33.3-noarch-1.tgz
ln -s /usr/src/iptables-1.3.7 /usr/src/iptables
tar -xvzf l7-protocols-2007-01-08.tar.gz -C /usr/src/
tar -xvzf netfilter-layer7-v2.9.tar.gz -C /usr/src/
tar -xvzf ipp2p-0.8.1_rc1.tar.gz -C /usr/src/
Компилиране и пачване на ядрото:
Що е то ядрото и какво е компилиране ? Има хора, които това не е ясно, така че ще обясня тук.
Ядрото е общото между всички дистрибуции на Linux - това е нещо, което зависи от Линус Торвалдс. Вие можете да се сдобиете безплатно с него. Обикновенно го получавате в неговия изходен код (така, както са го писали Линус Торвалдс, Алан Кокс и др.), но, за да се зареди операционната система, трябва ядрото да е в машинен код. Т.е. трябва на превърнете ядрото от изходен в машинен код, който процес се нарича компилиране. Това обаче позволява да компилирате само тези тези части, които са ви нужни. Например, вие може би не се нуждаете от поддръжка на SCSI адаптери и устройства или на поддръжка на повече от 1GB RAM. Благодарение вие можете да настроите така ядрото, че то да е най-оптимизирано за вашата конфигурация.
Когато инсталирате някаква дистрибуция на Linux, вие получавате компилирано ядро, което обаче е направено така, че да поддържа почти всичко, което го прави доста неоптимизирано. Това предполага, че бихте искали да го прекомпилирате.
Конфигурираме ядрото:
cd /usr/src/linux
patch -p1
make menuconfig
След това избираме следният модул:
Networking options --->
IP: Netfilter Configuration --->
Layer 7 match support (EXPERIMENTAL) (NEW)
[*] Layer 7 debugging output (EXPERIMENTAL)
Запазваме конфигурацията на ядрото...
Компилация на ядрото и модулите, инсталиране на модулите
Проверява за зависимости
make dep
make clean
Компилира самото ядро като bzip имидж. Ще го намерите като файл bzImage в директорията 'arch/i386/boot'.
make bzImage
Компилира модулите.
make modules
Инсталира модулите
make modules_install
Знаем, че по начало lilo търси и зарежда /boot/vmlinuz. Можем да преименуваме старото ядро:
mv /boot/vmlinuz /boot/vmlinuz.old
mv /boot/System.map /boot/System.map.old
Да копираме новото:
cp arch/i386/boot/bzImage /boot/vmlinuz
cp System.map /boot/System.map
Да добавим в /etc/lilo.conf опция за зареждане на старото ядро по избор, в случай че не тръгне новото:
image=/boot/vmlinuz.old
Името на файла-ядро
label=OldLinux
Произволно наименование на ядрото
root = /dev/hda1
root-дяла на вашата Linux-инсталация
И да изпълним командата:
lilo
Инсталираме iptables-1.3.7
cd /usr/src/iptables
patch -p1
chmod 755 extensions/.layer7-test
make KERNELDIR=/usr/src/linux
make KERNELDIR=/usr/src/linux install
Копираме протокола:
cp /usr/src/l7-protocols-2007-01-08 /etc/l7-protocols
Инсталираме pp2p:
cd /usr/src/ipp2p-0.8.1_rc1
pico Makefile
кадето е реда:
IPTABLES_SRC = /usr/src/iptables-1.2.9
го заменяме по следният начин:
IPTABLES_SRC = /usr/src/linux-2.4.33.3/include/config/ip/nf
и пишем:
make
cp libipt_ipp2p.so /usr/local/lib/iptables/
insmod ipt_ipp2p.o
depmod -a
На края можем да проверим дали всичко е миналко като хората по следният начин:
iptables -m layer7 --help
iptables -m ipp2p --help
Ето и един примерен вариант за ползване:
# kbps = KByte/sek
# Ограничаване на скоростта на канала ----------------------------------------------------------------
$ipr qdisc add dev eth1 root handle 1: htb default 2
$ipr qdisc add dev eth0 root handle 1: htb default 2
$ipr class add dev eth1 parent 1: classid 1:1 htb rate 200kbps burst 250k
$ipr class add dev eth0 parent 1: classid 1:1 htb rate 100kbps burst 250k
#unclassified--------------------------------------------------------------------------------
$ipr class add dev eth1 parent 1:1 classid 1:2 htb rate 20kbps ceil 30kbps burst 1k prio 7
$ipr class add dev eth0 parent 1:1 classid 1:2 htb rate 10kbps ceil 20kbps burst 1k prio 7
$ipr qdisc add dev eth1 parent 1:2 handle 2: esfq perturb 10
$ipr qdisc add dev eth0 parent 1:2 handle 2: esfq perturb 10
#web------------------------------------------------------------------------------------------
$ipt -t mangle -A POSTROUTING -m layer7 --l7proto http -j MARK --set-mark 3
$ipr class add dev eth1 parent 1:1 classid 1:3 htb rate 150kbps ceil 200kbps burst 150k prio 2
$ipr class add dev eth0 parent 1:1 classid 1:3 htb rate 70kbps ceil 100kbps burst 150k prio 2
$ipr qdisc add dev eth1 parent 1:3 handle 3: esfq perturb 10 hash dst
$ipr qdisc add dev eth0 parent 1:3 handle 3: esfq perturb 10
$ipr filter add dev eth1 protocol ip parent 1:0 prio 1 handle 3 fw flowid 1:3
$ipr filter add dev eth0 protocol ip parent 1:0 prio 1 handle 3 fw flowid 1:3
#p2p----------------------------------------------------------------------------------------
$ipt -t mangle -A POSTROUTING -m layer7 --l7proto bittorrent -j MARK --set-mark 4
$ipt -t mangle -A POSTROUTING -m layer7 --l7proto directconnect -j MARK --set-mark 4
$ipr class add dev eth1 parent 1:1 classid 1:4 htb rate 10kbps ceil 20kbps burst 1k prio 3
$ipr class add dev eth0 parent 1:1 classid 1:4 htb rate 5kbps ceil 10kbps burst 1k prio 3
$ipr qdisc add dev eth1 parent 1:4 handle 4: esfq perturb 10
$ipr qdisc add dev eth0 parent 1:4 handle 4: esfq perturb 10
$ipr filter add dev eth1 protocol ip parent 1:0 prio 1 handle 4 fw flowid 1:4
$ipr filter add dev eth0 protocol ip parent 1:0 prio 1 handle 4 fw flowid 1:4
#ADMINxxx.xxx.xxx.gw------------------------------------------------------------------------
$ipt -t mangle -A OUTPUT -d xxx.xxx.xxx.adm1 -j MARK --set-mark 5
$ipt -t mangle -A OUTPUT -d xxx.xxx.xxx.adm2 -j MARK --set-mark 5
$ipr class add dev eth0 parent 1:1 classid 1:5 htb rate 30kbps burst 15k prio 1
$ipr qdisc add dev eth0 parent 1:5 handle 5: sfq perturb 100
$ipr filter add dev eth0 protocol ip parent 1:0 prio 1 handle 5 fw flowid 1:5
#-----------------------------------------------------------------------------
Е просто не ми е останало време за да напиша всичко и да я направя читава статията, но надявам се тоз път да сте доволни.... Първоначално статията имаше за цел да да покаже на тези които си имат поне малка представа как се работи с Гну/Линукс, но явно трябва да се пише като на първокласници...
Е надявам се този път да ви хареса.... ако ли пък не то здраве да е!
<< Инсталация и настройка на Trac и SVN | Как да компилираме Фалкон поддръжка в MySQL 5 >>
|
|
|
|
|
загуба на време, загуба на авторитет... От: Ivo Stanchev На: 9-01-2007@11:33 GMT+2 Оценка: 1/НеутраленКъм модераторите на Линукс за българи:
Такива опити за разсъждения (по никакъв начин не се доближава до статия) свалят силно нивото на сайта.
Какъв е смисълът на текста? Защо е публикуван изобщо?
Демонстрира се тотална липса на грамотност от страна на автора. Няма пояснения защо разглежданият софтуер е необходим, липсва конкретна цел. Прилича на куп драсканици съставени по липса имане какво да се прави. Това не е сериозен материал, а извадка от клубен форум.
Повече от 95% от хората, които прочетат написаното няма да разберат за какво се говори и ще си изгубят времето.
Отделно от това, "биенето" срещу p2p трафик е напълно безмислено поради все по-ефективните методи за "прикриването" му и големият на брой протоколни разновидности. Има далеч по културни начини да се ограничават потребителските сесии.
Махнете текста.
[Отговори на този коментар]
Към: загуба на време, загуба на авторитет. От: Н. Антонов <nikola< at >linux-bg __точка__ org> На: 9-01-2007@12:26 GMT+2 Оценка: 1/НеутраленОт името на модераторите отговарям, че за качеството на статиите отговарят единствено и само техните автори. Всеки е свободен да публикува статия. Нещо се бъркате, ако мислите, че има хора, които са задължени да пишат и публикуват материали тук и че имате право да търсите сметка на някого защо нещо е така, пък не е онака. Търсете сметка на тези, на които им плащате заплатите.
Освен това, обърнете внимание, че всеки има право да оцени положително или отрицателно даден материал. На мен също тази статия не ми харесва, споделям всички критики и затова я оценявам отрицателно.
[Отговори на този коментар]
Към: Към: загуба на време, загуба на автор От: Ivo Stanchev На: 9-01-2007@14:52 GMT+2 Оценка: 1/Неутрален> От името на модераторите отговарям, че за качеството на статиите отговарят единствено и само техните автори.
Това да речем че е така. Въпреки, че с това изречение твърдиш, че няма редактори/модератори тук или че това не е част от функциите им.
> Всеки е свободен да публикува статия.
Никола, всеки е свободен да напише статия или текст с каквото и да е съдържание. Ваша задача е преценката дали той трябва да се публикува. Забележи, че това не става автоматично.
> Нещо се бъркате, ако мислите, че има хора, които са задължени да пишат и публикуват материали тук.
?? Не се бъркам, нито го мисля.
> и че имате право да търсите сметка на някого защо нещо е така, пък не е онака.
Това което казваш е, че всеки може да напише каквото си иска (било то и пълна глупост) и така определилите се за модератори хора от екипа на Линукс за българи ще го публикува, само защото всеки има право да пише каквото си иска?
Нали разбираш че звучи нелогично? Или само за мен е така?
> Търсете сметка на тези, на които им плащате заплатите.
Не търся сметка на никого, а съм единствено разочарован от начинът по който се случват нещата (или не се). Не очаквайте пари за да си вършите работата, която сте започнали доброволно. Ако не ви харесва със сигурност има други българи които имат време и биха ви заместили.
> Освен това, обърнете внимание, че всеки има право да оцени положително или отрицателно даден материал. На мен също тази статия не ми харесва, споделям всички критики и затова я оценявам отрицателно.
Разбира се, както има и възможност за коментар като този. Това за което говоря е съвсем друго - да бъде изисквано поне някакво *ниво*, което да бива спазвано. Иначе се губи логика, смисъл, полезност, авторитет и прочие.
[Отговори на този коментар] Към: Към: Към: загуба на време, загуба на От: the_real_maniac На: 10-01-2007@21:52 GMT+2 Оценка: 1/НеутраленАз съм модератор тук, но само във форума и то там най-вече работата ми се свежда до спиране на flame, обиди и оправяне с новите потребители , които ги мързи и пишат глупости.
Което не е проблем - да пишат глупости, но да не си вярват чак толкова :-)
но се справям, когато имам време да гледам.
тук нямам права за статиите.
та: и аз съм очуден че е минала, но щом е минала, явно има ПОНЕ 1 дребно нещо, което трябва да се види или поне така някои е преценил. Не знам кой я я одобрил , но щом е ... трябва да има защо.
Пък и статиите си имат рейтинг, може да въведем нещо като правило
при рейгтинг от сорта на -20 и по-зле, даже -15 или дори -10, тази като гледам е на -8.
но ако гласуват само потербители на сайта и по веднъж като филтиррането става на база username.
[Отговори на този коментар]
Е, и???? От: alex_c На: 9-01-2007@12:11 GMT+2 Оценка: 1/НеутраленКато изключим факта, че си забравил да укажеш с какво пачваш в двете команди (бира или водка, няма настройки на bootloader-а и не е ясно с кое ядро си, когато изпълняваш последните команди - добре.
От друга страна, тази възможност на ядрото сама по себе си не води до нищо, ако не се използва. Много по-интересно щеше да е, ако беше дал няколко реда за самото използване с iptables, tc и т.н.
P.S. Не приемай това като заяждане - ако на мен ми трябва такава функционалност, ще си сваля от сайтовете на проекта необходимите файлове, ще прочета упътванията и ще се справя. Става въпрос за хората, които черпят готови идеи от този сайт, изпълняват дословно каквото е написано, и когато нещо не стане от първия път, веднага казват: "Ебати тъпия Линукс". Затова е хубаво преди да напишем нещо, да го проверим (както за технически, така и за правописни грешки :-))))) и чак тогава да го качваме на сайта.
Айде със здраве!
[Отговори на този коментар]
Така е! От: Pavel Stoyanov На: 11-01-2007@23:35 GMT+2 Оценка: 1/НеутраленНапълно подкрепям мнението на "Ivo Stanchev" и "alex_c"!
Нивото на статиите и коментарите на МОДЕРАТОРИТЕ без значение по какъв начин са свързани със сайта СЪЩО ТРЯБВА ДА СА НА НИВО!
А ако трябва да коментираме статията:
В много малко случаи създаването на initrd image ще успее да boot-не машината. Като пример това начина. Повечето модерен hardware - S-ATA, RAID и пр. просто няма да boot-нат....
Както и да е, да не си губя и аз повече времето с тази "статия"....
[Отговори на този коментар]
Към: Така е! От: Maxim Jordanov На: 12-01-2007@9:37 GMT+2 Оценка: 1/НеутраленИ аз съм зад Иво Станчев, Алекс_си и Павел Стоянов.
[Отговори на този коментар]
За статията ! От: Nekoi На: 25-01-2007@23:46 GMT+2 Оценка: 1/НеутраленМнението ми е, че всяка една статия е добре дошла.Човекът се е сблъскал с проблем , мислил го е , мъчил го е , борил го е и е решил да сподели решението му с нас , или поне да загатне донякъде това решение.
Би ли написал друга статия автора при тези коментари .. аз ако бях на негово място , не бих си губил времето.
Тази статия макар и не докрай изпипана дава някаква основа, но за съжаление повечето линукс потребители искат всичко да им е на готово.Колко начинаещи биха търгнали да ползват точно тази статия ? Дали би била нужна на някой който не знае какво е приложно ниво и п2п мрежа и никога не е прекомпилирал ядро ? Защо няма примери - ами трябват ли ? Няма ли предостатъчно статии обясняващи как се ползват netfilter и iproute2 ? Каква е разликата, какво толкова е новото тук - прочитате хелпа (командата на които ви е дадена в статията),ако не стане , четете и документацията.Но явно хората търсят романи - ами добре - да започне статията с това що е линукс , какво е защитна стена , как тя би се ползвала за класифициране на мрежов трафик , който по късно да се приоритизира , но какво е да се приоритизира , дали пък да не слезем още по-ниско , какво е това scheduler , как работи , хмм кода на ядрото би казал много за това.
Хора проумеите,че знанията се надграждат и ако бориш нещо понякога и едни драсканици биха ти свършили чудесна работа.
А за тези които молят да се махне статията - ами виждам, че имат време да пишат и да плюят, защо не я преработят примерно ?
[Отговори на този коментар] ми дано тоя път ви се угоди От: run-time <val_4o __@__ abv< dot >bg> На: 29-01-2007@12:59 GMT+2 Оценка: 1/Неутрален...
[Отговори на този коментар]
Към: ми дано тоя път ви се угоди От: Хиена На: 30-01-2007@19:03 GMT+2 Оценка: 1/НеутраленНа мен статията ми помогна, не знам на вас какво не ви харесва,но за мен става.
[Отговори на този коментар]
найстина е добра статията От: tremalnike <karamelmu (a) gmail< dot >com> На: 12-02-2007@18:35 GMT+2 Оценка: 1/НеутраленСтатията е добре написана и е интересна.
Отдавна не пиша във форума заради разни прехвалени линусуиди, които обожават да критикуват , да се самоизтъкват и прочие ...
Ето че нападнаха и тази рубрика с комплексите си. Ми като не ви харесва не четете ве ..... :((( И не се притесняваите за тези на които нещо не им е ясно по статията - ще питат и ще им се разясни ....
[Отговори на този коментар]
dobre e От: lilos <borislav_1_2_3< at >yahoo[ точка ]com> На: 7-02-2007@11:54 GMT+2 Оценка: 1/НеутраленАз съм нов с линукса но съм се занимавал доста с cisco рутери и ето как тази статия ми отвори очите как мога да се справя като искам да филтрирам нещо с линукс -- занимавал съм се малко и OSX но там кернела е един фаил малак чувал сам че се прекомпелира линукс кернела ама къде е и защо сега горе долу ми стана ясно аз искам да благодаря на автора на статията и който не е доволен нека да я допълни или да даде линк към doc file с допълнението
[Отговори на този коментар] Ядро 2.6.18 някои наблюдения От: beaubourg <beaubourg__at__abv< dot >bg> На: 6-03-2007@15:21 GMT+2 Оценка: 1/НеутраленКогато инсталирах ipp2p на ядро 2.6.18, за да заработи трябваше да направя следните промени:
в Мakefile
вместо
ld -shared -o libipt_ipp2p.so libipt_ipp2p.o
трябва да е
$(CC) -shared -o libipt_ipp2p.so libipt_ipp2p.o
след това
make
cp libipt_ipp2p.so /usr/local/lib/iptables/
cp ipt_ipp2p.ko /lib/modules/2.6.18/kernel/net/ipv4/netfilter
depmod -a
modprobe ipt_ipp2p
Редактиран на: 6-03-2007@15:23
[Отговори на този коментар]
Към: Ядро 2.6.18 някои наблюдения От: acec На: 27-12-2007@15:44 GMT+2 Оценка: 1/НеутраленПри ядро 2.6.18-4 и 2.6.18-5 съм тествал ipp2p модула версия 0.8.2 (последната до момента). Този модул не работи коректно между VLAN-и. Наблюдава се следния проблем: Немогат да се копират големи файлове (над 2 ГБ) между два хоста от различни VLAN-и. Копирането започва и след определено време спира.
[Отговори на този коментар]
|
|
|
|
|
|
|
|