Хм.. вот и моя очередь разбираться с этим чудом, почитал документацию с opennetа, составил скрипт, но все равно не работает, в чем здесь может быть ошибка ??
Сам скрипт выполняется без ошибок и с виду даже работает, iptables пакеты маркирует, htb по группам раскидывает, но до сих пор получаю жалобы на тормоза в варкрафте, да и по интернету серфить при запущенном торренте не очень удается. Основная задача обеспечить работу варкрафта на соседнем компьютере, на сколько разобрался выставление приоритета применяется вне зависимости от того, локальный это трафик либо транслируемый через NAT, или я ошибаюсь?
PS: Все это запущено на родном дебиановском ядре, без патчей.
PPS: про то, что шейпится только исходящий трафик знаю, название цепоки SHAPER-IN взято из какого-то скрипта, да вот все не переименовалось.
#------------------------------------------------------------------------------ -
#Для шейпера
TC=/sbin/tc
#actually 256, но для того, чтобы реально управлять с приоритетом необходимо резать канал примерно на 25%
RATE_IN="192"
# Внешняя карта
EXTIF="eth1"
EXTIP="192.168.10.7"
EXTBC="255.255.255.0"
EXTNET=$EXTIP/$EXTBC
# Внутрисетевая карта
INTIF="eth0"
INTIP="192.168.20.1"
INTBC="255.255.255.0"
INTNET=$INTIP/$INTBC
# WiFi карта
WIFIIF="ath0"
WIFIIP="192.168.40.1"
WIFIBC="255.255.255.0"
WIFINET=$WIFIIP/WIFIBC
# Loop device/localhost
LPDIF="lo"
LPDIP="127.0.0.1"
LPDBC="255.0.0.0"
LPDNET="$LPDIP/$LPDBC"
#ШЕЙПЕР
# Создадим с помощью HTB классы :
# Задаем корневую дисциплиену
$TC qdisc add dev $EXTIF root handle 1:0 htb default 50
# Задаем корневоой класс
$TC class add dev $EXTIF parent 1:0 classid 1:1 htb rate ${RATE_IN}kbit burst 15k
# Создаём подклассы
# 2 класса, для которых резервируется скорость - от $RATE_IN/8 - до $RATE_IN/2
$TC class add dev $EXTIF parent 1:1 classid 1:10 htb rate $[$RATE_IN/8]kbit ceil $[$RATE_IN/2]kbit burst 15k prio 0
$TC class add dev $EXTIF parent 1:1 classid 1:20 htb rate $[$RATE_IN/8]kbit ceil $[$RATE_IN/2]kbit burst 15k prio 1
# 3 класса, для которых резервируется постоянная скорость в $RATE_IN/4
$TC class add dev $EXTIF parent 1:1 classid 1:30 htb rate $[$RATE_IN/4]kbit ceil ${RATE_IN}kbit burst 15k prio 2
$TC class add dev $EXTIF parent 1:1 classid 1:40 htb rate $[$RATE_IN/4]kbit ceil ${RATE_IN}kbit burst 15k prio 3
$TC class add dev $EXTIF parent 1:1 classid 1:50 htb rate $[$RATE_IN/4]kbit ceil ${RATE_IN}kbit burst 15k prio 4
# Задаем подклассовые дисциплины
# Этим мы сказали что "резать" трафик в классе 1:10 будем по алгоритму RED(Random Early Detection).
# Параметры для RED вычисляются следующим образом : min = (задержка)*bandwidt(bits/s), burst= (2*min+max)/(3*avpkt)), limit= 10*max,max > 2*min, avpkt 1000 для M$
#$TC qdisc add dev $EXTIF parent 1:10 red min 1600 max 3210 burst 2 limit 2560 avpkt 1000
# в остальных классах по алгоритму SFQ.
$TC qdisc add dev $EXTIF parent 1:10 handle 10: sfq perturb 10
$TC qdisc add dev $EXTIF parent 1:20 handle 20: sfq perturb 10
$TC qdisc add dev $EXTIF parent 1:30 handle 30: sfq perturb 10
$TC qdisc add dev $EXTIF parent 1:40 handle 40: sfq perturb 10
$TC qdisc add dev $EXTIF parent 1:50 handle 50: sfq perturb 10
# Добавить цепочку SHAPER-IN в таблицу mangle - сейчас мы настроим таблицу,которую будем использовать для фильтрациии установки fwmark
$IPTABLES -t mangle -N SHAPER-IN
$IPTABLES -t mangle -I POSTROUTING -o $EXTIF -j SHAPER-IN
# Маркируем пакеты с помощью fwmark - устанавливаем значения 10-99 в зависимости от нужного класса.
# Низкоприоритетный трафик
#$IPTABLES -t mangle -A SHAPER-IN -p tcp --sport 0:1024 -j MARK --set-mark 50
#$IPTABLES -t mangle -A SHAPER-IN -p tcp --dport 0:1024 -j MARK --set-mark 50
# secure shell
$IPTABLES -t mangle -A SHAPER-IN -p tcp --dport $ssh -j MARK --set-mark 10
$IPTABLES -t mangle -A SHAPER-IN -p tcp --sport $ssh -j MARK --set-mark 10
# ICMP (ping) - высокий приоритет,
$IPTABLES -t mangle -A SHAPER-IN -p icmp -j MARK --set-mark 20
# DNS (маленькие пакеты)
$IPTABLES -t mangle -A SHAPER-IN -p udp -j MARK --set-mark 20
# icq
$IPTABLES -t mangle -A SHAPER-IN -p tcp --sport $icq -j MARK --set-mark 20
# jabber
$IPTABLES -t mangle -A SHAPER-IN -p tcp --sport $xmpp -j MARK --set-mark 20
# WOW
$IPTABLES -t mangle -A SHAPER-IN -p tcp --sport $wow -j MARK --set-mark 20
$IPTABLES -t mangle -A SHAPER-IN -p tcp --dport $wow -j MARK --set-mark 20
# http
$IPTABLES -t mangle -A SHAPER-IN -p tcp --sport $http -j MARK --set-mark 30
$IPTABLES -t mangle -A SHAPER-IN -p tcp --dport $http -j MARK --set-mark 30
# https
$IPTABLES -t mangle -A SHAPER-IN -p tcp --sport $https -j MARK --set-mark 30
# избыточно - смаркировать все неотмаркированые пакеты как 50 (низкий проиритет)
$IPTABLES -t mangle -A SHAPER-IN -m mark --mark 0 -j MARK --set-mark 50
#Задаем подклассовые фильтры: привязывающие трафик,принадлежащий конкретному классу
$TC filter add dev $EXTIF protocol ip parent 1:0 prio 0 handle 10 fw classid 1:10
$TC filter add dev $EXTIF protocol ip parent 1:0 prio 1 handle 20 fw classid 1:20
$TC filter add dev $EXTIF protocol ip parent 1:0 prio 2 handle 30 fw classid 1:30
$TC filter add dev $EXTIF protocol ip parent 1:0 prio 3 handle 40 fw classid 1:40
$TC filter add dev $EXTIF protocol ip parent 1:0 prio 4 handle 50 fw classid 1:50
echo "Shaper on $EXTIF started ($RATE_IN kbit/s)"
#------------------------------------------------------------------------------ -
Ответ на:
комментарий
от mky
Ответ на:
комментарий
от sdm
Ответ на:
комментарий
от mky
Ответ на:
комментарий
от sdm
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум [классика][shaper][tc][iptables] работает, но криво (2011)
- Форум [debian][shaper][tc] игнорирование явно указанных prio у классов. bug или мой косяк? (2011)
- Форум опять IMQ + TC (2007)
- Форум [tc][htb] два варианта реализации, но ни один не работает так, как нужно (2011)
- Форум Проблема с ограничением пропускной способности (htb.init и tc) (2006)
- Форум IPTABLES редирект 80 го порта (2009)
- Форум Ограничение скорости с помощью tc из iproute2 (2005)
- Форум Снова вопрос Shaper - tc (2009)
- Форум adsl , htb (2007)
- Форум Linux шейпер (2011)