Титла: iptables Публикувано от: VladSun в Nov 10, 2005, 19:29 Celeron D 1.7, RAM 384MB
uname -a Linux 2.6.10 #5 Wed Oct 26 13:01:58 GMT-2 2005 i686 unknown iptables -V iptables v1.3.2 Има една частна /24 мрежа със SNAT и една публична /24 мрежа. Прави се маркиране на пакетите по upload/download съответно за БГ/международен (т.е. 4 маркера) Също така се прави и HTB шейп по четирите канала. Макс. трафик е около 17Мбит. Преди ползвах система от правила в Iptables, които бяха последователни и се обхождаха всичките, но когато сървера се натовари даже не можех да вляза в конзолата през SSH. Поради това реших да направя дървовидна структура от правилата: 0. 2 отделни вериги за UL/DL - TRAF_IN, TRAF_OUT 1. във всяка от тези вериги се прави верига за БГ трафик (по БГ мрежи) - BG_IN, BG_OUT 2. във всяка от БГ веригите се правят две отделни вериги за разделяне на двете мрежи (публичната и частната) 3. във всяка от "мрежовите" вериги още 4 вериги за /26 мрежи 5. в получените "1/4 мрежови" вериги правя маркиране за всяко ИП ... по същия начин (1-5) за международния интернет ... по същия начин (2-5) в -t filter FORWARD веригата за разрешаване и забраняване на ИП-та Въпросът ми е дали това което правя има смисъл и предложения за по-добри решения ![]() ПС: в момента iptables -t nat -nL | iptables -nL | iptables -t mangle -nL | wc -l 1190 при пуснати около 140 ИП-та Титла: iptables Публикувано от: Uvigii в Nov 10, 2005, 22:57
и нямам никакви проблеми , през повечето време процесорчето е на 300 - 600 MHz при средно около 1 MB/s пуснати HTTP, DNS и още 2-3 услуги. Единия начин за оптимизация е да ползваш AND и OR при маркирането, при което : + ще имаш в пъти по малко правила - няма да можеш да отчиташ поотделно трафика на всеки Поздрави Титла: iptables Публикувано от: VladSun в Nov 10, 2005, 23:59 Мерси, Uvigii !
С AND/OR имаш предвид това ли?
или НЕДОКУМЕТИРАНАТА (поне при мене) опция за MARK --or-mark ? Честно казано за пръв път го виждам и много ти благодаря за насоката ![]() Четох няколко пъти МАН-а, но нещо не разбрах по отношение на --addr src/dst - по-надолу в примера използват --addrs=dst, но казват:
Тъй като и ти го споменаваш, това означава ли, че няма начин за отделно маркиране на входящи/изходящи пакети? Много ме обърква и това, че се намира в POSTROUING верига, пък казват "от/към" ![]() Ако ползвам: iptables -t mangle -A FORWARD -o ext_if -i int_if -j IPMARK --addr=src --and-mask=0xffff --or-mask=0x10000 // upload iptables -t mangle -A FORWARD -o ext_if -i int_if -j IPMARK --addr=dst --and-mask=0xffff --or-mask=0x20000 //download предполагам че ТРЯБВА да получа два различни маркера на пакетите? ПС: След известно наблюдение на сървера мога да кажа, че използването на дървовидната структура имаше ОГРОМЕН ефект ![]() Титла: iptables Публикувано от: VladSun в Nov 11, 2005, 01:14
А това някой пробвал ли го е? Титла: iptables Публикувано от: в Nov 11, 2005, 13:11 pootdelno na vseki potrebitel imam napredvid***
ina4e za in/out ako si napravi6 pootdelno iptables -t mangle -N MARK_O iptables -t mangle -N MARK_I i vatre sloji6 pravilata za markirane iptables -t mangle -A POSTROUTING -o $eth_internal -j MARK_I iptables -t mangle -A POSTROUTING -o $eth_external -j MARK_O bi trqbvalo da stane Титла: iptables Публикувано от: в Nov 11, 2005, 13:29 Btw.
I vav vsqka ot "leaf" verigite ima6 pravilo za vseki IP adres ? A za kakvo ti e vsqka BG mreja po otdelno ? Ne e li po-dobre vsi4ki BG mreji v edna veriga i tam spored adresa na polu4atelq da markira6 . Титла: iptables Публикувано от: в Nov 11, 2005, 13:37
ako markera ne e 16 bitov po dobre napravi 0x0100 i 0x0200 (ili 0x1000 i 0x2000) otdelno zabelqzah 4e HTB clasove s minor nad 9999(decimal) predizvikvat overflow na nqkoj counter ?! moje i az da sum omazal ne6to po skriptovete si no klas s minor 10000 izliza kato clas 1 a drugite si rabotqt normalno !?!? ![]() Титла: iptables Публикувано от: VladSun в Nov 11, 2005, 14:51
Точно така съм го направил ![]() Под БГ мрежите в тази точка (т.2) разбирам BG_IN, BG_OUT, получени след като са обходени БГ ИП зоните (т. 1) и чак след това се делят на публична/частна, 1/4 мрежи ит .тн.. Благодаря за предупреждението за НТВ-то. Титла: iptables Публикувано от: Uvigii в Nov 11, 2005, 19:26 Ето как изглеждат при мен нещата:
Титла: iptables Публикувано от: VladSun в Nov 11, 2005, 23:36
но мисля че след като съществува такова нещо като IPMARK използването на дървовидна структура се обезмисля (поне за маркирането) За FORWARD -j ACCEPT/DROP обаче има смисъл. Чел съм твоята статия и често пъти съм я препоръчвал ![]() Също така, след като опитам IPMARK target-a ще постна едно мнение за него - твоята система от правила също би се олекотила много. Благодаря за дейното участие в разискването, Uvigii ![]() Титла: iptables Публикувано от: Uvigii в Nov 12, 2005, 17:33 Както съм го направил има много недостатъци и утежнява (макр, че на мен не ми пречи) работата на машината.
Но има ЕДНО основно предимство: имам статиска по абсолютно всеки вазможен параметър. Титла: iptables Публикувано от: VladSun в Nov 12, 2005, 17:54 Да, и аз това се сетих ...
Ама след това реших, че от статистиката на tc ще мога да си правя статистика по IP (по-скоро по MARK) Титла: iptables Публикувано от: Uvigii в Nov 14, 2005, 10:58
Което аз лично не рабрах как да направя т.е. не разбрах как да си нулирам броячите, а да разчитам на мртг или ррд неискам. Още една много приятна идейка мога да ти дам:
Ако някой надвиши 1.5Г на ден -> спира му се локалния в кронтаб слагаш веднъж дневно да се обновяват правилата. Титла: iptables Публикувано от: VladSun в Nov 28, 2005, 03:36
Това май ни оправя проблемите със статистиките ![]() ![]() Утре ще пачвам и ще кажа за резултати ![]() ПС: Докато си играех с това делене на мрежи се зачудих, дали разработчиците от netfilter не са го направили точно така. В смисъл, като се получат поредни правила в една верига, да ги сортират и да правят двоично търсене след това за всеки пакет ... Би могло, стига парсерът да е достатъчно умен ![]() Титла: iptables Публикувано от: VladSun в Nov 30, 2005, 00:07
Е, това е лошата новина ![]() Титла: iptables Публикувано от: Uvigii в Nov 30, 2005, 07:51 Ами аз съм научил 1 -
искаш ли нещо да стане точно както го искаш .... - правиш си го сам ![]() Титла: iptables Публикувано от: VladSun в Nov 30, 2005, 15:22 Просто не ми се преоткриваше топлата вода
![]() Сега разглеждам сорса на ACCOUNT пача (както и на такива, които имат поддръжка за 2.6.х кернели) и се мъча да го направя за 2.6.х. Лошото е, че досега не съм писал нещо за линукс по-дълго от 100 реда ... камо ли да вникна в чужд код (от това по-гадно няма) Най-много да омажа нещата ![]() Титла: iptables Публикувано от: VladSun в Dec 01, 2005, 00:42 Тъй като е по темата
![]()
Това (ако защ. стена е "без памет" по отношение на публичните ИП-та, т.е. тези които нямат NAT) би трябвало да поосвободи малко ресурси. ![]() Титла: iptables Публикувано от: Uvigii в Dec 01, 2005, 13:22 Лично аз не бих го нарекъл преоткриване на топлата вода
![]() Разбира се има универсални "сметачни" системки ![]() но колкото са по универсални - толкова са по комплексирани и поддатливи на нестабилност ! колкото по-близо до реалността е решението на проблема - толкова по-добре ![]() Титла: iptables Публикувано от: VladSun в Dec 01, 2005, 23:03 е да де ама наистина много отдавна ми е писнало от решения "работи за мен, за момента" ... сменяш нещо и айде наново.
Още от първите ми крачки в програмирането (преди около 10-12 год.) бях "поучен", че нещата трябва да се правят за общия случай за да работят за всеки частен ![]() И се придържам към това правило и за момента ![]() Титла: iptables Публикувано от: mrvoland в Dec 08, 2005, 23:42 тук се очертава fan-club IPtables
![]() да внеса и моето скромно инфо ще ме извините ако повторя някой преди мен ![]() http://www.linuxguruz.com/iptables/ това е доста добър източник за идеи, готови скриптове и т.н. всеки може да си вземе готов скрипт и да го прерпави за неговите нужди Титла: iptables Публикувано от: VladSun в Dec 09, 2005, 01:03 Интересен линк, наистина
![]() Благодаря за него ![]() Но ![]() ![]() Ще се радвам, ако се включиш ![]() Титла: iptables Публикувано от: в Dec 13, 2005, 14:56 //Off
със което не съм съгласен! Всеки подход си има плюсове и минуси! Как виждаш програма на Java работеща на AVR, PIC или какъвто и да е друг микроконтролер? Или графична среда писана на асемблер? Или драйвер за серийния порт който има гласов интерфейс към потребителя и търси извънземни докато си почива ?? Ако ти ще работиш с един или 2 частни случая за какво ти е да си напишеш програма обработваща всички възможни случаи? Това ми звучи като "Нашата складова(счетоводна) програма е най-хубавата и става за всеки склад (счетоводство) защото е предвидена да работи със всички складове и всички счетоводства на света ... Както беше казал някой : KISS ![]() Титла: iptables Публикувано от: в Dec 13, 2005, 15:12 /Off
Мисля, че и двамата сме прави донякъде, но и двамата грешим в същото време ![]() ![]() ![]() ![]() Титла: iptables Публикувано от: в Dec 13, 2005, 15:16 Между другото видя ли
http://www.linux-bg.org/cgi-bin....t=11643 на мен ми звучи доста добре ![]() Само дето нямам представа как се подкарва по MARK Титла: iptables Публикувано от: в Dec 13, 2005, 15:34 //Off
И аз това казвам: Има случаи когато прог трябва да е голяма, сложна и объркана , с възможност да и се намазват нови функционалности от което тя да става още по объркана и нестабилна .. Има и случаи когато прог трябва просто да работи и нищо друго. //Off2 Въобще замислял ли си се колко % от софтуера решава човешки задачи т.е. помага на хората и колко % решава софтуерни и хардуерни проблеми ? като започниеш БИОС,Райд,ОС,Драйвери,Бейкъп,Протоколи,АнтиВирус, АнтиСпам,ФайърУол,ИДС, Анти това, Анти Онова АААААаааа...... и това само за да си изпратиш 1 писмо ... ![]() Титла: iptables Публикувано от: в Dec 13, 2005, 15:46 Да.
След като разбрах, че примера е само за клас Б а за клас Ц не ставало се отказах да го чета ![]() Но сега по твоя препоръка направих един бърз прочит. Не мисля, че в случая с ло/бг/инт ще има полза, но ще поразгледам по подробно. Титла: iptables Публикувано от: в Dec 13, 2005, 16:17 Доколкото си спомням tc-filter можеше да match-ва по няколко признака (fw, ip), така че би могло да ни свърши свърши работа, ако имаме MARK за лок/бг/инт и след това за всяко ИП по самото ИП
![]() Е, не изглежда ли хубаво: MARK лок/бг/инт (глобално) ACCOUNT (по мрежи) hashed filters htb (ip, fw) около 20 правила, повишена ефективност на хтб-то и нищо друго ![]() Титла: iptables Публикувано от: в Dec 13, 2005, 16:49
Имаш на предвид: 1. Клиентски?(dst) При което ще имаш акк за всяко клиентско ИП като цяло и няма да можеш да разграничиш ло/бг/инт освен ако не направиш отделен акк за всеки от видовете 2. БГ ?!(src) btw. Защо мислиш, че АЦЦ прави нещо различно от това да добавя по един(или повече) брояч(и) за всеки клиент ? Вярно може и да има увеличено бързодействие (което е по скоро в % отколкото в пъти).
Това би трябвало да слага във всеки филтър по 2 условия 1 за МАРК и 1 за ИП така ли ? Титла: iptables Публикувано от: VladSun в Dec 13, 2005, 17:02 Еми примерно:
Маркираме мрежите БГ, ЛОК, останалото ИНТ, съотв. UL/DL - BG_IN, BG_OUT, LOC_IN, LOC_OUT, INT_IN, INT_OUT - MARK 1,2,3,4,5,6. Във всяка -m account --aname mynetwork --aaddr 192.168.0.0/24 и получаваме accounting за всяко ИП. Производителността със сигурност ще се увеличи и то не само от самия match (1! правило), ами и в последствие при събирането на данните и обработката им - (работим с файл в /proc/sys/...., който е в паметта - доколкото разбрах от описанието на ACCOUNT). По отношение на тц-то: хрумна ми, че *може би* можеда се направи filter по MARK за parent-а за всеки отделен трафик, а в него листата да се мачват по ИП - само, че не знам дали ще сработи ![]()
Иначе, точно това имам предвид ![]() Титла: iptables Публикувано от: в Dec 13, 2005, 17:41
1.Това, че правилото е едно НЕ ОЗНАЧАВА, че ще се премине по бързо от колкото 2 други ( в общия случай)! 2.всички вериги се държат в РАМ-а така че ? btw.
това е идейно донякаде макар,че ще увеличи правилата спрямо случая с hash-a ... струва си да тестваш Титла: iptables Публикувано от: VladSun в Dec 13, 2005, 18:03 Там е работата, че с текущата НИ accounting система, като цяло има адски много правила - идеята ми е глобално да се намалят тези правила (за FORWARD разрешенията на ИП-тата няма как да стане, но за MARK има). С други думи да се премахнат *последователното* обхождане на правилата във веригите за маркиранe, а както се видя може и да се премахне и *последователното* обхождане на филтрите на тц-то.
По принцип ВСЯКА система, която се занимава с филтриране (търсене) ТРЯБВА да използва hashing (или поне сортиране) алгоритми за по-добра производителност - не е ли така? Това го има във всяка книжка за "алгоритми-структури-данни". За ACCOUNT patch-a: 1. Истината е, че броят на правилата в момента през които минаваме средно е 1/2 от всичките правила за маркиране - съгласен? ; 2. Ако преминем към системата, която ти предлагам в пред. пост, то както ти каза по-рано няма как да правим traffic accounting - ето тук използването на ACCOUNT е просто наложително (другия вариант е статистиките на тц-то); 3. на 99% съм сигурен, че ACCOUNT-patach-a е направен с hashing-алгоритъм (то дори и по индекс на масив да го правят стига). Нещо от сорта на: account_table[IP]+= lengthOf(packet); Това ние не можем да го постигнем с iptables правила; 4. по отношение на ползването на RAM-a - ок, съгласен съм ![]()
Тъй като не те разбрах много добре, ще кажа какво аз съм имал предвид: root - > parent_bg_in(mark) -> hashed filters(ip) root - > parent_bg_out(mark) -> hashed filters(ip) root - > parent_int_in(mark) -> hashed filters(ip) ....... Ние и в момента имаме това разделение (и няма начин да го махнем), но hashing алгоритъма в листат за ип-тата ще си работи пак по същия начин. ПС: За n-ти път ще ти благодаря, че участваш в дискусията ![]() ![]() ![]() ![]() Титла: iptables Публикувано от: в Dec 13, 2005, 22:27 //Off
Има проблем - има ентусиазъм. Аз като нямам проблем само си човъркам пресъхналия мозък с контра-тези ей така да открием истината в спора. Трябва някой път да обсъдим решението на задачката. ![]() Титла: iptables Публикувано от: в Dec 14, 2005, 05:42 /офф
все си мисля, че обсъждането ще протече по-гладко на маса със салатка и ракийка (все пак зима е ![]() ![]() ![]() ![]() Титла: iptables Публикувано от: VladSun в Mar 13, 2006, 16:41 |