Guia prático
Máscara curinga (wildcard) em ACL e OSPF: a conta certa
A wildcard parece a máscara de cabeça para baixo, e é quase isso. Este guia resolve um caso de filial: a ACL que libera só os servidores, o OSPF com as VLANs numa linha e os erros que fazem uma regra liberar milhões de endereços.
O caso: uma filial usa o bloco 10.10.16.0 a 10.10.23.255 para 8 VLANs /24, tem os servidores em 10.10.20.64/26 e liga o roteador à matriz por um link 10.10.255.0/30. O técnico precisa escrever uma ACL que libere só os servidores e configurar o OSPF para anunciar as VLANs e o link. Os endereços são um exemplo, não um caso real.
Resposta curta: a máscara curinga (wildcard) é o inverso da máscara: 255 menos cada octeto. Os servidores ficam em 10.10.20.64 0.0.0.63 (64 endereços). As 8 VLANs cabem numa linha só do OSPF, 10.10.16.0 0.0.7.255, porque formam um /21. O link usa 0.0.0.3.
O que a wildcard faz
A máscara de sub-rede diz quais bits são da rede. A wildcard diz quais bits o equipamento deve conferir e quais pode ignorar. Bit 0 na wildcard quer dizer "confira este bit". Bit 1 quer dizer "tanto faz".
Por isso a wildcard aparece em listas de acesso (ACL) e no comando network do OSPF em equipamentos Cisco: ela descreve um conjunto de endereços. A documentação da Cisco sobre ACLs mostra a regra prática: subtraia a máscara de 255.255.255.255. O resultado é a wildcard.
Quando a wildcard é contígua (zeros à esquerda, uns à direita), ela equivale a um prefixo CIDR. O /26 vira 0.0.0.63, e a linha da ACL casa exatamente os 64 endereços do bloco.
Passo 1: converta o prefixo em máscara e wildcard
Pegue o prefixo, escreva a máscara e subtraia cada octeto de 255.
Para os servidores, /26:
- máscara: 255.255.255.192
- último octeto: 255 − 192 = 63
- wildcard: 0.0.0.63
- endereços no bloco: 2 elevado a (32 − 26) = 64
Um atalho: a wildcard de um bloco é o tamanho do bloco menos 1, no octeto onde a máscara "quebra". Bloco de 64 endereços, wildcard terminada em 63.
A tabela abaixo serve de cola para os prefixos mais usados:
| Prefixo | Máscara | Wildcard | Endereços no bloco |
|---|---|---|---|
| /16 | 255.255.0.0 | 0.0.255.255 | 65.536 |
| /20 | 255.255.240.0 | 0.0.15.255 | 4.096 |
| /21 | 255.255.248.0 | 0.0.7.255 | 2.048 |
| /22 | 255.255.252.0 | 0.0.3.255 | 1.024 |
| /23 | 255.255.254.0 | 0.0.1.255 | 512 |
| /24 | 255.255.255.0 | 0.0.0.255 | 256 |
| /25 | 255.255.255.128 | 0.0.0.127 | 128 |
| /26 | 255.255.255.192 | 0.0.0.63 | 64 |
| /27 | 255.255.255.224 | 0.0.0.31 | 32 |
| /28 | 255.255.255.240 | 0.0.0.15 | 16 |
| /29 | 255.255.255.248 | 0.0.0.7 | 8 |
| /30 | 255.255.255.252 | 0.0.0.3 | 4 |
| /31 | 255.255.255.254 | 0.0.0.1 | 2 |
| /32 | 255.255.255.255 | 0.0.0.0 | 1 |
Passo 2: use o endereço de início do bloco
A wildcard só funciona bem com o endereço certo. O endereço da linha precisa ser o início do bloco, aquele em que os bits "tanto faz" valem zero.
Exemplo de erro: alguém quer liberar "a partir do servidor 10.10.20.70" e escreve 10.10.20.70 0.0.0.63. Os seis bits finais são ignorados, então a regra não começa no .70. A conta:
- 10.10.20.70 tem último octeto 70
- 70 ÷ 64 = 1,094, arredondado para baixo = 1
- 1 × 64 = 64
- a regra casa de 10.10.20.64 a 10.10.20.127
O resultado é o mesmo bloco dos servidores. O equipamento pode aceitar a linha, corrigir o endereço ou recusar, conforme a plataforma. Escreva sempre o início do bloco para a configuração dizer o que ela faz.
Passo 3: escreva a ACL dos servidores
Com endereço e wildcard certos, a linha no estilo Cisco IOS fica assim:
| Linha | O que casa |
|---|---|
| access-list 10 permit 10.10.20.64 0.0.0.63 | 10.10.20.64 a 10.10.20.127 (64 endereços) |
| access-list 10 permit 10.10.20.74 0.0.0.0 | só o 10.10.20.74 (1 endereço) |
| access-list 10 permit any | todos os endereços, o mesmo que 0.0.0.0 255.255.255.255 |
A segunda linha mostra o host único: wildcard 0.0.0.0, todos os bits conferidos. Muitos sistemas aceitam a palavra host no lugar dela. A terceira é só referência: numa ACL que deve liberar apenas os servidores, ela não entra.
Lembre que toda ACL termina com um bloqueio implícito. O que não casou com nenhuma linha é descartado.
Passo 4: resuma as VLANs numa linha do OSPF
O comando network do OSPF usa endereço e wildcard para achar as interfaces. Toda interface cujo endereço cair no conjunto entra no OSPF, na área indicada.
As 8 VLANs vão de 10.10.16.0 a 10.10.23.0, todas /24. Dá para cobrir todas com uma linha se elas formarem um bloco alinhado:
- 8 redes = 2 elevado a 3, então o resumo perde 3 bits: /24 − 3 = /21
- o terceiro octeto inicial, 16, é múltiplo de 8: 16 ÷ 8 = 2, sem resto
- máscara do /21: 255.255.248.0; terceiro octeto da wildcard: 255 − 248 = 7
- wildcard: 0.0.7.255, com 2.048 endereços
Se o terceiro octeto inicial não fosse múltiplo de 8, o bloco não estaria alinhado. Aí uma linha só pegaria redes a mais ou a menos, e o certo seria usar duas ou mais linhas.
O link com a matriz é um /30: wildcard 0.0.0.3, 4 endereços.
| Objetivo | Linha no OSPF | Endereços cobertos |
|---|---|---|
| As 8 VLANs | network 10.10.16.0 0.0.7.255 area 0 | 10.10.16.0 a 10.10.23.255 (2.048) |
| Link com a matriz | network 10.10.255.0 0.0.0.3 area 0 | 10.10.255.0 a 10.10.255.3 (4) |
| Só a interface do link | network 10.10.255.1 0.0.0.0 area 0 | 10.10.255.1 (1) |
Sem o resumo, seriam 8 linhas para as VLANs, mais a do link: 9 linhas no total, contra 2. A terceira linha é uma alternativa à segunda. Com wildcard 0.0.0.0, o OSPF entra só na interface com aquele endereço exato. Esse estilo evita que uma interface nova entre no OSPF por acaso.
Atenção: a linha network não resume rotas no anúncio. Ela só escolhe as interfaces. As 8 redes /24 continuam sendo anunciadas uma a uma. Resumo de rota no OSPF é outra configuração, feita na borda da área.
Passo 5: wildcard não contígua, quando faz sentido
A wildcard não precisa ser uma sequência de uns no final. Qualquer bit pode ser "tanto faz". Isso permite casar endereços espalhados com uma linha só.
Exemplo: liberar só os gateways das 8 VLANs, o endereço .1 de cada uma. Eles mudam apenas nos 3 bits finais do terceiro octeto. A wildcard fica:
- terceiro octeto: 8 − 1 = 7
- quarto octeto: 0, porque o .1 precisa casar exato
- linha: 10.10.16.1 0.0.7.0
- endereços casados: 2 elevado a 3 = 8, de 10.10.16.1 a 10.10.23.1, de 256 em 256
Wildcard não contígua não tem equivalente em CIDR, e nem todo equipamento aceita. Firewalls e sistemas que pedem prefixo costumam recusar. Use com comentário na configuração, porque quem lê depois raramente entende de primeira.
Erros comuns
| Erro | Linha escrita | O que realmente casa |
|---|---|---|
| Máscara no lugar da wildcard na ACL | 10.10.16.0 255.255.255.0 | qualquer endereço terminado em .0: 16.777.216 endereços |
| Subtrair de 256 em vez de 255 | 10.10.16.0 0.0.8.255 | 10.10.16.0/24 e 10.10.24.0/24: 512 endereços, não 2.048 |
| Endereço fora do início do bloco | 10.10.20.70 0.0.0.63 | 10.10.20.64 a 10.10.20.127, não "a partir do .70" |
| Resumo de bloco desalinhado | 10.10.18.0 0.0.7.255 | o mesmo /21 de 10.10.16.0, com redes que o técnico não pretendia |
A primeira linha da tabela é o erro mais caro. Com 255.255.255.0 como wildcard, só o último octeto é conferido. A regra libera 16.777.216 endereços em vez de 256.
Checklist antes de aplicar:
- Converta prefixo em wildcard com 255 menos cada octeto da máscara.
- Confira que o endereço é o início do bloco.
- Conte os endereços casados: 2 elevado ao número de bits 1 da wildcard.
- Num resumo, confirme que o número de redes é potência de 2 e que o início está alinhado.
- Lembre do bloqueio implícito no fim da ACL.
- Depois de aplicar, confira os contadores de acerto de cada linha da ACL e as interfaces que entraram no OSPF.
Perguntas frequentes
Qual a wildcard de um /27?
A máscara é 255.255.255.224. Subtraindo de 255, a wildcard é 0.0.0.31. O bloco tem 32 endereços.
Qual a wildcard de 255.255.252.0?
É um /22. A wildcard é 0.0.3.255, e a linha casa 1.024 endereços.
Qual a diferença entre 0.0.0.255 e 255.255.255.0 numa ACL?
Com 0.0.0.255, a ACL confere os três primeiros octetos e casa uma rede /24 inteira: 256 endereços. Com 255.255.255.0, confere só o último octeto e casa 16.777.216 endereços espalhados pela internet inteira.
Quantas linhas de OSPF preciso para 10.10.16.0 a 10.10.23.0?
Uma: network 10.10.16.0 0.0.7.255 area 0. As 8 redes /24 formam um /21 alinhado. Sem resumo, seriam 8 linhas.
Qual a wildcard de um link /31?
0.0.0.1, que casa 2 endereços. O RFC 3021 permite usar os dois como endereços de host em enlaces ponto a ponto, então a linha cobre as duas pontas do link.
Como saber quantos endereços uma wildcard casa?
Conte os bits 1 dela e eleve 2 a esse número. 0.0.7.255 tem 11 bits 1: são 2.048 endereços. 0.0.7.0 tem 3 bits 1: são 8.
Converta qualquer prefixo ou máscara na calculadora de wildcard e confira o bloco antes de colar a linha no equipamento.
Leia também: Wildcard em ACL: liberar uma faixa de filiais em uma linha
wildcardFaça a conta com os seus númerosMáscara ou prefixo para wildcard, com as linhas de ACL e OSPF prontas.Fontes e referências
- Cisco: Configurar e filtrar listas de acesso IP (documento 23602, em português)Regra da máscara inversa (255.255.255.255 menos a máscara), host com 0.0.0.0, any e resumo de redes numa entrada de ACL
- RFC 4632: Classless Inter-domain Routing (CIDR)Notação de prefixo e alinhamento de blocos em potências de 2, base do resumo das VLANs
- RFC 950: Internet Standard Subnetting ProcedureMáscara de sub-rede e endereço de rede usados na conversão para wildcard
- RFC 3021: Using 31-Bit Prefixes on IPv4 Point-to-Point LinksUso dos dois endereços do /31 em enlace ponto a ponto, citado na pergunta frequente
- taap.digital: Calculadora de wildcardCalculadora para converter prefixo ou máscara em wildcard e conferir o bloco
Conferimos cada afirmação técnica nas fontes acima. Os números foram calculados com as mesmas fórmulas das ferramentas do site. Veja a metodologia e a lista completa de fontes.