Пакеты, помеченные как НЕДЕЙСТВИТЕЛЬНЫЕ в правиле FORWARD

Вопрос или проблема

У меня есть межсетевой экран, у которого на одном физическом интерфейсе есть 3 IP-алиаса. Пакеты отбрасываются между этими тремя интерфейсами (будь то ICMP, HTTP или что-то еще). Мы выяснили, что эти пакеты помечаются как INVALID в правиле FORWARD и отбрасываются из-за следующего правила:

chain FORWARD {
    policy DROP;

    # отслеживание соединений
    mod state state INVALID LOG log-prefix 'INVALID FORWARD DROP: '; 
    mod state state INVALID DROP;
    mod state state (ESTABLISHED RELATED) ACCEPT;
}

(То есть, мы видим логи INVALID FORWARD DROP в dmesg)

Что может быть причиной этого?

Используйте macvlan в режиме моста вместо IP-алиасов и оставьте физический интерфейс в режиме промискуитета.

Например:

  1. eno1 — это интерфейс, который вы хотите использовать.
  2. Затем создайте macvlan1@eno1, macvlan2@eno1 и macvlan3@eno1.
  3. Оставьте eno1 в режиме промискуитета.

Смотрите ниже последовательность для создания интерфейса macvlan.

# /sbin/ip link add link eno1 macvlan1 type macvlan mode bridge

# /sbin/ip addr add 192.168.1.1/24 dev macvlan1

# /sbin/ip link set macvlan1 address aa:bb:bb:dd:ee:ff up

Смотрите ниже команду, чтобы включить режим промискуитета для eno2

# /sbin/ip link set eno1 promisc on

Состояние INVALID означает, что пакет не связан с известным соединением (и не начинает новое соединение). Единственные причины, которые я могу предположить, это то, что что-то очищает таблицу отслеживания соединений, таблица переполняется или записи истекают слишком быстро. Вы можете проверить размер таблицы отслеживания соединений с помощью sudo conntrack -L | wc -l и максимальное количество записей с помощью cat /proc/sys/net/netfilter/nf_conntrack_max.

Ответ или решение

Проблема с пакетами, отмеченными как INVALID в правиле FORWARD вашего брандмауэра, может быть вызвана несколькими факторами, особенно в конфигурации с IP-алиасами. Давайте рассмотрим возможные причины и решения этой проблемы.

Причины возникновения пакетов со статусом INVALID

  1. Некорректная работа протоколов: Пакеты могут помечаться как INVALID, если они не ассоциируются с известным соединением или не инициируют новое соединение. Это может происходить, если IP-алиасы не поддерживают необходимую связь и не отслеживают состояния соединений должным образом.

  2. Очистка таблицы отслеживания соединений: Возможно, что что-то очищает таблицу отслеживания соединений. Это может быть вызвано ошибками в конфигурации или другими процессами, которые неправильно управляют соединениями.

  3. Переполнение таблицы отслеживания: Если таблица отслеживания соединений заполнена, новые подключения могут не регистрироваться, и пакеты будут отклоняться как INVALID.

  4. Слишком короткие таймауты: Таймауты соединений могут быть установлены слишком короткими, из-за чего соединения быстро устаревают.

Проверка состояния

Для диагностики состояния таблицы отслеживания соединений вы можете использовать следующие команды:

  • Чтобы проверить текущее количество соединений в таблице:

    sudo conntrack -L | wc -l
  • Чтобы узнать максимальное количество записей в таблице:

    cat /proc/sys/net/netfilter/nf_conntrack_max

Решение проблемы

Для устранения проблемы с пакетами, отмеченными как INVALID, рекомендуется рассмотреть возможность использования macvlan в режиме моста вместо IP-алиасов. Вот что следует сделать:

  1. Убедитесь, что физический интерфейс находится в promisc режиме. Это позволит интерфейсу обрабатывать все проходящие через него пакеты.

  2. Создайте несколько macvlan интерфейсов в режиме моста:

    # Создание macvlan интерфейсов
    /sbin/ip link add link eno1 macvlan1 type macvlan mode bridge
    /sbin/ip addr add 192.168.1.1/24 dev macvlan1
    /sbin/ip link set macvlan1 address aa:bb:bb:dd:ee:ff up
  3. Затем активируйте promisc режим для основного интерфейса:

    # Включение promisc режима для eno1
    /sbin/ip link set eno1 promisc on

После выполнения этих шагов, ваш брандмауэр должен начать правильно отслеживать соединения, и количество пакетов, помеченных как INVALID, должно уменьшиться.

Если проблема будет продолжаться, рассмотрите возможность увеличения значения nf_conntrack_max в соответствии с вашими потребностями и проведите дополнительные исследования возможных ошибок настройки или конфликтов между протоколами.

Оцените материал
Добавить комментарий

Капча загружается...