Wondershaper — это скрипт, который дает возможность пользователю управлять пропускной способностью одного или нескольких сетевых адаптеров на сервере под управлением ОС GNU/Linux. Данный инструмент может использоваться во время тестовой эксплуатации какого-либо ПО на VPS/VDS тогда, когда важно не превысить лимит по трафику из-за возможных ошибок или нештатных ситуаций. Кроме того, этот скрипт может быть полезен пользователям настольных дистрибутивов GNU/Linux как средство ограничения пропускной способности сетевого интерфейса на рабочей станции.
Wondershaper является своего рода «оберткой» утилиты tc
, входящей в состав набора iproute2
, но сам по себе значительно упрощает её применение. Начиная с версии 1.3, Wondershaper использует дисциплину обработки очереди HTB (Hierarchical Token Bucket), что позволяет лучше управлять пропускной способностью на высокоскоростных каналах связи. Авторы скрипта: Bert Hubert, Jacco Geul и Simon Séhier.
Получить Wondershaper можно из официального репозитория GitHub:
git clone https://github.com/magnific0/wondershaper.git
Так как скрипт не требует установки, для его использования необходимо войти непосредственно в директорию с его файлами:
cd wondershaper
Для просмотра списка возможных аргументов используется ключ -h:
./wondershaper -h
Осталось лишь выбрать интерфейс, с которым мы будем работать. Просмотреть список интерфейсов можно командой ip addr show.
В следующем примере ограничивается пропускная способность беспроводного интерфейса до 4 Мбит/с на отдачу и до 8 Мбит/с на загрузку:
./wondershaper -a wlp4s0 -u 4096 -d 8192
Если при запуске скрипта возникает ошибка RTNETLINK answers: Operation not permitted
, это означает, что для применения ограничений недостаточно прав текущего пользователя. В этом случае необходимо запускать скрипт с правами суперпользователя:
sudo ./wondershaper -a wlp4s0 -u 4096 -d 8192
Важно заметить, что если планируется использовать скрипт как системную службу с поддержкой автозапуска, из его директории необходимо выполнить команды:
sudo make install
which wondershaper
sudo nano /etc/conf.d/wondershaper.conf
sudo systemctl enable wondershaper.service
- первая команда установит Wondershaper как системную службу;
- второй командой мы узнаем, где после установки будут находиться файлы скрипта (по умолчанию /usr/bin);
- на третьем шаге мы должны отредактировать файл конфигурации, чтобы задать необходимые настройки ограничений пропускной способности сетевых интерфейсов;
- команда
sudo systemctl enable wondershaper.service
активирует автозапуск скрипта при старте системы.
С пояснениями по настройке Wondershaper и подробным руководством можно ознакомиться на странице официального git-репозитория: