Por que a opção 'nomatch' do ipset não funciona neste caso?

3

Estou usando o ipset 6.23-2 no Debian Jessie. Eu criei um hash: net set para e uma regra iptables para eliminar todo o tráfego de endereços no conjunto.

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

Eu usei a opção 'nomatch' para adicionar a rede dos meus servidores internos a ela. Eu assumi que funcionaria como uma exclusão, então é basicamente à prova de idiotas e eu não me isolo acidentalmente dos meus servidores (ou de um dos meus colegas).

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"

No entanto, ainda corresponde quando adiciono um IP específico, como dentro da sub-rede, por ex. 10.50.7.30 para o conjunto e descarta todo o tráfego daquele 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"

Eu suponho que estou errado sobre a maneira como o 'nomatch' funciona?

Isso só funciona para excluir sub-redes menores de uma maior?

Existe alguma maneira de resolver isso sem criar conjuntos adicionais?

    
por Kanra 15.09.2017 / 08:55

1 resposta

0

A documentação do ipset diz o seguinte (1):

From the set netfilter match point of view the searching for a match always starts from the smallest size of netblock (most specific prefix) to the largest one (least specific prefix) added to the set.

Então, ele está começando a procurar o host individual e a corresponder, porque o host é o bloco de rede menor que a sub-rede.

1 - link

    
por 05.01.2018 / 06:10