LINUX.ORG.RU
ФорумAdmin

iptables не принимает ipset с логическим отрицанием

 


0

2

Собственно надо блокированных средиректить на опр. страницу. Те кого iptables пропускает сидят в хеш таблицах accept, open_static Соответственно логика проста, редирект всех кто НЕ в этих вписках.

Написал такие правила iptables -t nat -A PREROUTING -m set --set ! accept src -p tcp -m multiport --dport 80 -j DNAT --to-destination 192.168.253.131:80 -v iptables -t nat -A PREROUTING -m set --set ! static_open src -p tcp -m multiport --dport 80 -j DNAT --to-destination 192.168.253.131:80 -v

iptables -t nat -A POSTROUTING -m set --set ! accept src -p tcp --dst 192.168.253.131 --dport 80 -j SNAT --to-source 192.168.251.125 -v iptables -t nat -A POSTROUTING -m set --set ! static_open src -p tcp --dst 192.168.253.131 --dport 80 -j SNAT --to-source 192.168.251.125

ПРавила проглатываются и вносятся в таблицу. ПРоблема... ЗНАК ! просто тупо игнорируется. ПРавила применяются как будто его нет. ТО есть к наборам accept, open_static

Система CentOS 5.8


IMHO у тебя какая-то очень старая версия iptables/ipset судя по тому, что оно не ругается на "--set",

"iptables -m set --help" 

set match options:
 [!] --match-set name flags
                 'name' is the set name from to match,
                 'flags' are the comma separated list of
                 'src' and 'dst' specifications.

Я бы попробовал поставить отрицание перед "--set"

vel ★★★★★
()
Ответ на: комментарий от anonymous

я пробовал ставить в разные места ! результата это не меняло. последний вариант как раз был перед set.

Xan
() автор топика
Ответ на: комментарий от vel

Это уже стоит и работает. Но у меня ним какие то непонятки. и непонятно стоит ли обновлять ... таблицы строятся скриптами и там как видно еще и ключи разные бывают.

Xan
() автор топика
Ответ на: комментарий от Xan

ipset устаканился только в этом году. До этого было много революционных изменений. На сколько эти изменения отслеживает centos с допотопным ядром 2.6.18 и раритетным iptables - трудно сказать.

vel ★★★★★
()
Ответ на: комментарий от vel

я вообще не понял пока плюса ipset.. ну будет много правил без него. и что ? смотреть неудобно ? или еще какой то подвох?

Xan
() автор топика
Ответ на: комментарий от Xan

Плюсы есть и большие.

1) в iptables просмотр правил линейный - т.е. медленный. ipset - это либо хеш, либо дерево, либо проверка элемента массива.

2) изменение iptables очень затратная операция ( по памяти, по cpu и блокировкам) по сравнению с ipset. Плюс к этому в ipset можно делать swap наборов - т.е. быстрая и атомарная замена набора.

3) Если один и тот же список сетей/портов проверяется в нескольких цепочках, то ipset позволит задать их 1 раз. Да и исправлять будет проще.

Есть возможность задать таймаут для элемента набора.

большой список однотипных правил не улучшает удобства просмотра.

vel ★★★★★
()
Ответ на: комментарий от vel

1. В моем представлении когда Iptables берет какой то набор, то все равно параметры пакета сравниваются с членами набора. То есть где то внутри будет пошаговое сравнение с каждым членом набора. И как тут скорость то будет ?

Хеш ... это строка на выходе хеш функции ? от всего набора? не вяжется у меня это как то. МОжет только если хеш каждого члена набора делать.

2. КОмпы ща мощные. Реально заметно будет тормозить на каком кол-ве правил ?

Что я обнаружил в плюсе, что надо лишь внести элемент в набор, чтобы оно подействовало. А не приходится перегружать правило. А если набор в куче правил, которые надо перегрузить ? гемор... пока откопал такой вот +

Xan
() автор топика
Ответ на: комментарий от Xan

1) нет. Прочитай отличия поиска по бинарному дереву или хеш-таблицам от линейного просмотра. посмотри на разницу в производительности http://workshop.netfilter.org/2013/wiki/images/a/ab/Jozsef_Kadlecsik_ipset-os...

2) если бы ты знал как устроена внутри iptables - ты бы так не говорил. Цепочка меняется целиком т.к. она распологатся в неприрывном участке памяти.

Если правила изменяются редко, то пофиг на п.2

ipset еще позволяет динамически вносить данные в наборы через "-j SET --add-set|--del-set"

vel ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.