shyrikos
Маглыshyrikos's Achievements
Пролетал Мимо (1/9)
0
Репутація
-
Приоритезация.Выбор подходящего шейпинга,cbq.init
тема ответил в shyrikos пользователя shyrikos в Питання по Stargazer
Как это не должно - должно да еще как )) см. соседнюю ветку файлы надо как минимум кидать не туда ))) а в /etc/sysconfig/cbq/ ну я туда их и кидаю.а толку не какого!не пашет нечего... вторая задача работает,там где просто на htb написанно,но весь трафик идет через 99 и 25, а остальные правила не работают! -
Следующая задача: имеется асинхронное соединение с Интернетом со скоростью 4000 kbit\s - входящая, и 128+128+128 kbit\s - исходящая(3 турбо модема). Сервер: suse 10.3(в планах gentoo). поднят NAT и благополучно работает. Распределение нагрузки между 3 модемами. Требуется: 1)порезать скорость исходящую(с точки зрения пользователя) до "не более 64 kbit\s" , и входящую (с точки зрения пользователя) "не более 512 kbit\s" 2)сделать динамическое распределение пропускной способности канала. Тобищь распределить по классам трафик и установить разные приоритеты. 3)поставить все это в автозапуск. Пока что мои наработки по решению задач и сразу вопросы: 1)Ни как ни могу определиться, что использовать для первой задачи CBQ.init или HTB.init - google находит примеры 5 летней давности. что лучше CBQ.init или HTB.init? по CBQ.init гугл дал больще результата: #................................---------..............192.1 68.1.0 ... #ВНЕШНИЙ КАНАЛ ----- eth1-| linux |-eth0------[локальная сеть] #................................---------................... ...... ... #трафик к клиенту поднимаем на eth0 смотрящей в сеть #cbq-512.client-out DEVICE=eth0,10Mbit,1Mbit RATE=512Kbit WEIGHT=50Kbit PRIO=5 RULE=192.168.1.0/24 # трафик от клиента привязываем к интерфейсу eth1 смотрящей # на следующий комп на котором стоят исходящие турбо-модемы. # предполагаю так делать, чтобы не гонять трафик за зря с одного # компа шлюза на другой с большой скоростью. #cbq-64.client-in DEVICE=eth1,10Mbit,1Mbit RATE=64Kbit WEIGHT=5Kbit PRIO=5 RULE=192.168.1.0/24, Из-за того что правило на eth1 после Nat-a, проблем быть не должно? файлы cbq-512.client-out и cbq-64.client-in просто кидаем в папку с CBQ.init и все? 2)скорость, однако порезали, но с таким каналом исходящим далеко не уйдешь... нужно трафик разбить на классы. Разбивать на классы трафик я буду непосредственно на каждом модеме находящемся на втором компе шлюза .Напомню, что весь трафик пришедший с первого компа шлюза(тот который мы резали в пункте 1) распределен равномерно между всеми модемами. Скрипты будут абсолютно идентичные кроме номера интерфейсов,через которые работают модемы. Опять же стает вопрос HTB или CBQ? склоняюсь к htb, так как он проще. И на ядре 2.6 не нужно не каких патчей, да? что меньше жрет ресурсов не знаю... Решение задачи не раз приводилось в интернете. я нашел вот такой вариант, пока что даже не пробовал но вроде все ясно: #!/bin/sh IPTABLES=/sbin/iptables TC=/sbin/tc DEV_IN=eth0 RATE_IN=360 case "$1" in start) ########################## IN ############################# $TC qdisc add dev $DEV_IN root handle 1:0 htb default 99 $TC class add dev $DEV_IN parent 1:0 classid 1:1 htb rate ${RATE_IN}kbit ceil ${RATE_IN}kbit $TC class add dev $DEV_IN parent 1:1 classid 1:10 htb rate $[$RATE_IN/8]kbit ceil ${$RATE_IN/2}kbit prio 0 $TC class add dev $DEV_IN parent 1:1 classid 1:25 htb rate $[$RATE_IN/8]kbit ceil ${$RATE_IN/2}kbit prio 1 $TC class add dev $DEV_IN parent 1:1 classid 1:50 htb rate $[$RATE_IN/4]kbit ceil ${RATE_IN}kbit prio 2 $TC class add dev $DEV_IN parent 1:1 classid 1:75 htb rate $[$RATE_IN/4]kbit ceil ${RATE_IN}kbit prio 3 $TC class add dev $DEV_IN parent 1:1 classid 1:99 htb rate $[$RATE_IN/4]kbit ceil ${RATE_IN}kbit prio 4 $TC qdisc add dev $DEV_IN parent 1:10 handle 10: pfifo limit 5 $TC qdisc add dev $DEV_IN parent 1:25 handle 25: sfq perturb 10 $TC qdisc add dev $DEV_IN parent 1:50 handle 50: sfq perturb 10 $TC qdisc add dev $DEV_IN parent 1:75 handle 75: sfq perturb 10 $TC qdisc add dev $DEV_IN parent 1:99 handle 99: sfq perturb 10 #### Маркировка пакетов # добавить цепочку MYSHAPER-IN в таблицу mangle - сейчас мы настроим таблицу,которую будем # использовать для фильтрациии установки fwmark iptables -t mangle -N MYSHAPER-IN iptables -t mangle -I POSTROUTING -o $DEV_IN -j MYSHAPER-IN # маркируем пакеты с помощью fwmark - устанавливаем значения 10-99 в зависимости от # нужного класса. Высший приоритет - 10. # Низкоприоритетный трафик iptables -t mangle -A MYSHAPER-IN -p tcp --sport 0:1024 -j MARK --set-mark 99 iptables -t mangle -A MYSHAPER-IN -p tcp --dport 0:1024 -j MARK --set-mark 99 # интернет-пейджер aol iptables -t mangle -A MYSHAPER-IN -p tcp --sport 5190 -j MARK --set-mark 75 # irc iptables -t mangle -A MYSHAPER-IN -p tcp --sport 6667 -j MARK --set-mark 75 iptables -t mangle -A MYSHAPER-IN -p tcp --sport 9944 -j MARK --set-mark 75 # ICMP (ping) - высокий приоритет, # будем удивлять друзей iptables -t mangle -A MYSHAPER-IN -p icmp -j MARK --set-mark 25 # распознавание имен DNS (маленькие пакеты) iptables -t mangle -A MYSHAPER-IN -p udp -j MARK --set-mark 25 # secure shell iptables -t mangle -A MYSHAPER-IN -p tcp --dport 22 -j MARK --set-mark 10 iptables -t mangle -A MYSHAPER-IN -p tcp --sport 22 -j MARK --set-mark 10 # telnet (ew...) iptables -t mangle -A MYSHAPER-IN -p tcp --dport 23 -j MARK --set-mark 25 iptables -t mangle -A MYSHAPER-IN -p tcp --sport 23 -j MARK --set-mark 25 # маленькие пакеты, скорее всего ACK-пакеты iptables -t mangle -A MYSHAPER-IN -p tcp -m length --length :64 -j MARK --set-mark 25 #тут ускрил кого нибудь в офисе iptables -t mangle -A MYSHAPER-IN -d 192.168.1.7 -j MARK --set-mark 10 # избыточно - смаркировать все неотмаркированые пакеты как 99 (низкий проиритет) iptables -t mangle -A MYSHAPER-IN -m mark --mark 0 -j MARK --set-mark 99 $TC filter add dev $DEV_IN parent 1:0 prio 0 protocol ip handle 10 fw flowid 1:10 $TC filter add dev $DEV_IN parent 1:0 prio 1 protocol ip handle 25 fw flowid 1:25 $TC filter add dev $DEV_IN parent 1:0 prio 2 protocol ip handle 50 fw flowid 1:50 $TC filter add dev $DEV_IN parent 1:0 prio 3 protocol ip handle 75 fw flowid 1:75 $TC filter add dev $DEV_IN parent 1:0 prio 4 protocol ip handle 99 fw flowid 1:99 echo "Shaper on $DEV_IN started ($RATE_IN kbit/s)" ;; stop) tc qdisc del dev $DEV_IN root 2> /dev/null > /dev/null tc qdisc del dev $DEV_OUT root 2> /dev/null > /dev/null iptables -t mangle -D POSTROUTING -o $DEV_OUT -j MYSHAPER-OUT 2> /dev/null > /dev/null iptables -t mangle -F MYSHAPER-OUT 2> /dev/null > /dev/null iptables -t mangle -X MYSHAPER-OUT 2> /dev/null > /dev/null iptables -t mangle -D POSTROUTING -o $DEV_IN -j MYSHAPER-IN 2> /dev/null > /dev/null iptables -t mangle -F MYSHAPER-IN 2> /dev/null > /dev/null iptables -t mangle -X MYSHAPER-IN 2> /dev/null > /dev/null echo "Shaper removed" ;; restart) $0 stop $0 start ;; status) echo "[qdisc IN]" $TC -s qdisc show dev $DEV_IN echo "[class IN]" $TC -s class show dev $DEV_IN echo "[filter IN]" $TC -s filter show dev $DEV_IN ;; *) echo "Usage: $0 {start|stop|restart|status}" ;; esac exit 0 Вот, и так на каждый модем. 3) Возникает вопрос куда положить скрипт из 2-го пункта?как запускать автоматом 1 пункт и второй?
-
Должно наверное всетаки быть: #интерфейс смотрящий в сеть.режем скорость сразу на входе. DEV=eth1 RATEUP=360 RATEDN=3800 # Ограничиваем трафик приходящий от пользователя # создаем корневую дисциплинну: tc qdisc add dev $DEV root handle 1: cbq avpkt 1000 bandwidth 360kbit #Созадаем дочерний класс tc class add dev $DEV parent 1: classid 1:1 cbq rate 64kbit \ allot 1500 prio 0 bounded isolated # направляем траффик в дочерний класс tc filter add dev $DEV parent 1: protocol ip prio 0 u32 \ match ip dst 192.168.0.0/16 flowid 1:1 Наверное как то так...получается скорость от клиентов сетей 192.168.0.0/16 сразу режется на входящем интерфейсе шлюза.
-
ну скажите кто нибудь правильно или нет?!
-
Вот написал скрипт ограничение трафика приходящего от каждого пользователя из сети.Кто подскажет,будет ли он работать? И как его вообще поставить в автоматическую загрузку? #интерфейс смотрящий в сеть.режем скорость сразу на входе. DEV=eth1 RATEUP=360 RATEDN=3800 # Ограничиваем трафик приходящий от пользователя tc qdisc add dev $DEV root handle 1: cbq avpkt 1000 bandwidth 360kbit tc class add dev $DEV parent 1: classid 1:1 cbq rate 64kbit \ allot 1500 prio 5 bounded isolated tc filter add dev $DEV parent 1: protocol ip prio 10 u32 \ match ip dst 192.168.0.0/16 flowid 1:1 iptables -t mangle -N SHAPER-IN iptables -t mangle -I PREROUTING -i $DEV -j SHAPER-IN iptables -t mangle -A SHAPER-IN -s 192.168.0.0/16 -j MARK --set-mark 10
-
врятли...если сейчас еще буду переводить что то,то вскроюсь... может можно как то поставить фильтр на корневой класс 1:1 и и оформить этот фильтр как нибудь чтобы присутствовало: match ip src 192.168.1.0/24 или вот тут нашел кусочек: tc qdisc add dev $DEV root handle 1: cbq avpkt 1000 bandwidth 360kbit tc class add dev $DEV parent 1: classid 1:1 cbq rate 32kbit \ allot 1500 prio 5 bounded isolated tc filter add dev $DEV parent 1: protocol ip prio 16 u32 \ match ip src 195.96.96.97 flowid 1:1 но тогда действительно дальще походу придется все на cbq делать...
-
а htb не легче получится? нельзя как нибудь сделать, чтобы сначала резалась скорость от каждого ip сети,а потом уже выполнялась вся требуха,которую я привел выще?где она должна резаться, в корневой дисциплине?
-
Да тут тебе никто не доктор. Я же говорил забудь обо всем и читай про cbq. Тогда прикрутишь легко. Ты не слушаешься и cbq не используешь а сразу кинулся делать все ручками. Вот и вылавливай теперь эту марку руками ))) а как мне еще если не ручками все делать... :'(
-
ну как же прикрутить...
-
я так понял,мы создаем это правило и помечаем его маркой. потом делаем примерно то что приведено в этом примере: пример и начинаю делать себе по аналогии с этим:пример который я использую 1) создаем различные классы обработки трафика tc qdisc add dev $DEV root handle 1: htb default 26 tc class add dev $DEV parent 1: classid 1:1 htb rate ${RATEUP}kbit tc class add dev $DEV parent 1:1 classid 1:20 htb rate $[$RATEUP/7]kbit ceil ${RATEUP}kbit prio 0 tc class add dev $DEV parent 1:1 classid 1:21 htb rate $[$RATEUP/7]kbit ceil ${RATEUP}kbit prio 1 tc class add dev $DEV parent 1:1 classid 1:22 htb rate $[$RATEUP/7]kbit ceil ${RATEUP}kbit prio 2 tc class add dev $DEV parent 1:1 classid 1:23 htb rate $[$RATEUP/7]kbit ceil ${RATEUP}kbit prio 3 tc class add dev $DEV parent 1:1 classid 1:24 htb rate $[$RATEUP/7]kbit ceil ${RATEUP}kbit prio 4 tc class add dev $DEV parent 1:1 classid 1:25 htb rate $[$RATEUP/7]kbit ceil ${RATEUP}kbit prio 5 tc class add dev $DEV parent 1:1 classid 1:26 htb rate $[$RATEUP/7]kbit ceil ${RATEUP}kbit prio 6 2)подключаем дисциплины обработки очереди к подклассам: tc qdisc add dev $DEV parent 1:20 handle 20: sfq perturb 10 tc qdisc add dev $DEV parent 1:21 handle 21: sfq perturb 10 tc qdisc add dev $DEV parent 1:22 handle 22: sfq perturb 10 tc qdisc add dev $DEV parent 1:23 handle 23: sfq perturb 10 tc qdisc add dev $DEV parent 1:24 handle 24: sfq perturb 10 tc qdisc add dev $DEV parent 1:25 handle 25: sfq perturb 10 tc qdisc add dev $DEV parent 1:26 handle 26: sfq perturb 10 3)направляем трафик в классы tc filter add dev $DEV parent 1:0 prio 0 protocol ip handle 20 fw flowid 1:20 tc filter add dev $DEV parent 1:0 prio 0 protocol ip handle 21 fw flowid 1:21 tc filter add dev $DEV parent 1:0 prio 0 protocol ip handle 22 fw flowid 1:22 tc filter add dev $DEV parent 1:0 prio 0 protocol ip handle 23 fw flowid 1:23 tc filter add dev $DEV parent 1:0 prio 0 protocol ip handle 24 fw flowid 1:24 tc filter add dev $DEV parent 1:0 prio 0 protocol ip handle 25 fw flowid 1:25 tc filter add dev $DEV parent 1:0 prio 0 protocol ip handle 26 fw flowid 1:26 4)а теперь делаем правила файрвола: эти правила пока что бездумно взяты... # маркируем пакеты с помощью fwmark - устанавливаем значения 20-26 в зависимости от # нужного класса. Высший приоритет - 20. iptables -t mangle -A MYSHAPER-OUT -p tcp --sport 0:1024 -j MARK --set-mark 23 # Низкоприоритетный трафик iptables -t mangle -A MYSHAPER-OUT -p tcp --dport 0:1024 -j MARK --set-mark 23 # "" iptables -t mangle -A MYSHAPER-OUT -p tcp --dport 20 -j MARK --set-mark 26 # порт ftp-data, низкий приоритет iptables -t mangle -A MYSHAPER-OUT -p tcp --dport 5190 -j MARK --set-mark 23 # интернет-пейджер aol iptables -t mangle -A MYSHAPER-OUT -p icmp -j MARK --set-mark 20 # ICMP (ping) - высокий приоритет, # будем удивлять друзей iptables -t mangle -A MYSHAPER-OUT -p udp -j MARK --set-mark 21 # распознавание имен DNS (маленькие пакеты) iptables -t mangle -A MYSHAPER-OUT -p tcp --dport ssh -j MARK --set-mark 22 # secure shell iptables -t mangle -A MYSHAPER-OUT -p tcp --sport ssh -j MARK --set-mark 22 # secure shell iptables -t mangle -A MYSHAPER-OUT -p tcp --dport telnet -j MARK --set-mark 22 # telnet (ew...) iptables -t mangle -A MYSHAPER-OUT -p tcp --sport telnet -j MARK --set-mark 22 # telnet (ew...) iptables -t mangle -A MYSHAPER-OUT -p ipv6-crypt -j MARK --set-mark 24 # IPSec - мы не знаем полезную нагрузку, однако... iptables -t mangle -A MYSHAPER-OUT -p tcp --sport http -j MARK --set-mark 25 # локальный веб-сервер iptables -t mangle -A MYSHAPER-OUT -p tcp -m length --length :64 -j MARK --set-mark 21 # маленькие пакеты # скорее всего ACK-пакеты iptables -t mangle -A MYSHAPER-OUT -m mark --mark 0 -j MARK --set-mark 26 # избыточно - смаркировать все неотмаркированые В принципи шаблон наверное какой то такой?!для того чтобы мой слабенький исходящий канал использовать с максимальной отдачей. Этим я оптимизирую исходящий трафик.Делать нужно это на интерфейсе смотрящем в интернет я так понимаю?! А теперь помимо этого,нужно сделать,чтобы люди из сети,могли отсылать через шлюз данные в интернет со скоростью не больще 32 kbit\s c каждого ip. Получается мне нужно отбрасывать пакеты которые приходят от них,тем самым добившись понижения скорости?Это нужно делать на каком интерфейсе,который смотрит в сеть?и куда прикручивать эту строчку: iptables -t mangle -A PREROUTING -s 192.168.90.0/24 -j MARK --set-mark 333 ?
-
Тут уже все описали и разжевали. Покопай в сторону cbq - это скрипт такой, который при помощи конфига рулит хитрыми правилами iproute2 чтобы всем исходящий резануть достаточно всех промаркировать одной маркой ))) iptables -t mangle -A PREROUTING -s 192.168.90.0/24 -j MARK --set-mark 333 не могли бы привести какой нибудь пример разбора такого случая,а то сложновато разобраться,немного запутался в этих скриптах. Не могу толком понять что и в каком порядке использовать: Так как уже прочитал материал и из них узнал про разные скрипты,пока что сузил обзор на такие скрипты как ESFQ,HTB и cbq. а дальще какая то путаница пошла.Но немного разобравшись сузил для такой задачи,но все равно не хватает опыта и наглядности: 1)для исходящего! нужно как то сделать всякие приоритеты и прочее для разного типа трафика,я так понял это делается с помощью HTB и cbq.только вот толком не понял в каком случае использовать какой скрипт :00: далее нужно впихнуть во все это ESFQ,чтобы все делилось поровну. Так я понимаю,не чего не пропустил?я это сейчас осмысливаю в первый раз,так что поправте меня пожалуйста,если я не так все понимаю... Дальше совсем не понятно как прикрутить это: iptables -t mangle -A PREROUTING -s 192.168.90.0/24 -j MARK --set-mark 333 и совместить с остальными правилами или классами или марками...ааа,попа!не пойму... 2)для входящего решил поставить Squid в прозрачном режиме и валить всякие злостные закачки + тут я делаю выигрышь небольшой на кэше. Вот как конкретно каждому ip порезать скорость входящую,так и не понял.везде говорят только про входящую скорость от провайдера и не чего про уменьщение скорости на самом шлюзе... Можно конечно проксей резать абсолютно все классы трафика,но я думаю это не самый лучщий способ...и что будет тварится если вдруг прокся рухнет! Вот такой вот я чайник получается,но очень стараюсь во все это въехать,поэтому прошу о помощи.
-
Вот мне нужно тоже зарезать ВСЕМ исходящий трафик (потому что инет собираюсь раздовать с тарелки,а исходящий канал дохленький).Ну так вот,как всем одним махом зарезать исходящий трафик скажем до 32 кбит\с? Операционка suse 10.3 , на нем поднят нат и биллинг, за этим всем делом шарманка со спутниковой антеной и исходящим скай-линком. А за одно и как входящий до пол мегабита обрубить тоже всем.Помогите пожалуйста.
-
Помогите поставить на Suse 10.3
тема ответил в shyrikos пользователя shyrikos в Питання по Stargazer
А для того чтобы поставить веб-админку на все это дело,какие телодвижения нужно сделать?! Спрашиваю,потому что находил только с vpn соединением,а мне нужно простое - самое классическое,то которое в мануале описанно.Помогите плиз... -
Помогите поставить на Suse 10.3
тема ответил в shyrikos пользователя shyrikos в Питання по Stargazer
так получилось,что все заработало,причем старая версия поставилась,а потом я поставил новую...Не может из-за этого быть каких либо ошибок?как их обе затереть и заново поставить? Нормальный ли ответ на такую команду: lex:/etc/stargazer # ps -x | grep stargazer Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html 7451 ? S<sl 0:00 ./stargazer 7726 pts/1 S+ 0:00 grep stargazer Сервер запустился? -
Помогите поставить на Suse 10.3
тема ответил в shyrikos пользователя shyrikos в Питання по Stargazer
так я уже так делал.все равно выдает ошибку... а какая новая версия?
