Как ограничить пропускную способность интерфейса wg0 до 1 Mbit/c, как входящую, так и исходящую.

Вопрос или проблема

У меня есть виртуальный частный сервер. Я установил Wireguard для работы в качестве VPN-сервера. Я хочу ограничить пропускную способность до 1 Мбит/с для клиента, чтобы получить 1 Мбит/с интернета. Какой правильный командой сделать это с обеих сторон, как входящей, так и исходящей?

Я попробовал эти команды:

sudo modprobe ifb
sudo ip link set dev ifb0 up
sudo tc qdisc add dev wg0 handle ffff: ingress
sudo tc qdisc add dev wg0 parent ffff: protocol ip u32 match u32 0 0 action mirred engress redirect dev ifb0
sudo tc class add dev wg0 parent 1: classid 1:1 htb rate 1mbit
sudo tc class add dev wg0 parent 1:1 classid 1:10 htb rate 1mbit
sudo tc qdisc add dev ifb0 root handle 1: htb default 10
sudo tc class add dev ifb0 parent 1: classid 1:1 htb rate 1mbit
sudo tc class add dev ifb0 parent 1:1 classid 1:10 htb rate 1mbit

… но я не знаю, правильное ли это.

Ответ или решение

Для ограничения пропускной способности интерфейса wg0 (WireGuard) до 1 Мбит/с, как для входящего, так и для исходящего трафика, действительно потребуется использовать набор команд tc (Traffic Control) в Linux. Вы правильно начали, но есть несколько нюансов и оптимизаций, которые помогут наладить управление трафиком эффективнее.

Настройка ограничения пропускной способности

  1. Загрузите модуль IFB (Inbound Filtering Bridge):
    Этот модуль позволит перенаправлять входящий трафик для дальнейшей обработки.

    sudo modprobe ifb
    sudo ip link set dev ifb0 up
  2. Настройка qdisc для управления исходящим трафиком:

    Мы создадим основную иерархию очередей, определяющую распределение пропускной способности.

    # Очистка существующих настроек
    sudo tc qdisc del dev wg0 root 2> /dev/null
    
    # Добавление qdisc для исходящего трафика
    sudo tc qdisc add dev wg0 root handle 1: htb default 10
    
    # Создание класса с ограничением на 1 Мбит/с
    sudo tc class add dev wg0 parent 1: classid 1:1 htb rate 1Mbit
    
    # Создание дочернего класса для дальнейшего управления
    sudo tc class add dev wg0 parent 1:1 classid 1:10 htb rate 1Mbit
  3. Настройка qdisc для управления входящим трафиком:

    Теперь мы настроим ifb0, чтобы управлять входящим трафиком, который будет редиректиться на него.

    # Добавление qdisc для входящего трафика
    sudo tc qdisc add dev ifb0 root handle 1: htb default 10
    
    # Настройка класса для входящего трафика с ограничением на 1 Мбит/с
    sudo tc class add dev ifb0 parent 1: classid 1:1 htb rate 1Mbit
    
    # Создание дочернего класса для входящего трафика
    sudo tc class add dev ifb0 parent 1:1 classid 1:10 htb rate 1Mbit
  4. Настройка перенаправления трафика через ifb0:

    Для управления входящим трафиком необходимо сделать перенаправление:

    sudo tc qdisc add dev wg0 handle ffff: ingress
    sudo tc filter add dev wg0 protocol ip parent ffff: u32 match u32 0 0 action mirred egress redirect dev ifb0

Проверка настроек

Чтобы убедиться, что настройки были применены корректно, используйте команды:

# Просмотр активных qdisc
sudo tc -s qdisc show dev wg0
sudo tc -s qdisc show dev ifb0

# Просмотр классов
sudo tc -s class show dev wg0
sudo tc -s class show dev ifb0

Пояснение команд

  • tc qdisc – отвечает за задания очередей (Queuing Discipline).
  • htb (Hierarchical Token Bucket) – служит для упрощенного управления пропускной способностью.
  • ingress и egress – соответственно определяют входящий и исходящий трафик.
  • action mirred – перенаправляет трафик с wg0 на ifb0 для дальнейшей обработки.

Заключение

Таким образом, с помощью указанных команд вы создадите ограничения на пропускную способность до 1 Мбит/с как для входящего, так и для исходящего трафика на интерфейсе wg0. Это позволит вашему клиенту получить стабильный доступ к VPN без превышения установленных лимитов.Не забывайте проверять настройки периодически и адаптировать их в зависимости от изменений в условиях работы и потребностей вашего сервера или клиентов.

Оцените материал
Добавить комментарий

Капча загружается...