Есть ли простой способ ограничить использование полосы пропускания пользователя?

14

Есть ли простой способ ограничить использование полосы пропускания пользователя, скажем, 10kpbs? Другие пользователи не должны быть затронуты. Лучшее, что я нашел, это tc, но он кажется слишком сложным, чтобы делать такие простые вещи.

пушистый
источник
Если данный ответ решит вашу проблему (я надеюсь, что так), пожалуйста, выберите его как принятый, чтобы этот вопрос можно было пометить как решенный ..
heemayl

Ответы:

8

tc - правильный ответ на ваши потребности в конфигурации.
Это может показаться сложным, потому что он управляет классными (и менее) учениками в очереди, что дает ему неограниченную гибкость и уровни формирования и фильтрации.
Это, однако, не тот случай. Поскольку tc использует встроенные (или модульные) ученики в очереди в ядре, это самый простой / лучший способ ограничения пропускной способности для каждого пользователя.
Вот пример установки, я оставил ее в формате Mbit, но вы можете изменить показатель скорости на kbps.

tc qdisc add dev eth0 root handle 1:0 htb
tc class add dev eth0 parent 1:0 classid 1:1 htb rate 1Mbit ceil 1Mbit prio 1

Для вас правило iptables просто измените --uid-owner на uid пользователя, которого вы хотите ограничить, в документации сказано, что вы можете использовать имя пользователя вместо UID, не проверяли это.

iptables -t mangle -A POSTROUTING -o eth0 -p tcp -m owner --uid-owner 1000 -j CLASSIFY --set-class 1:1

К вашему сведению, даже если вам не нужен HTB, я бы порекомендовал его на основе доступных опций и скорости, которую вы ограничиваете.

cupojavashort
источник