Corsair 4 Опубликовано: 2008-08-13 20:35:14 Share Опубликовано: 2008-08-13 20:35:14 Нашел в нете следующий скриптик шейпера #!/bin/sh IPTABLES=/sbin/iptables TC=/sbin/tc DEV_IN=eth1 DEV_OUT=eth0 #actually 1mbit #для того, чтобы реально управлять с приоритетом пришлось резать канал примерно на 25% RATE_IN=800 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 #www iptables -t mangle -A MYSHAPER-IN -p tcp --sport 80 -j MARK --set-mark 25 iptables -t mangle -A MYSHAPER-IN -p tcp --dport 80 -j MARK --set-mark 25 # порт ftp-data, низкий приоритет iptables -t mangle -A MYSHAPER-IN -p tcp --sport 20 -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 #pptp iptables -t mangle -A MYSHAPER-IN -p tcp --sport 1723 -j MARK --set-mark 75 iptables -t mangle -A MYSHAPER-IN -p gre -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 #тут ускрил шефа Smile # iptables -t mangle -A MYSHAPER-IN -d 192.168.0.3 -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 # LAN $TC filter add dev $DEV_OUT parent 1:0 protocol ip prio 1 u32 match ip src 192.168.0.1/24 flowid 1:2 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 При запросе статуса получаю следующий результат [qdisc IN] qdisc htb 1: r2q 10 default 99 direct_packets_stat 0 Sent 344263973 bytes 1152851 pkt (dropped 0, overlimits 197446 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 qdisc pfifo 10: parent 1:10 limit 5p Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 qdisc sfq 25: parent 1:25 limit 128p quantum 1514b perturb 10sec Sent 10055 bytes 124 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 qdisc sfq 50: parent 1:50 limit 128p quantum 1514b perturb 10sec Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 qdisc sfq 75: parent 1:75 limit 128p quantum 1514b perturb 10sec Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 qdisc sfq 99: parent 1:99 limit 128p quantum 1514b perturb 10sec Sent 344253782 bytes 1152725 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 [class IN] class htb 1:99 parent 1:1 leaf 99: prio 4 rate 200000bit ceil 800000bit burst 1699b cburst 1999b Sent 344255340 bytes 1152728 pkt (dropped 0, overlimits 0 requeues 0) rate 309280bit 126pps backlog 0b 0p requeues 0 lended: 727811 borrowed: 424917 giants: 0 tokens: -1139 ctokens: -1226 class htb 1:1 root rate 800000bit ceil 800000bit burst 1999b cburst 1999b Sent 344265395 bytes 1152852 pkt (dropped 0, overlimits 0 requeues 0) rate 309512bit 126pps backlog 0b 0p requeues 0 lended: 424917 borrowed: 0 giants: 0 tokens: -1226 ctokens: -1226 class htb 1:10 parent 1:1 leaf 10: prio 0 rate 100000bit ceil 400000bit burst 1649b cburst 1799b Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 lended: 0 borrowed: 0 giants: 0 tokens: 135168 ctokens: 36864 class htb 1:75 parent 1:1 leaf 75: prio 3 rate 200000bit ceil 800000bit burst 1699b cburst 1999b Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 lended: 0 borrowed: 0 giants: 0 tokens: 69632 ctokens: 20480 class htb 1:50 parent 1:1 leaf 50: prio 2 rate 200000bit ceil 800000bit burst 1699b cburst 1999b Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 lended: 0 borrowed: 0 giants: 0 tokens: 69632 ctokens: 20480 class htb 1:25 parent 1:1 leaf 25: prio 1 rate 100000bit ceil 400000bit burst 1649b cburst 1799b Sent 10055 bytes 124 pkt (dropped 0, overlimits 0 requeues 0) rate 0bit 0pps backlog 0b 0p requeues 0 lended: 124 borrowed: 0 giants: 0 tokens: 128615 ctokens: 35226 [filter IN] filter parent 1: protocol ip pref 1 fw filter parent 1: protocol ip pref 1 fw handle 0x19 classid 1:25 filter parent 1: protocol ip pref 2 fw filter parent 1: protocol ip pref 2 fw handle 0x32 classid 1:50 filter parent 1: protocol ip pref 3 fw filter parent 1: protocol ip pref 3 fw handle 0x4b classid 1:75 filter parent 1: protocol ip pref 4 fw filter parent 1: protocol ip pref 4 fw handle 0x63 classid 1:99 filter parent 1: protocol ip pref 49152 fw filter parent 1: protocol ip pref 49152 fw handle 0xa classid 1:10 судя по логам весь трафик направляется в одну полосу хотя должен делиться iptables-ом. В чем может быть проблема? Ссылка на сообщение Поделиться на других сайтах
Keen 10 Опубліковано: 2008-08-13 22:50:47 Share Опубліковано: 2008-08-13 22:50:47 А с чего ты взял, что у тебя все побежало в одну полосу? Судя по данным, пошло по 99му марку (основная масса) и по 25ой марке (телнет) Тобиш фаервол нормально все размарковал. Ссылка на сообщение Поделиться на других сайтах
Corsair 4 Опубліковано: 2008-08-14 07:08:38 Автор Share Опубліковано: 2008-08-14 07:08:38 Потому что я прописал для www маркировку 25. И судя по логу очень малая часть пакетов направляется в 25 очередь Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас