Назад | Перейти на главную страницу

Пакеты, помеченные как INVALID в правиле FORWARD

У меня есть брандмауэр с 3 псевдонимами IP на 1 физическом интерфейсе. Пакеты сбрасываются между этими тремя интерфейсами (ICMP, HTTP или что-то еще). Мы отследили это до того, что эти пакеты были помечены как НЕДЕЙСТВИТЕЛЬНЫЕ в правиле FORWARD и отброшены из-за этого правила:

chain FORWARD {
    policy DROP;

    # connection tracking
    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 и держите физический интерфейс в режиме promisc.

например

  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

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

# /sbin/ip link set eno1 promisc on

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