Quando você precisa disso
Muitos fornecedores publicam suas faixas como intervalos (203.0.113.10 – 203.0.113.100), mas ACLs de roteador, prefix-lists, security groups de nuvem e muitos firewalls só aceitam prefixos. Converter à mão é sujeito a erro; um bloco errado libera ou bloqueia endereços que não deveria.
O algoritmo guloso
Partindo do endereço inicial, a ferramenta escolhe o maior bloco que:
- começa exatamente no endereço atual (o endereço é múltiplo do tamanho do bloco), e
- não ultrapassa o endereço final.
Registra o bloco, avança para o endereço seguinte ao fim dele e repete. O resultado é a menor quantidade possível de prefixos que representa o intervalo exatamente.
Exemplo: 192.168.1.10 a 192.168.1.100
São 91 endereços. Como 10 não é múltiplo de 4, o primeiro bloco só pode ter 2 endereços; a partir de 16 cabem blocos maiores.
| Bloco | Faixa | Endereços |
|---|---|---|
| 192.168.1.10/31 | .10 – .11 | 2 |
| 192.168.1.12/30 | .12 – .15 | 4 |
| 192.168.1.16/28 | .16 – .31 | 16 |
| 192.168.1.32/27 | .32 – .63 | 32 |
| 192.168.1.64/27 | .64 – .95 | 32 |
| 192.168.1.96/30 | .96 – .99 | 4 |
| 192.168.1.100/32 | .100 | 1 |
Sete blocos, 91 endereços, nenhum a mais. Se pudesse aceitar uma pequena sobrecobertura, 192.168.1.0/25 resolveria em uma linha, mas incluiria .0 a .9 e .101 a .127.
Usando o resultado
! Cisco IOS: prefix-list ip prefix-list PARCEIRO seq 10 permit 192.168.1.10/31 ip prefix-list PARCEIRO seq 20 permit 192.168.1.12/30 ip prefix-list PARCEIRO seq 30 permit 192.168.1.16/28 # Linux: ipset com hash:net ipset create parceiro hash:net ipset add parceiro 192.168.1.16/28 # MikroTik aceita faixa diretamente em address-list /ip firewall address-list add list=parceiro address=192.168.1.10-192.168.1.100
Dicas
- Intervalos com início e fim alinhados (início múltiplo de uma potência de 2 e fim no último endereço do bloco) geram um único prefixo.
- O pior caso é um intervalo que começa em um endereço ímpar e termina em um par, como .1 a .254: gera 14 blocos.
- Para ACLs Cisco com wildcard, converta cada prefixo com a calculadora de wildcard.
- Em listas grandes de faixas (por exemplo, todos os blocos de um país ou de um provedor de nuvem), agregue o resultado com a ferramenta de sumarização só se a sobrecobertura for aceitável; caso contrário, mantenha os blocos exatos.
Por que não usar o bloco maior
Arredondar o intervalo para um único prefixo é tentador, mas em regras de segurança cada endereço a mais é uma permissão que ninguém pediu. Em prefix-lists de BGP, um bloco mais largo pode aceitar anúncios indevidos de um cliente ou parceiro. O custo de alguns blocos extras na configuração é pequeno comparado ao de uma regra mais aberta do que o necessário, e auditorias de firewall costumam apontar exatamente esse tipo de diferença.