Lista CIDR do iptables condensado?

3

Eu tenho uma lista de cerca de 170.000 IPs que eu gostaria de bloquear (basicamente todos os IP fora dos EUA e Canadá). A lista está no formato CIDR.

Existe algum software que eu possa canalizar e obter a forma mais condensada dele?

Eu gostaria de inserir isso no iptables, mas ouvi que o limite prático para o iptables é de cerca de 25.000

Um exemplo do arquivo de entrada,

1.0.0.0/24
1.0.1.0/24
1.0.2.0/23
1.0.4.0/22
1.0.8.0/21
1.0.16.0/20
1.0.32.0/19
1.0.64.0/18
1.0.128.0/17
1.1.0.0/24

e apenas algumas conversões manuais 1.0.1.0/24 e 1.0.0.0/24 poderiam ser resumidos como 1.0.0.0/23 que quando unida com 1.0.2.0/23 poderia ser 1.0.0.0/22 que quando unida com 1.0.4.0/22 seria 1.0.0.0/21 e assim por diante

Então condensando manualmente isso seria

1.0.0.0/16
1.1.0.0/24
    
por Tim Holum 26.04.2017 / 16:48

2 respostas

3

Encontrei uma ferramenta que faz o link

cat unopt.txt | ./cidrmerge > optimized.txt
    
por 26.04.2017 / 17:43
2

Olhe para os ipsets. Você pode colocar tudo isso em uma regra que possa ser atualizada dinamicamente sem precisar recarregar as regras. Eu tive um sucesso muito bom em usar isso para lidar com coisas assim. Aqui está um link para a página de manual para ipsets.

É muito simples de usar uma vez instalado:

ipset create <nameofset> <typeofset>

No seu caso:

ipset create blockset hash:net

Em seguida, adicione sub-redes ao conjunto:

ipset -A blockset 1.1.1.1/24

Em seguida, adicione as regras ao iptables para fazer o que quiser com o tráfego.

iptables -A INPUT -m set --set blockset src -j DROP

Apenas um exemplo. Existem muitas coisas que você pode fazer com os ipsets.

    
por 19.05.2017 / 14:20