Привет! К сожалению, у меня очень мало опыта системного администрирования и настройки linux систем, сильно не ругайте, я только учусь ;)
Как выглядит сеть: 172.21.0.1 - сам сервер с шейпером. 172.21.0.2 - второй сервер, хранящий файлы, которые запрашивают клиенты по http. 172.21.0.6, 172.21.0.7 - два клиента.
Пытаюсь настроить шейпинг трафика wg-клиентов:
tc qdisc add dev wg0 parent root handle 1:0 hfsc default 10
# Root-класс
tc class add dev wg0 parent 1: classid 1:1 hfsc sc rate 1gbit ul rate 1gbit
# Зарезервированный трафик
# Гарантированная полоса в 500 Mbit/s и максимум 1 Gbit/s
tc class add dev wg0 parent 1:1 classid 1:10 hfsc sc rate 500mbit ul rate 1gbit
# Клиентский трафик
# Гарантированная полоса в 500 Mbit/s и максимум 1 Gbit/s
tc class add dev wg0 parent 1:1 classid 1:20 hfsc sc rate 500mbit ul rate 1gbit
# Шейпинг индивидуального клиента 6
tc class add dev wg0 parent 1:20 classid 1:3006 hfsc sc rate 100kbit ul rate 100kbit
tc filter add dev wg0 protocol ip parent 1:0 prio 1 u32 match ip dst 172.21.0.6/32 flowid 1:3006
# Шейпинг индивидуального клиента 7
tc class add dev wg0 parent 1:20 classid 1:3007 hfsc sc rate 100kbit ul rate 100kbit
tc filter add dev wg0 protocol ip parent 1:0 prio 1 u32 match ip dst 172.21.0.7/32 flowid 1:3007
tc -pretty filter show dev wg0
filter parent 1: protocol ip pref 2 u32 chain 0
filter parent 1: protocol ip pref 2 u32 chain 0 fh 800: ht divisor 1
filter parent 1: protocol ip pref 2 u32 chain 0 fh 800::801 order 2049 key ht 800 bkt 0 *flowid 1:3006 not_in_hw
match IP dst 172.21.0.6/32
filter parent 1: protocol ip pref 2 u32 chain 0 fh 800::802 order 2050 key ht 800 bkt 0 *flowid 1:3007 not_in_hw
match IP dst 172.21.0.7/32
tc -graph class show dev wg0
+---(1:) hfsc
+---(1:1) hfsc sc m1 0bit d 0us m2 1Gbit ul m1 0bit d 0us m2 1Gbit
+---(1:10) hfsc sc m1 0bit d 0us m2 500Mbit ul m1 0bit d 0us m2 1Gbit
+---(1:20) hfsc sc m1 0bit d 0us m2 500Mbit ul m1 0bit d 0us m2 1Gbit
+---(1:3007) hfsc sc m1 0bit d 0us m2 100Kbit ul m1 0bit d 0us m2 100Kbit
+---(1:3006) hfsc sc m1 0bit d 0us m2 100Kbit ul m1 0bit d 0us m2 100Kbit
|
| |
При попытке скачать файл сразу с двух клиентов, 100kbit получает только один, второй 0kbit :(
Что я делаю не так? Заранее спасибо! Сервер: Debian 12 запущенный в KVM.
p.s.: ограничение 100kbit/s только чтобы проверять работоспособность шейпера.
буду рад, если подскажете, как в целом переписать конфигурацию. возможно, я в корне все делаю не так и можно оптимальнее (например задать один класс для всей подсети, чтобы все wg клиенты разом получили ограничение на индивидуальные 100кбит).