Почему в этом случае не работает опция "nomatch" ipset?

Я использую ipset 6.23-2 в Debian Jessie. Я создал набор hash: net для и правило iptables, чтобы отбросить весь трафик для адресов в наборе.

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
DROP       all  --  anywhere             anywhere             match-set Example-Set src

Я использовал параметр «nomatch», чтобы добавить к нему сеть моих внутренних серверов. Я предполагал, что это будет работать как исключение, так что это в основном защищено от дурака, и я случайно не заблокирую себя на своих серверах (или от одного из моих коллег).

Name: Example-Set
Type: hash:net
Revision: 6
Header: family inet hashsize 1024 maxelem 65536 comment
Size in memory: 3424
References: 1
Members:
10.50.7.0/24 nomatch comment "# 2017-09-14"

Тем не менее, он все равно совпадает, когда я добавляю определенный IP, например подсеть, например, 10.50.7.30, в набор и отбрасывает весь трафик с этого IP.

Name: Example-Set
Type: hash:net
Revision: 7
Header: family inet hashsize 1024 maxelem 65536 comment
Size in memory: 3424
References: 1
Members:
10.50.7.0/24 nomatch comment "# 2017-09-14"
10.50.7.21 comment "# 2017-09-14"

Я полагаю, что ошибаюсь насчет способа 'nomatch' работает?

Это работает только для исключения меньших подсетей из более крупной?

Есть ли способ решить эту проблему без создания дополнительных наборов?

3
задан 15 September 2017 в 09:55
1 ответ

В документации ipset говорится следующее (1):

С точки зрения соответствия set netfilter поиск совпадения всегда начинается с наименьшего размера сетевого блока (наиболее точный префикс) до самый большой (наименее конкретный префикс), добавленный к набору.

Итак, он начинает поиск отдельного хоста и сопоставления с ним, потому что хост - это меньший сетевой блок, чем подсеть.

1 - http://ipset.netfilter.org/ipset. man.html

0
ответ дан 3 December 2019 в 07:53

Теги

Похожие вопросы