Просмотр Исходного

{panel}
(!)  Проверяйте к какому из двух случаев относится ваша установка.

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

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

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

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

{toc}


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}