Я могу создать правила ограничить всю подсеть или ограничить отдельные IP-адреса с tc и htb. Я надеюсь использовать диапазоны CIDR для хранения вещей несколько изящными.
Рассматриваемые машины все выполняют CentOS 7. Я пытался использовать tc + htb для выполнения этого, но я открыт для других инструментов, если существует лучший метод.
Моя цель состоит в том, чтобы ограничить CIDR, располагаются и присваивают отдельные пределы на исходный IP-адрес.
Например, установите глобальный предел для 192.168.1.0/24 к 100Mb/s, и каждый исходный IP в 192.168.1.0/24 имеет отдельный предел загрузки 10Mb/s, который не может быть превышен.
Вот рабочий пример того, что я делаю для каждого IP (надеющийся упрощать процедуру если возможный):
Эти шаги только должны быть выполнены однажды:
Создайте начальную букву HTB qdisc:
Создайте корневой класс:
Эти шаги должны быть выполнены для каждого IP в диапазоне CIDR с помощью существующего метода (что я надеюсь, надо надеяться, улучшать):
Класс должен быть добавлен для каждого исходного IP:
Фильтр должен быть создан для каждого исходного IP:
Может случиться так, что нет никакого изящного способа сделать это, но любые подсказки / совет значительно ценился бы. Я просмотрел несколько руководств онлайн, таких как http://lartc.org.Спасибо.
Я думаю, вы могли бы попробовать с хешем, давая по одному ведру на каждый IP-адрес, чтобы обеспечить равное количество пакетов в секунду для каждого IP-адреса. Вам также следует использовать sfq qdisc, так как htb - не лучший вариант.
tc qdisc add dev eth0 root handle 1: htb default 12
tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit ceil 100mbit
# Here, you want a fair qdisc
tc qdisc add dev eth0 parent 1:1 handle 101: sfq perturb 10
# Put a range in the filter
tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip src 192.168.1.0/24 flowid 1:1
# Create 254 bucket, each ip src will be attached to one bucket
tc filter add dev eth0 parent 1:1 protocol ip handle 10 flow hash keys nfct-src divisor 254
Здравствуйте, вы можете найти здесь: Классификатор меток брандмауэра Linux (tc-fw) не работает после обновления до Debian 9 - ядро 4.19 рабочая конфигурация для вашей задачи.
Бр, Николай