
У меня есть брандмауэр с 3 IP-псевдонимами на 1 физическом интерфейсе. Пакеты отбрасываются между этими 3 интерфейсами (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
)
Что может быть причиной этого?
решение1
Используйте macvlan в режиме моста вместо IP-псевдонимов и оставьте физический интерфейс в режиме promisc.
например
- eno1 — это интерфейс, который вы хотите использовать.
- Затем создайте macvlan1@eno1, macvlan2@eno1 и macvlan3@eno1.
- Оставьте eno1 в режиме 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
решение2
Состояние INVALID
означает, что пакет не связан с известным соединением (и не начинает новое соединение). Единственные причины, которые я могу придумать, это то, что что-то очищает таблицу отслеживания соединений, таблица переполнена или записи слишком быстро истекают по времени. Вы можете проверить размер таблицы отслеживания соединений с помощью sudo conntrack -L | wc -l
и максимальное количество записей с помощью cat /proc/sys/net/netfilter/nf_conntrack_max
.