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

Формирование трафика исходящих IP-адресов клиентов с помощью tc / iptables

Мой вопрос: я пытаюсь ограничить полосу пропускания пользователей на сервере и задаюсь вопросом, как это сделать. Прежде чем я углубился в tc / iptables, мне было интересно, могу ли я получить какой-либо совет по этому поводу, и если бы кто-нибудь мог дать мне образец конфигурации, с которой я мог бы поиграть, это было бы очень признательно.

Насколько я понимаю, вы можете создавать правила с помощью tc, а затем применять правила с помощью iptables, используя оператор mark. Некоторые люди говорят использовать постмаршрутизацию или вывод mangle, но не уверены на 100%, какой из них лучше и имеет ли это вообще значение. Я полагаю, что с tc я буду использовать htb (ведро токенов для ограничения пропускной способности), однако люди говорят, что есть компромисс производительности, и я ищу метод с наименьшей задержкой. Эти пользователи не находятся во внутренней сети, но подключаются к серверу.

У меня два типа пользователей, поэтому для их ограничения нужны только два правила. Пока что я вижу комбинацию tc / iptables, которую я хочу, но я открыт для предложений по альтернативам.

Думаю, для iptables команда будет выглядеть так

Правило ограничения пропускной способности 1

iptables -A PREROUTING -s xxx.xxx.xxx.xxx -t mangle -j MARK --set-mark 0x1

Правило ограничения пропускной способности 2

iptables -A PREROUTING -s xxx.xxx.xxx.xxx -t mangle -j MARK --set-mark 0x2

Что я хочу случиться

Использование tc - правильный способ шейпинга в Linux. Лучшая документация - это LARTC. Прежде всего нужно понять, какой трафик вы будете формировать - исходящий или входящий. После этого вы должны выбрать интерфейс для этого (проще сформировать входящий трафик на исходящем интерфейсе на основе адресов источника до NAT, а исходящий трафик на локальном интерфейсе на основе адреса назначения после NAT). Также могут отсутствовать правила iptables, например, если вы используете разные интерфейсы (могут быть интерфейсы VLAN) для двух типов пользователей. После этого вы должны настроить qdiscs на выбранных вами интерфейсах. он может быть бесклассовым, если ваши пользователи разделены по интерфейсам, или классовым, если вы используете один интерфейс для формирования пропускной способности для нескольких типов пользователей. И после этого необходимо настроить фильтр (если вы используете классную схему). По ссылке ниже есть много примеров. Удачи...