Это старая версия документа!
Автоматизация PCQ шейпера
PCQ была разработана для оптимизации массивных QoS-систем, в которых большинство очередей являются однотипными для разных подпотоков. Например, подпоток может быть входящим или исходящим для одного отдельного клиента (IP) или соединения с сервером.
Алгоритм работы PCQ очень прост: сперва он использует выбранные классификаторы, чтобы отличить один подпоток от другого, затем применяет персональные значения размера FIFO-очереди и ограничения для каждого подпотока, после чего группирует все подпотоки вместе и применяет общие значения размера FIFO-очереди и ограничения.
Что даст - лучшая оптимизация очередей, меньше нагрузка чем у SFQ.
Проверим чтобы на веб-сервере был загружен модуль SuExec. Для Apache выполните :
apachectl -M | grep suexec Syntax OK suexec_module (shared)
Для Nginx проверьте файл nginx.conf, параметр user должен соответствовать имени пользователя в файле /etc/sudoers.d.
Для Debian:
www-data ALL=(ALL) NOPASSWD:ALL
Для Centos:
apache ALL=(ALL) NOPASSWD: ALL
Для Apache эта запись тоже нужна, проверьте обязательно.
Очень важно - проверьте возможность авторизации без пароля между серверами, почитать тут можно.
Обновите файл установки шейпера, для этого скачайте обновленную версию дистрибутива Mikbill.
Разархивируйте из дистрибутива файл pcq_script_6x.php, который находится в DISTR/system/admin.tar.gz/admin/res/pcq Скопируйте его себе в /var/www/mikbill/admin/res/pcq
Проверьте /usr/share/freeradius/dictionary/dictionary.mikrotik он должен иметь вид:
VENDOR Mikrotik 14988 BEGIN-VENDOR Mikrotik ATTRIBUTE Mikrotik-Recv-Limit 1 integer ATTRIBUTE Mikrotik-Xmit-Limit 2 integer # this attribute is unused ATTRIBUTE Mikrotik-Group 3 string ATTRIBUTE Mikrotik-Wireless-Forward 4 integer ATTRIBUTE Mikrotik-Wireless-Skip-Dot1x 5 integer ATTRIBUTE Mikrotik-Wireless-Enc-Algo 6 integer ATTRIBUTE Mikrotik-Wireless-Enc-Key 7 string ATTRIBUTE Mikrotik-Rate-Limit 8 string ATTRIBUTE Mikrotik-Realm 9 string ATTRIBUTE Mikrotik-Host-IP 10 ipaddr ATTRIBUTE Mikrotik-Mark-Id 11 string ATTRIBUTE Mikrotik-Advertise-URL 12 string ATTRIBUTE Mikrotik-Advertise-Interval 13 integer ATTRIBUTE Mikrotik-Recv-Limit-Gigawords 14 integer ATTRIBUTE Mikrotik-Xmit-Limit-Gigawords 15 integer ATTRIBUTE Mikrotik-Address-List 19 string # MikroTik Values VALUE Mikrotik-Wireless-Enc-Algo No-encryption 0 VALUE Mikrotik-Wireless-Enc-Algo 40-bit-WEP 1 VALUE Mikrotik-Wireless-Enc-Algo 104-bit-WEP 2 END-VENDOR Mikrotik
Обратите внимание на атрибут - Mikrotik-Address-List. Если не хватает чего-то добавьте.
Теперь настроим тариф
Укажем "address list", в примере Unlim_month_5, это необходимо т.к. пакеты будут промаркированы исходя из этого списка.
В меню шейперы:
1 - убрать галки "Использовать шейперы" и "Radius шейперы"
2 - Если не будете использовать повременные шейперы, укажите обычную скорость ограничения.
Если планируется предоставлять услугу Turbo, в меню услуги активируйте это. Вы можете задать стоимость услуги, время действия в часах, и скорость.
Укажите в меню "NAS шейперы" Ваш сервер доступа:
При использовании повременных шейперов, в меню "день/ночь" необходимо задать время и ограничения:
Затем в меню "Настройки" - "Сервера NAS" нужно сделать ряд настроек:
1 - Указать логин и пароль пользователя для управления сервером ssh
2 - И тип шейпера указать "Mikrotik PCQ"(скрипт обрабатывает только устройства с этим типом шейпера)
Ещё один важный нюанс, проверьте запуск скрипта вручную, для этого перейдите в каталог:
cd /var/www/mikbill/admin/sys/scripts
И запустите:
./mikbill_pcq.sh
На консоль должна быть выведена отладочная информация:
string(13) "10.231.255.86" string(9) "begin_ssh" string(7) "end_ssh" </сode> Если выдаст: <code> ./mikbill_pcq.sh: 6: [: Linux: unexpected operator ./mikbill_pcq.sh: 11: cd: can't cd to /usr/local/www/mikbill/admin/res/pcq Could not open input file: ./pcq_script.php
Измените в скрипте mikbill_pcq.sh первую строчку на #!/bin/bash
И повторите запуск.
Выполните пункт меню - "Настройки" - "Действия" - "обновить шейперы"
В итоге у Вас должно получится следующее:
В примере созданы 6 типов очередей на входящий и исходящий трафик по временным интервалам и 2 типа очереди для услуги турбо.
Если используется услуга Турбо, проверьте чтобы создались очереди.
При использовании повременных шейперов, должны создатся очереди. В зависимости от времени суток, неактивные шейпера помечены в красный цвет.
В таблице mangle должны создатся правила пометки пакетов для созданного адрес-листа.
Пример пользователя который активировал услугу Turbo. Для него создан элемент адрес листа, пакеты которго потом помечаются изходя из названия этого списка.