Я собираюсь запустить новое зеркало с открытым исходным кодом для своего предприятия, но также был бы заинтересован в том, чтобы открыть его для внешних клиентов. Однако по очевидным причинам я хотел бы ограничить исходящую пропускную способность для всех, кто не находится в одной из моих локальных подсетей (например, трафик, направляющийся на один из пограничных маршрутизаторов).
Изначально я смотрел на apache mod_bw, однако, скорее всего, к этому зеркалу будет FTP-доступ. Я видел несколько многообещающих вариантов использования tc, однако похоже, что он будет соответствовать шаблону, основанному на подсети. Но я хочу отрицать это - у меня есть список из нескольких (5 или 6) внутренних подсетей, которые не должны иметь ограничений, а все остальное должно проходить через формирователь трафика. Несколько усложняя ситуацию, мне также нужно сопоставить подсети v4 и v6.
Я экспериментировал с этот, но опять же, мне в основном нужен обратный этого, поэтому «не формируйте эти подсети; применяйте политику ко всему остальному». Возможно, 2 класса, один с ограничителем скорости, а другой - нет? Мне все еще неясно, как порядок обработки сочетается с 'tc' - обработка прекращается после обнаружения совпадения или будет продолжаться до конца? (например, действительно ли уловка в конце все, или просто то, что еще не найдено?)
Насколько мне известно, tc match нельзя использовать с ipv6. Вам придется использовать iptables с -j CLASSIFY.
При использовании iptables обработка продолжается после обнаружения совпадения. Однако с tc flowid перенаправляет пакет классу и останавливает обработку.
Насчет дерева, думаю, вам нужно:
Хотя, я не знаю вашей архитектуры. Если вы используете NAT, вы должны быть точными (без диапазона) в правилах iptables. Если вы используете обратный прокси-сервер, вы не сможете различать внутренний и внешний трафик.
Если у вас есть обратный прокси, альтернативы:
В зависимости от ваших возможностей, лучшим вариантом будет второй, потому что вы сможете точно формировать, основываясь на пропускной способности WAN, а не на сетевом адаптере 1 или 10 Гб на вашем веб-сервере. Это ваш лучший вариант даже без обратного прокси.
Что касается выбора класса, вы должны использовать htb или hfsc для лучшего использования динамической пропускной способности и опцию «по умолчанию» в корневом qdisc.