Назад | Перейти на главную страницу

Ограничение трафика на сервере OpenVPN пользователем с помощью tc (контроль трафика)

Я запускаю сервер OpenVPN с пропускной способностью 1 Гбит / с, и мне нужно ограничить ее до 5 Мбит / с на пользователя.

Поискав в Интернете, я нашел этот сценарий bash:

$U32 = "tc filter add dev tun0 protocol ip parent 1:0 prio 1 u32"

tc qdisc add dev tun0 root handle 1: htb default 30
tc class add dev tun0 parent 1: classid 1:1 htb rate 5mbit
tc class add dev tun0 parent 1: classid 1:2 htb rate 5mbit
$U32 match ip dst 10.8.0.0/16 flowid 1:1
$U32 match ip src 10.8.0.0/16 flowid 1:2

Я попробовал, но он ограничивает весь интерфейс до 5 Мбит / с, а не отдельные IP-адреса, и, поскольку я не знаю, как использовать tc, я не мог пойти дальше.

Кто-нибудь из вас знает, как изменить это, чтобы ограничить каждый IP-адрес в диапазоне до 5 Мбит / с максимум?

Дополнительный вопрос: знаете ли вы какой-нибудь хороший онлайн-ресурс, чтобы узнать больше о tc?

Я почти уверен, что это примерно так:

tc qdisc add dev tun0 parent root handle 1: htb default 30
tc class add dev tun0 parent 1: classid 1:1 htb sc rate 1000mbit ul rate 1000mbit
tc class add dev tun0 parent 1:1 classid 1:11 htb sc rate 5mbit ul rate 5mbit

Причина, по которой я говорю это, заключается в том, что я использую сценарий для ограничения всех, кроме набора select на 5 Мбит, и, поскольку вам не нужен набор, все должно быть в порядке. Однако я использую hfsc поэтому я могу ошибаться в форматировании, но суть, похоже, заключается в том, что родительский класс имеет максимальную пропускную способность, а дочерний класс имеет фактическое ограничение на пользователя. Я не претендую на звание эксперта, но поскольку вы не получали ответа в течение полутора лет, возможно, вы либо нашли ответ и забыли обновить свой пост, либо все еще ищете решение.