Bug 9424

Summary: некоректное преобразование флага tcp-syn из читабельного формата в формат iptables
Product: Sisyphus Reporter: Aleksey E. Birukov <birukov>
Component: etcnetAssignee: Andrew Kornilov <hiddenman>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P2 CC: ldv, mike, rider, sem, shaba, vseleznv
Version: unstable   
Hardware: all   
OS: Linux   

Description Aleksey E. Birukov 2006-04-18 00:44:08 MSD
Пишем:
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"
Comment 1 Denis Ovsienko 2006-04-18 09:07:09 MSD
Назначаю Андрею.
Comment 2 Andrew Kornilov 2006-04-19 16:26:25 MSD
Мда, тут сложная ситуация. Я думал, что я избавился от такого, а оказалось, что 
нет :( Подробности позже. 
Comment 3 Andrew Kornilov 2006-04-19 16:53:12 MSD
В общем, нужно тестировать, такие ситуации еще вылезут. Я думал даже отдельные 
правила сделать для всех отрицаний, потому как iptables непредсказуемо себя 
ведет. В данном случае, если не указать --protocol tcp, то он вообще падает с 
Unknown error 42949672, так что убирают -mtcp. При этом обязательно нужно будет 
указывать протокол tcp в правиле.   
Comment 4 Denis Ovsienko 2006-04-19 21:55:09 MSD
RESOLVED FIXED?
Если ты об explicit match, то я думал, что неопределённостей нет. И сам не
встречал пока. 
Comment 5 Andrew Kornilov 2006-04-19 22:10:03 MSD
Да проблема в том, что получается: 
! -mtcp --syn 
а нужно: 
-mtcp ! --syn 
 
Для этого и хотел написать еще отрицания для всего. Чтобы правило not syn 
преобразовывалось в это самое -mtcp ! --syn 
Попробовал ! --syn при отсутствующем --protocol TCP и iptables падает, я выше 
писал. Поэтому остался одни правильный вариант, когда нужно указывать протокол 
и когда нет -mtcp. То бишь, сейчас: drop tcp not tcp-syn будет 
преобразовываться в -j DROP --protocol TCP ! --syn и будет работать :)