Большое число VLAN

Skip to end of metadata
Go to start of metadata

 Проверяйте к какому из двух случаев относится ваша установка.

Выполнение действий в этой статье может привести к снижению стабильности работы фильтрации или потере управления сервером.

В случае, если для приёма зеркала необходимо использовать большое число VLAN это может создать дополнительную нагрузку.

Нагрузку можно условно разделить на две части:

  1. Число правил в firewall, которые проходит пакет
  2. Обработка VLAN-тегов сетевой картой/сетевым стеком

Если со вторым пунктом мы ничего поделать скорее всего не сможем, то число правил в некоторых случаях можно сократить. Рассмотрим примеры.

Один интерфейс в системе не занимается приёмом зеркала трафика

Входные данные

  • eth0 - выход в интернет
  • eth1 - сетевая карта на которую приходит тегированое зеркало трафика
    • eth1.100
    • eth1.101
    • eth1.102
    • ...
    • eth1.129

Решение

Использовать в меню опцию:

Настройки Carbon Reductor -> Настройки алгоритма фильтрации -> Единственный интерфейс на который не приходит зеркало

В ней нужно указать:

eth0

После рестарта в цепочке raw PREROUTING будет 1 правило вместо 30 для каждого VLAN на сетевой карте eth1, которое будет выглядеть следующим образом:

iptables -t raw -I PREROUTING ! -i eth0 -j mirror_traffic

Но эта опция безопасна только в случае, если такой интерфейс один.

Несколько интерфейсов в системе не занимаются приёмом зеркала трафика

Входные данные

Допустим в вашей конфигурации выход в Интернет (default route) отделен от менеджмента и (или) доступа к сети абонентов, неважно с помощью VLAN или физических линков. Для простоты рассмотрим вариант с физическими линками:

  • eth0 - выход в Интернет
  • eth1 - менеджмент
  • eth2 - доступ к сети абонентов
  • eth3 - доступ к сети абонентов
  • eth4 - приём зеркала трафика
    • eth4.100 ... eth4.130 - интерфейсы для захвата тегированного трафика
  • eth5 - приём зеркала трафика
    • eth5.100 ... eth5.130 - интерфейсы для захвата тегированного трафика

Проблемы, если применять подход выше

Если прописать eth0 в качестве "Единственного интерфейса на который не приходит зеркало", то в цепочку mirror_traffic будет попадать трафик для менеджмента и доступа к сети абонентов. Это может привести к снижению стабильности работы фильтрации, так что так делать не рекомендуется. Но что делать, если нагрузку снизить надо?

Решение

Создаём хук для файрвола, в котором переопределяем функцию raw_links, используя то, что iptables поддерживает ограниченные "маски" в названиях интерфейсов. 

touch /app/reductor/cfg/userinfo/hooks/reductor_firewall.sh

chmod a+x /app/reductor/cfg/userinfo/hooks/reductor_firewall.sh

и записываем в него:

#!/bin/bash


raw_links() {
    for device in eth4 eth5; do
        iptables -t raw -A PREROUTING -i "$device.+" -j mirror_traffic
    done
}

Что переопредит функцию в скрипте файрвола и заменит создание 62 правил для каждого из VLAN на два правила вида:

iptables -t raw -A PREROUTING -i eth4.+ -j mirror_traffic
iptables -t raw -A PREROUTING -i eth5.+ -j mirror_traffic
Введите метки, чтобы добавить к этой странице:
Please wait 
Ищите метку? просто начните печатать.