Пишем: log log-prefix NEW_NOT_SYN tcp not tcp-syn state new Получаем: ERROR: /etc/net/scripts/config-fw: /sbin/iptables -A bad_tcp_packets -t filter - j LOG --log-prefix NEW_NOT_SYN --protocol TCP ! -mtcp --syn -mstate --state NEW Вместо "--syn" написано "-mtcp --syn"
Назначаю Андрею.
Мда, тут сложная ситуация. Я думал, что я избавился от такого, а оказалось, что нет :( Подробности позже.
В общем, нужно тестировать, такие ситуации еще вылезут. Я думал даже отдельные правила сделать для всех отрицаний, потому как iptables непредсказуемо себя ведет. В данном случае, если не указать --protocol tcp, то он вообще падает с Unknown error 42949672, так что убирают -mtcp. При этом обязательно нужно будет указывать протокол tcp в правиле.
RESOLVED FIXED? Если ты об explicit match, то я думал, что неопределённостей нет. И сам не встречал пока.
Да проблема в том, что получается: ! -mtcp --syn а нужно: -mtcp ! --syn Для этого и хотел написать еще отрицания для всего. Чтобы правило not syn преобразовывалось в это самое -mtcp ! --syn Попробовал ! --syn при отсутствующем --protocol TCP и iptables падает, я выше писал. Поэтому остался одни правильный вариант, когда нужно указывать протокол и когда нет -mtcp. То бишь, сейчас: drop tcp not tcp-syn будет преобразовываться в -j DROP --protocol TCP ! --syn и будет работать :)