Bug 9424 - некоректное преобразование флага tcp-syn из читабельного формата в формат iptables
: некоректное преобразование флага tcp-syn из читабельного формата в формат ipt...
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/etcnet)
: unstable
: all Linux
: P2 normal
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2006-04-18 00:44 by
Modified: 2006-09-17 10:58 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


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