Продолжаем рассматривать лимитирование трафика с использованием нескольких простых скриптов. Сразу перейдем к следующему методу.

1.Настройка одного ПК с помощью HTB-дисциплины за счет виртуального интерфейса IFB

В данном примере будем настраивать сеть с прицелом на следующий результат:

  • Скорость входящего трафика: 8 Мбит
  • Скорость исходящего трафика: 4 Мбит
  • Адаптеры: enp0s3 — внешний

Сразу создаем скрипт:

Предоставляем права для запуска:

Осуществляем старт:

Запускаем проверку:

Скриншот с полученным результатом:

Как видите, в заданные условия мы вложились. Идем дальше.

2.Настройка нескольких ПК с помощью HTB-дисциплины за счет виртуального интерфейса IFB

В данном примере будем настраивать сеть с прицелом на следующий результат:

  • Скорость входящего трафика: 8 Мбит
  • Скорость исходящего трафика: 4 Мбит
  • Адаптеры: enp0s3 – внешний, enp0s8 — внутренний

В данном случае мы будем отталкиваться от наличия в сети нескольких ПК. Более того, способ пригодится тем, кто имеет подключение к нескольким провайдерам. С помощью ifb мы легко можем настроить шейпинг трафика даже при таких условиях.

Итак, для начала нам нужно настроить сам виртуальный адаптер ifb0. Для этого, создадим новый файл, где укажем параметры для всех типов трафика:

Как видите, мы получили ограничение по скорости на вход до 4 Мбит, а на выход – 512 Кб. И все это для всех подключенных устройств в сети по адресу 10.168.50.2/255.255.255.0
Для автозапуска перемещаем скрипт по следующему пути:

3.Настройка с помощью iptables и маркировки устройств

В данном примере будем настраивать сеть с прицелом на следующий результат:

  • Скорость входящего трафика: 1 Мбит
  • Скорость исходящего трафика: 3 Мбит
  • Адаптеры: enp0s3 – внешний, enp0s8 — внутренний

Можно обойтись и без вышеописанных скриптов, путем подключения в работу маркированного списка из iptables. Для этого нам нужно установить iproute2:

Теперь создаем новый файл в директории /etc/sysconfig/shaper.sh с следующим содержанием:

Можно произвести старт:

В итоге, получаем следующий результат:

4.Настройка шлюза с помощью упрощенного шейпера трафика

В этом примере у нас не будет никаких конкретных параметров, так как все они могут быть изменены в любой момент администратором сети. Более того, нам понадобится лишь enp0s8 адаптер для внутреннего окружения.

Прописываем следующие строчки в файле:

Тестируем:

Обратите внимание, что мы настроили шейпер трафика на вход до 1 Мбит, а на выход — до 5 Мбит.

5. Настройка с помощью упрощенного шейпера трафика Shaper Control Tool

В данном примере тоже нет жестких параметров по ограничению исходящего и входящего трафика. Однако, мы будем использовать утилиту Shaper Control Tool и два адаптера eth0 на вход и eth1 на выход.

Начнем с установки Shaper Control Tool. В случае с шестой версией CentOS, используйте следующие команды:

А если вы работаете на седьмой версии ОС, то нужно использовать другие команды:

Теперь внесем изменения в файл конфигурации в директории /etc/sc/sc.conf. В итоге, у вас должно выйти следующее:

Проведем инициализацию:

Сформируем БД:

И впишем в файл IP-адрес имеющегося сервера:

Теперь пропишем адрес для тестовой машины:

Проведем синхронизацию всех настроек для БД:

Как видите, ничего сложного. Если все работает исправно, можно добавить все вышеописанное в автозапуск:

6.Дополнительные команды

Для настройки шейпера трафика можно использовать несколько дополнительных команд, которые доступны tc в ОС Linux. Мы приведем самые полезные из них:

  • tc – специальная утилита, которая позволяет настроить шейпинг трафика с помощью ядра системы. Вы можете найти ее в пакете iproute2, установка которого была описана ранее. Для использования всех дополнительных команд, вам нужно установить утилиту, после чего работать с доступными командами и интерфейсами.
    imq – виртуальный интерфейс, который позволяет настроить сетевой адаптер для управления очередью трафика. По сути, он нужен для контроля скриптов htb, cbq и tbf, которые мы использовали в своих примерах. Однако, чтобы правильно активизировать данную опцию, нужно пропатчить ядро системы. Довольно устаревший метод, на смену которому пришел ifb.
  • ifb – выполняет аналогичные функции, что и виртуальный интерфейс imq.
  • htb – позволяет управлять очередью трафика. Является очень распространенным инструментом среди администраторов благодаря своей эффективности и простоте.
  • cbq – инструмент для отладки контроля трафика в очереди.
  • tbf — инструмент для отладки контроля трафика в очереди.
  • red — инструмент для отладки контроля трафика в очереди.
  • sfq – практически тот же инструмент для отладки контроля трафика в очереди, но разница лишь в том, что он распределяет пакеты в случайном порядке.

Вы можете вызвать все имеющиеся правила в системе с помощью команды:

Удалить все правила можно с помощью следующих команд:

7.Описание алгоритма для настройки шейпера трафика

Данный алгоритм является основным для настройки лимитирования канала для наших примеров. Конечно, вы можете использовать и другие методики, которые доступны в сети Интернет.

  • Для начала создадим дисциплину в корне, чтобы организовать нужный интерфейс. Также не забываем указывать класс для не распознанного трафика:
  • Формируем новый класс для определения иерархии. Также задаем ширину канала:
  • Формируем еще один класс, чтобы организовать шейпинг трафика для пользователя:
  • Настраиваем конфигурацию дисциплины лимитирования для каждого отдельного пользователя:
  • Настраиваем фильтры, чтобы идентифицировать поступающей трафик от пользователя. Для этого нам пригодится тот же iptables:

    Альтернативный вариант для www:

    Еще один вариант для www:

На этом мы завершаем данный материал. Надеемся, все описанные примеры помогут вам в создании шейпера трафика для вашей сети!