taap.digitalferramentas para engenharia de redes

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.

Parte de trás de um patch panel de rede com cabos conectados
Cada porta do patch panel leva a uma VLAN ou servidor; a wildcard decide quais endereços a regra alcança. Foto: Lee Lawson / Unsplash

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.

Servidor em sala de equipamentos com luzes de status
A ACL dos servidores libera só o bloco certo, e não milhões de endereços a mais. Foto: Tyler / Unsplash

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:

  1. Converta prefixo em wildcard com 255 menos cada octeto da máscara.
  2. Confira que o endereço é o início do bloco.
  3. Conte os endereços casados: 2 elevado ao número de bits 1 da wildcard.
  4. Num resumo, confirme que o número de redes é potência de 2 e que o início está alinhado.
  5. Lembre do bloqueio implícito no fim da ACL.
  6. 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.
Abrir Wildcard com este caso →

Fontes e referências

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.

Outros guias