Ребята! Либо я тупой, либо с этим IPTables в dd-wrt что-то не то!
Составил скрипт на основе первого поста. Вот он:
TCA="tc class add dev br0"
TFA="tc filter add dev br0"
TQA="tc qdisc add dev br0"
SFQ="sfq perturb 10"
tc qdisc del dev br0 root
tc qdisc add dev br0 root handle 1: htb
tc class add dev br0 parent 1: classid 1:1 htb rate 1600kbit
$TCA parent 1:1 classid 1:10 htb rate 400kbit ceil 800kbit prio 4
$TQA parent 1:10 handle 10: $SFQ
$TFA parent 1:0 prio 4 protocol ip handle 10 fw flowid 1:10
iptables -t mangle -A POSTROUTING -p tcp --sport 1:3388 -d 10.1.3.128/25 -j MARK --set-mark 10
iptables -t mangle -A POSTROUTING -p tcp --sport 3390:5059 -d 10.1.3.128/25 -j MARK --set-mark 10
iptables -t mangle -A POSTROUTING -p tcp --sport 5062:65535 -d 10.1.3.128/25 -j MARK --set-mark 10
iptables -t mangle -A POSTROUTING -p udp --sport 1:5059 -d 10.1.3.128/25 -j MARK --set-mark 10
iptables -t mangle -A POSTROUTING -p udp --sport 5062:65535 -d 10.1.3.128/25 -j MARK --set-mark 10
TCAU="tc class add dev vlan2"
TFAU="tc filter add dev vlan2"
TQAU="tc qdisc add dev vlan2"
tc qdisc del dev vlan2 root
tc qdisc add dev vlan2 root handle 1: htb
tc class add dev vlan2 parent 1: classid 1:1 htb rate 800kbit
$TCAU parent 1:1 classid 1:10 htb rate 200kbit ceil 400kbit prio 4
$TQAU parent 1:10 handle 10: $SFQ
$TFAU parent 1:0 prio 4 protocol ip handle 10 fw flowid 1:10
iptables -t mangle -A PREROUTING -p tcp -s 10.1.3.128/25 --dport 1:3388 -j MARK --set-mark 10
iptables -t mangle -A PREROUTING -p tcp -s 10.1.3.128/25 --dport 3390:5059 -j MARK --set-mark 10
iptables -t mangle -A PREROUTING -p tcp -s 10.1.3.128/25 --dport 5062:65535 -j MARK --set-mark 10
iptables -t mangle -A PREROUTING -p udp -s 10.1.3.128/25 --dport 1:5059 -j MARK --set-mark 10
iptables -t mangle -A PREROUTING -p udp -s 10.1.3.128/25 --dport 5062:65535 -j MARK --set-mark 10
Пояснения:
10.1.3.128/25 - локальная сеть
пропущенные порты - которые не нужно шейпить
В результате имею тот же гемор: траффик снова шейпиться почему-то ВЕСЬ без разбору на входящий/исходящий, без разделения по портам. То-есть по порту 3389(RDP) я имею входящую скорость 400Кбит/с вместо 1600Кбит/с.
При этом, если забрать вторую часть (правиля для исходящего трафика), то входящий фильтруется правильно.
Подскажите, знатоки, как побороть эту проблему. Ведь исходящий траффик желательно тоже шейпить: в офисе стоит VoIP, которому нужен стабильний трафик в обе стороны (хоть и не большой). А если какому-то юзеру стукнет в голову запустить торрент и активно раздавать файлы, то накроется мой VoIP большим медным тазом.
Версия DD-WRT sp2 13064, режим работы - router.
а вот интересно:
tc -s qdisk show
показывает устройства?
вообще можно посмотреть классы через tc?
у меня не получается получить вывод команды tc вообще.
я писал подобный скрипт используя qos hfsc и l7-filter.
но не могу разобраться именно с tc. т.к. она не показывает никакой информации. _________________ Ищу работу системным администратором UNIX/BSD
Подскажите, а результат работы скрипта должен бить виден в виде маркировки соединений?
У меня если запустить
cat /proc/net/ip_conntrack
то у всех соединений mark=0.
Если включить стандартный Qos в интерфейсе то у пакетов появляется mark=30 40 0, в зависимости что я настроил.
Такое впечатление что скрипт не работает.
сделал всё как в первом посте, но у меня чего то не ограничивается upload локальных клиентов...
скрипт вот такой:
Code:
WAN=$(nvram get wan_ifname)
SFQ="sfq perturb 10"
CU="tc class add dev $WAN"
FU="tc filter add dev $WAN"
QU="tc qdisc add dev $WAN"
tc qdisc del dev $WAN root
tc qdisc add dev $WAN root handle 1:0 htb
tc class add dev $WAN parent 1:0 classid 1:1 htb rate 40960kbit
# нормальная труба на весь канал
$CU parent 1:1 classid 1:10 htb rate 10240kbit ceil 40960kbit prio 2
# труба для всяких торрентов
$CU parent 1:1 classid 1:20 htb rate 1024kbit ceil 1480kbit prio 4
# даём всем внутренним клиентам поделённую ширину
iptables -t mangle -A PREROUTING -s 10.0.0.0/24 -d ! 10.0.0.0/24 -j MARK --set-mark 10
# режем одному торренты
iptables -t mangle -A PREROUTING -p tcp -s 10.0.0.56 -d ! 10.0.0.0/24 --dport 1025:65535 -j MARK --set-mark 20
iptables -t mangle -A PREROUTING -p udp -s 10.0.0.56 -d ! 10.0.0.0/24 --dport 1025:65535 -j MARK --set-mark 20
в итоге если посмтореть вывод iptables -t mangle -L PREROUTING
то счётчики растут
а юзер 10.0.0.56 реально на upload выбирает весь канал вместо причитающегося ~мегабита... _________________ TP-Link TL-WR1043ND: DD-WRT v24-sp2 (08/07/10) std - build 14896
Asus RT-N16: DD-WRT build 19545 (kingmod)
DIR300/NRU
Тоже не шейпится upload. Но получилось родным QoS зашейпить таки. В Packet Scheduler выбрал HFSC (вместо HTB). Возможно если в скриптах использовать hfsc вместо htb аплоад будет нормально шейпиться.
Posted: Sat Jul 23, 2016 17:57 Post subject: Re: QoS, шейпер и dual подключение
Может кто-нибудь объяснить как нормально настроить шейпер на tplink wr841nd? Прошивка: DD-WRT v24-sp2 (12/22/14) std.
Я пробовал использовать программу, на которую ссылка в начале поста. Пробовал использовать разные варианты скриптов из интернета. Пробовал скрипт из первого сообщения темы.
Но скорость не изменяется вообще никак. Как показывал speedtest 40мбит\с так и показывает -_-
Уже не знаю что и делать. Изначально хотел сделать 2 wi-fi сети, одну с минимальными ограничениями, чтобы кто-то один не смог заполнить весь канал, а вторую без пароля, но с ограничением скорости до ~1мбит\с и кол-ва клиентов до 5-7.
Вчера находил где-то в интернете, что под роутеры на Atheros надо модифицировать скрипты, но никаких пруфов там не было.
Posted: Mon Jul 25, 2016 7:53 Post subject: Re: QoS, шейпер и dual подключение
dimas6000 wrote:
Может кто-нибудь объяснить как нормально настроить шейпер на tplink wr841nd? Прошивка: DD-WRT v24-sp2 (12/22/14) std.
Я пробовал использовать программу, на которую ссылка в начале поста. Пробовал использовать разные варианты скриптов из интернета. Пробовал скрипт из первого сообщения темы.
Но скорость не изменяется вообще никак. Как показывал speedtest 40мбит\с так и показывает -_-
Уже не знаю что и делать. Изначально хотел сделать 2 wi-fi сети, одну с минимальными ограничениями, чтобы кто-то один не смог заполнить весь канал, а вторую без пароля, но с ограничением скорости до ~1мбит\с и кол-ва клиентов до 5-7.
Вчера находил где-то в интернете, что под роутеры на Atheros надо модифицировать скрипты, но никаких пруфов там не было.
Для начало сейчас 2016 обновите прошивку, второе не надо пробовать кучу скриптов из интернета, а чуток разобрать в принципе работы шейпера и хотя бы одного скрипта.
Раньше он был как на скрине ниже (встроенный в прошивку), сейчас схема чуть другая но принцип тот-же. Все настройки можно делать через WEB http://192.168.1.1/QoS.asp
Если функционала не хватает, то тогда можно написать свой скрипт, но при этом разобраться со своими интерфейсами на роутере.
Посмотрите и разберите вот это пример :
Code:
#!/bin/sh
TCA="tc class add dev br0"
TFA="tc filter add dev br0"
TQA="tc qdisc add dev br0"
SFQ="sfq perturb 10"
tc qdisc del dev br0 root
tc qdisc add dev br0 root handle 1: htb
tc class add dev br0 parent 1: classid 1:1 htb rate 38000kbit
$TCA parent 1:1 classid 1:10 htb rate 10000kbit ceil 20000kbit prio 2
$TCA parent 1:1 classid 1:11 htb rate 5000kbit ceil 15000kbit prio 2
$TQA parent 1:10 handle 10: $SFQ
$TQA parent 1:11 handle 11: $SFQ
$TFA parent 1:0 prio 2 protocol ip handle 10 fw flowid 1:10
$TFA parent 1:0 prio 2 protocol ip handle 11 fw flowid 1:11
iptables -t mangle -A POSTROUTING -d 192.168.1.10 -j MARK --set-mark 10
iptables -t mangle -A POSTROUTING -d 192.168.1.20 -j MARK --set-mark 11
TCAU="tc class add dev imq0"
TFAU="tc filter add dev imq0"
TQAU="tc qdisc add dev imq0"
modprobe imq
modprobe ipt_IMQ
ip link set imq0 up
tc qdisc del dev imq0 root
tc qdisc add dev imq0 root handle 1: htb
tc class add dev imq0 parent 1: classid 1:1 htb rate 38000kbit
$TCAU parent 1:1 classid 1:10 htb rate 10000kbit ceil 20000kbit prio 2
$TCAU parent 1:1 classid 1:11 htb rate 5000kbit ceil 15000kbit prio 2
$TQAU parent 1:10 handle 10: $SFQ
$TQAU parent 1:11 handle 11: $SFQ
$TFAU parent 1:0 prio 2 protocol ip handle 10 fw flowid 1:10
$TFAU parent 1:0 prio 2 protocol ip handle 11 fw flowid 1:11
iptables -t mangle -A PREROUTING -s 192.168.1.10 -j MARK --set-mark 10
iptables -t mangle -A PREROUTING -s 192.168.1.20 -j MARK --set-mark 11
iptables -t mangle -A PREROUTING -j IMQ --todev 0
IMQ можете не использовать, пример для двух IP .... 10 и .... 20 ограничение в скорости с возможностью поднятия ее в момент не загруженности канала.
Для проверки так же использовать
tc -s qdisc ls dev br0
tc -s class ls dev br0
Проверка пакетиков в cat /proc/net/ip_conntrack