Вопрос или проблема
У меня есть виртуальный частный сервер. Я установил 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. Вы правильно начали, но есть несколько нюансов и оптимизаций, которые помогут наладить управление трафиком эффективнее.
Настройка ограничения пропускной способности
-
Загрузите модуль IFB (Inbound Filtering Bridge):
Этот модуль позволит перенаправлять входящий трафик для дальнейшей обработки.sudo modprobe ifb sudo ip link set dev ifb0 up
-
Настройка 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
-
Настройка 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
-
Настройка перенаправления трафика через
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 без превышения установленных лимитов.Не забывайте проверять настройки периодически и адаптировать их в зависимости от изменений в условиях работы и потребностей вашего сервера или клиентов.