После долгого тестирования могу представить поправленную версию скрипта nShaper, который был написан изначально для владельцев роутеров с прошивкой от Олега
http://wl500g.info/showthread.php?13609-QoS-%D3%F1%F2%E0%ED%EE%E2%EA%E0-%E8-%ED%E0%F1%F2%F0%EE%E9%EA%E0-nShaperЯ лишь его подправил + добавил пару новых «фишек»:
1. Правила на основе iptables
2. Правила на основе ndpi (есть 2 версии скрипта. Для тех кому нужен nDpi и для тех кому не нужен)
3. Приоритезация трафика на основе маркировки (через тот же ndpi или iptables)
Скрипт состоит из 3 файлов. 2 конфиг. файла (nshaper.conf и ip_z1.lst) и самого скрипта (nshaper.sh). Первые 2 лежат в /etc/nshaper, второй в /etc/init.d/ соответственно (естественно надо дать права на запуск и закинуть в автозагрузку при желании).
Конфиг достаточно простой. Основные параметры:
WAN_IF — интерфейс интернет соединения (eth0, ppp0 и т.п)
LAN_IF — интерфейс локальной сети
Если провайдер использует так называемый Russian PPTP, то так же указываем
pptp_ip — сервер подключения pptp
PPTP_IF – название сетевого интерфейса, который смотрит в сеть провайдера (интерфейс, куда воткнут кабель провайдера)
В противном случае их нужно закомментировать.
WAN_DN_RATE — максимально возможная скорость. Не физическая! Например если есть локальные ресурсы, то та самая скорость в локальной сети (если она к примеру выше, чем скорость интернет тарифа). Если же локальных ресурсов нет, то выставляем максимальную скорость интернет соединения. (К примеру, у меня тариф 40мбит Интернет и пиринговые зоны со скоростью 100мбит. Мне надо выставить 100000. Значения в кбит)
WAN_UP_RATE — тоже самое, но для исходящего канала.
WAN_ZONES – название зон. Первая зона всегда остается inet. Вторая уже на Ваш вкус. Если таких зон нет, то оставляем только inet
ZONE_PATH – каталог с файлами зон. (по умолчанию там же, где и сам конфиг, /etc/nshaper)
WAN_ZONES_DN_RATE, WAN_ZONES_UP_RATE – скорость интернет соединения (входящая и исходящая). Значения в кбит. Первая цифра, это скорость интернет соединения. Вторая и последующая - для пиринговых зон. Если зон нет, то указываем только скорость тарифа. Например WAN_ZONES_UP_RATE="40000 100000" или WAN_ZONES_UP_RATE="40000" если нет локальных ресурсов.
В этом же блоке настраиваются скорости для тарифов с ночным увеличением. По комментариям в конфиге думаю все понятно.
RATES="10 10 20 40 15 5"
INET_NAMES="200 201 202 203 204 205"
Приоритеты. % от максимальной ширины канала и их названия. % в принципе редактировать нет необходимости. В данном случае для первого и второго приоритета резервируется 10% канала, для второго 20%, для третьего 40%, для четвертого 15% и для самого низкого 5%. Если в какой-то очереди трафика нет, то его ширина «отдается» остальным. Но если канал забит, то каждый получает свой минимум. То есть запусти вы хоть 100 закачек торрента, свои 40% ширины веб трафик получит. Если же торрентов нет, то веб возьмет все что свободно.
Второй параметр это название приоритетов. Видны при просмотре статуса. Можно как угодно называть. Например Prio, Web, Torrent и т. д.
Синтаксис правил в конфиге подробно описан. Если что-то не понятно отвечу тут.
Теперь требования для работы скрипта.
Во первых (и самое главное) нужна поддержка IMQ. Для этого нужно патчить ядро. В принципе ничего сложного нет. У меня в Blogger есть очень подробная инструкция (на уровне копировать-вставить). Она же включает и сборку nDpi (не обязательно).
Во вторых модуль nDpi (если он нужен конечно)
В третьих gawk, conntrack и ipcalc (для корректной работы скрипта).
По CPU особых требований нет. У меня на шлюзе слабый AMD E-350 без проблем «переваривает» 40мбит/с интернет трафика + еще 50-60 пирингового.
Скрипт возможно не идеален. Но работает. Если есть замечания — буду рад исправить.