uBoTo Публикувано 3 Декември, 2012 Доклад Сподели Публикувано 3 Декември, 2012 Здравейте! Преди години имах едно PC със Slackware Linux и го използвах като рутер (една лан карта за WAN и една за ЛАН), на който бях конфигурирал следния шейпър за ограничаване на download+upload скоростите (описвам всяко IP, като избирам скоростите му на upload/download): # eth1 - WAN; eth2 - LAN # tc qdisc add dev eth1 root handle 1: htb default 2 r2q 1 tc class add dev eth1 parent 1: classid 1:1 htb rate 128kbps ceil 128kbps tc class add dev eth1 parent 1:1 classid 1:2 htb rate 3kbps ceil 30kbps tc filter add dev eth1 parent 1:0 prio 0 protocol ip handle 2 fw flowid 1:2 iptables -A PREROUTING -t mangle -i eth2 -s 192.168.0.2 -j MARK --set-mark 2 # tc qdisc add dev eth2 root handle 2: htb default 2 r2q 1 tc class add dev eth2 parent 2: classid 2:1 htb rate 1024kbps ceil 1024kbps tc class add dev eth2 parent 2:1 classid 2:2 htb rate 28kbps ceil 256kbps tc filter add dev eth2 parent 2:0 prio 0 protocol ip handle 102 fw flowid 2:2 iptables -A POSTROUTING -t mangle -o eth2 -d 192.168.0.2 -j MARK --set-mark 102 Вършеше чудесна работа, но в случая ми трябва нещо по-различно. Използвам Slackware, имам няколко мрежови устройства и искам да използвам този скрипт само за едно от тях. С други думи казано, искам да приложа правилата за входящия и изходящия трафик само на едното устройство, като не се използва никакъв допълнителен софтуер (ако е възможно). Търсих доста из интернет за нещо подобно, но не можах да намеря. Правих и някои опити, но за жалост не бяха успешни (успявах да огранича само скоростта на теглене). За съжаление не съм експерт в правилата, класовете и всичко, свързано с tc, htb, cbq. Ще се радвам ако споделите опита си, за да мога да се справя с проблема и коригирам скрипта. П.П.: Друга идея за това устройство, освен шейпа, е да спра и свалянето на торенти/магнити (без да спирам достъпа до сайтовете за тях), но е като идея и не съм търсил решение. Ако някой има конкретно предложение за забрана за теглене на торенти/магнити, моля да го сподели. Предварително благодаря на отзовалите се. Адрес на коментара Сподели в други сайтове More sharing options...
Semoff Отговорено 3 Декември, 2012 Доклад Сподели Отговорено 3 Декември, 2012 Само на един интерфейс неможе да се шейпва ефективно двупосочно (освен ако не си пачнал ядрото и iptables-a с IMQ) Ето вариант с приоритизация на ICMP трафика и ToS 0x10. Тебе ти трябва долната част мисля , с ingress-a "$1" си го заместваш с твоя интерфейс /sbin/tc qdisc del dev $1 root > /dev/null /sbin/tc qdisc del dev $1 ingress > /dev/null ##### speed server->client ### A.K.A. Download /sbin/tc qdisc add dev $1 root handle 1: htb default 20 r2q 1 /sbin/tc class add dev $1 parent 1: classid 1:1 htb rate ${UPSPEED}mbit quantum 3000 /sbin/tc class add dev $1 parent 1:1 classid 1:10 htb rate ${UPSPEED}mbit prio 1 quantum 3000 /sbin/tc class add dev $1 parent 1:1 classid 1:20 htb rate ${UPSPEED}mbit prio 2 quantum 3000 /sbin/tc qdisc add dev $1 parent 1:10 handle 10: sfq perturb 10 quantum 3000 /sbin/tc qdisc add dev $1 parent 1:20 handle 20: sfq perturb 10 quantum 3000 /sbin/tc filter add dev $1 parent 1:0 protocol ip prio 10 u32 match ip tos 0x10 0xff flowid 1:10 /sbin/tc filter add dev $1 parent 1:0 protocol ip prio 1 u32 match ip protocol 1 0xff flowid 1:10 /sbin/tc filter add dev $1 parent 1:0 protocol ip prio 10 u32 match ip protocol 6 0xff match u8 0x05 0x0f at 0 match u16 0x0000 0xffc0 at 2 match u8 0x10 0xff at 33 flowid 1:10 ##### speed client->server ### A.K.A. Upload /sbin/tc qdisc add dev $1 handle ffff: ingress /sbin/tc filter add dev $1 parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate ${DOWNSPEED}mbit burst 128k drop flowid :1 [/code] Адрес на коментара Сподели в други сайтове More sharing options...
uBoTo Отговорено 3 Декември, 2012 Автор Доклад Сподели Отговорено 3 Декември, 2012 Благодаря за отговора. Варианта с IMQ го срещнах, но трябва да прекомпилирам, а идеята е скрипта да може да се използва и без да има нужда от допълнителни програми и модификации. Изпробвах въпросният код (само ingress за upload-а) и имам следният основен проблем - как и има ли начин да маркирам пакетите така, че да мога да определям скоростта за всеки потребител, както това е възможно в посоченият от мен вариант по-горе? Като минус за дадения скрипт от Semoff мога да допълня, че "реже" скоростта на сваляне не много точно (да каже от зададени 5Мбит я държи на 4,8Мбит), а тази на качване от 1Мбит - в началото на теста е по-висока и след 3-4 секунди спада на зададената (1Мбит). Тестовете ги правя чрез http://speedtest.net/ на произволни сървъри в България, за които знам, че скоростта ми е много над тази, която искам да огранича. Та, приемам идеи как да подобря скрипта (да не допуска по-високи скорости от желаните и да се стреми да поддържа максимума на зададените) и да мога да определям скорости за всеки потребител, моля да помага. П.П.: Идеята е, че на някои IP адреси искам да махна ограниченията или да сложа максимални стойности над ограниченията за всички останали (колкото позволяват условията на свързаност да кажем) и затова търся как да направя шейпъра така. Надявам се да съм достатъчно изчерпателен, а ако не съм - питайте и да дообеснявам Адрес на коментара Сподели в други сайтове More sharing options...
amateur Отговорено 9 Март, 2013 Доклад Сподели Отговорено 9 Март, 2013 http://packages.slackware.com/ Изтегли iproute2-3.4.0 и инсталирай cp /usr/doc/iproute2-3.4.0/examples/cbq.init-v0.7.3 /sbin/cbq chmod +x /sbin/cbq mkdir -p /etc/sysconfig/cbq cd /etc/sysconfig/cbq pico cbq-0003.ИмеНаПотребителяКойтоЩеОграничаваш DEVICE=eth1,1000Mbit,100Mbit RATE=60000Kbit WEIGHT=30000Kbit PRIO=5 BOUNDED=yes ISOLATED=no RULE=192.168.0.2/24 cbq compile cbq start Ако работи правилно си го описваш в rc.local Всеки може да опикае стените. Ако си мъж осери тавана. Адрес на коментара Сподели в други сайтове More sharing options...
Recommended Posts
Създайте нов акаунт или се впишете, за да коментирате
За да коментирате, трябва да имате регистрация
Създайте акаунт
Присъединете се към нашата общност. Регистрацията става бързо!
Регистрация на нов акаунтВход
Имате акаунт? Впишете се оттук.
Вписване