... Нагрузку можно условно разделить на две части: # Число правил в firewall, которые проходит пакет # Обработка VLAN-тегов сетевой картой/сетевым стеком Если со вторым пунктом мы ничего поделать скорее всего не сможем, то число правил в некоторых случаях можно сократить. Рассмотрим примеры. h2. Один интерфейс в системе не занимается приёмом зеркала трафика h3. Входные данные * eth0 - выход в интернет * eth1 - сетевая карта на которую приходит тегированое зеркало трафика ** eth1.100 ** eth1.101 ** eth1.102 ** ... ** eth1.129 h3. Решение Использовать в меню опцию: {quote} Настройки Carbon Reductor \-> Настройки алгоритма фильтрации \-> Единственный интерфейс на который не приходит зеркало {quote} В ней нужно указать: {code} eth0 {code} После рестарта в цепочке raw PREROUTING будет 1 правило вместо 30 для каждого VLAN на сетевой карте eth1, которое будет выглядеть следующим образом: {code} iptables -t raw -I PREROUTING ! -i eth0 -j mirror_traffic {code} {color:#993300}{*}Но эта опция безопасна только в случае, если такой интерфейс один.*{color} h2. Несколько интерфейсов в системе не занимаются приёмом зеркала трафика h3. Входные данные Допустим в вашей конфигурации выход в Интернет (default route) отделен от менеджмента и (или) доступа к сети абонентов, неважно с помощью VLAN или физических линков. Для простоты рассмотрим вариант с физическими линками: * eth0 - выход в Интернет * eth1 - менеджмент * eth2 - доступ к сети абонентов * eth3 - доступ к сети абонентов * eth4 - приём зеркала трафика ** eth4.100 ... eth4.130 - интерфейсы для захвата тегированного трафика * eth5 - приём зеркала трафика ** eth5.100 ... eth5.130 - интерфейсы для захвата тегированного трафика h3. Проблемы, если применять подход выше Если прописать eth0 в качестве _"Единственного интерфейса на который не приходит зеркало",_ то в цепочку mirror_traffic будет попадать трафик для менеджмента и доступа к сети абонентов. {color:#993300}{*}Это может привести к снижению стабильности работы фильтрации{*}{color}, так что так делать не рекомендуется. Но что делать, если нагрузку снизить надо? h3. Решение Создаём хук для файрвола, в котором переопределяем функцию raw_links, используя то, что iptables поддерживает ограниченные "маски" в названиях интерфейсов. {code} touch /app/reductor/cfg/userinfo/hooks/reductor_firewall.sh chmod a+x /app/reductor/cfg/userinfo/hooks/reductor_firewall.sh {code}и записываем в него: {code} #!/bin/bash raw_links() { for device in eth4 eth5; do iptables -t raw -A PREROUTING -i "$device.+" -j mirror_traffic done } {code} Что переопредит функцию в скрипте файрвола и заменит создание 62 правил для каждого из VLAN на два правила вида: {code} iptables -t raw -A PREROUTING -i eth4.+ -j mirror_traffic iptables -t raw -A PREROUTING -i eth5.+ -j mirror_traffic {code}
|