Титла: Скрипт за ограничаване на трафика Публикувано от: GuessWho в Apr 09, 2009, 16:30 След няколко теми без отговор по форумите, реших да се опитам да си направя сам скрип за ограничаване на входящата/изходящата скорост на клиентите, като идеята е едни и същи правила да въжат за всички клиенти. Порових се малко в гугъл-а попрочетох няколко статиики и всичко взе да ми изглежда много лесно .... ;D до момента в които забелязах, че нямам ограничение на upload-а.
Ето и кода: Код: #!/bin/bash Някой има ли на идея защо нямам ограничение за изходящия трафик на потребителите ? Със Slackware 12 съм, за да споделям нет-а правя следното: Код: iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE Титла: Re: Скрипт за ограничаване на трафика Публикувано от: bnight в Apr 10, 2009, 10:49 Първо мерси за изчерпателно написаното скриптче аз може да го помодифицирам малко за да сложда допълнителни скорости и тн за различни потребители но както и да е. На кратко защо нямаш правила за изходящ трафик. Ами за да си напишеш такива те трябва да са за WAN интерфейса. Тъй като по-принцип tc ограничава само upload-a за даден интерфейс. И това което ти правиш реално за да ограничаваш download-a на свойте клиенти е да лимитираш upload-a на eth0.
Титла: Re: Скрипт за ограничаване на трафика Публикувано от: GuessWho в Apr 10, 2009, 12:07 bnight, искам да ти благодаря че въобще се вкючи в темата :)
Та така де ... за да огранича download-a на клиентите ограничавам уплоад-а на eth0 към тях..... Следователно ако направим същото нещо само че на WAN интерфейса ppp0 (което и съм направил) трябва да се ограничи и уплоад-а на клиентите нали така ? Или може би, ще проявиш добра воля и ще ми покажеш нагледно каде бъркам ? :) Титла: Re: Скрипт за ограничаване на трафика Публикувано от: ivanatora в Apr 10, 2009, 17:43 За ъплоуд не можеш да използваш U32 класификатора с match ip src, защото TC-то работи след POSTROUTING-а. Т.е. за него ip src за всички пакети изходящи от WAN интерфейса ти е винаги външния адрес на същата машина.
Слагай марки на пакетите от iptables (mangle, -j MARK) и в TC-то си направи филтрите за ъплоуд по марките. Титла: Re: Скрипт за ограничаване на трафика Публикувано от: bnight в Apr 10, 2009, 20:17 Да то вярно че имаше нещо такова че самите пакети трябва да се маркират за да стане магията със уплоад-а. Иначе аз не разбирам достатъчно от tc . Но пък скриптчето ти ми реши проблема с гледането на мачове през IPtv докато другите users на мрежата теглят торенти. Мерси за което.
Титла: Re: Скрипт за ограничаване на трафика Публикувано от: GuessWho в Apr 13, 2009, 19:39 Е вече наистина започвам да се отчайвам .....
Порових се в нета и разгледах как става схемата с маркирането на пакетите .... по това което видях направих промени в скрипта но се получи "малка" аномалия.Както преди download-а се ограничава нормално но пак има някакъв странен проблем с upload-а.Ще се опитам да обесня .... задавам стойност на "up_speed" да речем 2048kbit (2Mbit), което трябва да е 256Kb/s, но максималния upload не превишава "0,2Mbit"-та. Същата стойност (0,2Mbit) се запазва до към 9500-10000Kbit-та. Следващия тест беше със стойност 10240Kbit-та, като този път upload-a ми се ограничи на ~6Mbit-та. Кажете ми какво пропускам ??? Ето и частта от сорса където слагам марките, правя класовете и закачам филтрите към марките + роот класовете (принципът на останалата част от кода е същия като в първия пост): Код: ## Syzdavame ROOT klasovete za interfeisite ... Титла: Re: Скрипт за ограничаване на трафика Публикувано от: ivanatora в Apr 13, 2009, 20:52 Маркването няма нужда да го правиш и за даунлоуда - него можеш да го класифицираш с U32.
Как тестваш ъплоуда? Титла: Re: Скрипт за ограничаване на трафика Публикувано от: GuessWho в Apr 13, 2009, 21:01 За тест ползвам ввв.спеедтест.нет... мисля че резултатите са задоволително точни ....
п.п: за тест ползвм дестинация която е ... доставчика на моя доставчик, а без шеип си изпълвам максималния даунлоуд/уплоуд на канала .... за това мисля че резултатите от теста са точни. Титла: Re: Скрипт за ограничаване на трафика Публикувано от: VladSun в Apr 14, 2009, 09:31 Забравил си да зададеш опашка:
Код
И вместо да слагаш правила и филтри за всяко ИП можеш да използваш IPMARK или IPCLASSIFY: http://www.linux-bg.org/cgi-bin/y/index.pl?page=article&id=advices&key=380752598 http://www.linux-bg.org/cgi-bin/y/index.pl?page=article&id=advices&key=386924398 Титла: Re: Скрипт за ограничаване на трафика Публикувано от: GuessWho в Apr 14, 2009, 11:06 Току що пробвах с "qdisc" ..... за сега изглежда да работи нормално, и ъплоуда и даунлоуда си се ограничават :) Благодаря на всички които ми помогнаха.
И разбира се ето и кода: Код: #!/bin/bash Знам че не е кой знае какво но поне върши работа :) Титла: Re: Скрипт за ограничаване на трафика Публикувано от: mishot в Apr 14, 2009, 17:11 ще работи ли ако интернета ми не е pppoe, a нормален LAN(статично IP)
Титла: Re: Скрипт за ограничаване на трафика Публикувано от: GuessWho в Apr 14, 2009, 17:16 Не виждам причина за да НЕ работи ! Сложи вместо ppp0 интерфейса към доставчика и тествай.
Титла: Re: Скрипт за ограничаване на трафика Публикувано от: mishot в Apr 14, 2009, 17:44 благодаря за отговора, ще тествам!
Титла: Re: Скрипт за ограничаване на трафика Публикувано от: GuessWho в Apr 14, 2009, 18:02 Кажи после какво е станало :)
Титла: Re: Скрипт за ограничаване на трафика Публикувано от: mishot в Apr 14, 2009, 18:11 теста ще е в събота
Титла: Re: Скрипт за ограничаване на трафика Публикувано от: GuessWho в Apr 14, 2009, 18:32 Успех тогава за събота :)
|