У меня есть брандмауэр с 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.
например
См. Последовательность ниже для создания интерфейса 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
.