Olá Pessoal.
Este artigo foi escrito para aqueles que já têm familiaridade com cálculos de sub-redes e compreendem bem a dinâmica de operação da máscara de rede. A wildcard mask (máscara coringa) é um recurso bastante comum na configuração de roteadores e outros equipamentos, principalmente no que diz respeito à escrita de listas de controle de acesso (ACL) e até mesmo à configuração de alguns protocolos de roteamento dinâmico. Essa semana um aluno me pediu para escrever um artigo no blog explicando o conceito de wildcard mask, além daquele clichê simplista de que elas são o inverso da máscara de rede. Pois bem, então vamos à explicação...
Vamos começar com uma resposta objetiva para a seguinte pergunta:
Por que wildcard mask ao invés da tradicional máscara de rede?
R: Porque a wildcard mask oferece maior flexibilidade.
Eis então que surge a segunda pergunta:
Por que a wildcard mask oferece maior flexibilidade?
Essa resposta demanda um pouco de discussão...
É importante ter em mente que a máscara de rede e a máscara coringa não estão diretamente relacionadas uma com a outra. Lembrem-se que o propósito da máscara de rede é estabelecer uma fronteira entre aquilo que chamamos de prefixo de rede (identificador da rede) e o sufixo de host (identifcador de um host na rede), necessariamente nessa ordem (contíguas). Ou seja, na estrutura da máscara de rede há uma sequência ininterrupta de bits 1 (prefixo) e, depois, uma sequência ininterrupta de bits 0, sem que haja intercalação de bits 0s e 1s. Por outro lado a wildcard mask não tem essa estrutura rígida e os bits são tratados individualmente, por isso é possível ter máscaras coringas que intercalam bits 0s e 1s.
Na máscara de rede tradicional os bits sigificam:
- 1 = REDE
- 0 = HOST
Na wildcard mask os bits siginificam:
- 1 = o bit equivalente é irrelevante e pode assumir qualquer valor
- 0 = o bit equivalente DEVE ser igual
Hum, então é daí que vem a flexibilidade das máscaras coringas!!!??? Parece que conceitualmente as coisas estão ficando um pouco mais claras, mas vamos continuar desenvolvendo esse raciocínio a partir de um exemplo prático da maior flexibilidade das máscaras coringas. Um exemplo clássico diz respeito à máscara coringa 0.0.0.254 para fins de correspondência somente daqueles endereços IP com valores pares ou ímpares no último octeto de redes /24.
Tomando o endereço IP 192.168.0.10 (par) como referência, em binário ele equivale a:
> 11000000.10101000.00000000.00001010
A wildcard mask 0.0.0.254 em binário equivale a:
> 00000000.00000000.00000000.11111110
O valor 0 na máscara coringa (destaque em vermelho) indica que o respectivo bit posicional de um endereço IP qualquer deve ser equivalente ao endereço de referência, enquanto que o valor 1 indica que os bits posicionais não interessam e podem assumir qualquer valor.
Todos os endereços IPs que têm o último octeto ímpar terminam com o bit 1, enquanto que todos os endereços IP que são pares terminam em 0. Logo, se o endereço IP associado à máscara coringa é par (192.168.0.10), então somente haverá correspondência com outros endereços pares, quaisquer que sejam. Por exemplo, 192.168.0.22 equivale a 11000000.10101000.00000000.00010110. Reparem nas linhas abaixo como fica a comparação entre o endereço de referência, o endereço a ser testado e a máscara coringa (com destaque em vermelho nos bits "travados"):
> 11000000.10101000.00000000.00001010 = IP 192.168.0.10 (referência)
> 11000000.10101000.00000000.00010110 = IP 192.168.0.22
> 00000000.00000000.00000000.11111110 = Wildcard Mask
Os três primeiros octetos tiveram uma correspondência porque todos os primeiros 24 bits dos endereços 192.168.0.10 e 192.168.0.22 são iguais, equivalentes a 192.168.0 (prefixo /24). O último octeto teve uma correspondência porque o último bit dos endereços 192.168.0.10 e 192.168.0.22 é igual, equivalente a 0 (ambos são pares).
Agora tomemos um exemplo contrário, ou seja, o IP 192.168.0.33 (ímpar) que em binário é 11000000.10101000.00000000.00100001. Ao comparar esse endereço com o endereço de referência (192.168.0.10) e sua respectiva máscara coringa fica evidente que não há correspondência no último bit, logo o endereço 192.168.0.33 é rejeitado.
> 11000000.10101000.00000000.00001010 = IP 192.168.0.10 (referência)
> 11000000.10101000.00000000.00100001 = IP 192.168.0.33
> 00000000.00000000.00000000.11111110 = Wildcard Mask
Os três primeiros octetos tiveram uma correspondência porque todos os primeiros 24 bits dos endereços 192.168.0.10 e 192.168.0.33 são iguais, equivalentes a 192.168.0. O último octeto não teve uma correspondência porque o último bit do endereço 192.168.0.10 é 0(2), enquanto que o último bit do endereço 192.168.0.33 é 1(2).
Assim é possível utilizar a wildcard mask 0.0.0.254 associada com um endereço par para permitir apenas endereços pares, enquanto que a associação dessa máscara coringa com um endereço ímpar implica em correspondência apenas com endereços ímpares. Esse foi apenas um exemplo frequentemente utilizado para demonstrar a flexibilidade da wildcard mask.
Uma recomendação para trabalhar rapidamente com as máscaras coringas no cotidiano operacional é pensar nela como o "inverso" da máscara de rede. Por exemplo, os valores das wildcard masks associados com as máscaras padrões são:
Decorar esses valores associados com as máscaras padrões não é suficiente para ajudá-lo em ambientes onde existem sub-redes que não seguem as classes padrões (classless). Quando o ambiente possui sub-redes que utilizam máscaras de rede que não sejam as tradicionais /8, /16 ou /24, a máscara coringa pode ser obtida por meio da subtração da máscara em uso na sub-rede do valor 255.255.255.255. Por exemplo, uma rede /26 (255.255.255.192) tem a wildcard 0.0.0.63 (exemplo a), enquanto que uma rede /30 (255.255.255.252) tem a wildcard 0.0.0.3 (exemplo b).
Uma recomendação para trabalhar rapidamente com as máscaras coringas no cotidiano operacional é pensar nela como o "inverso" da máscara de rede. Por exemplo, os valores das wildcard masks associados com as máscaras padrões são:
- 255.0.0.0 (/08) = WC 0.255.255.255
- 255.255.0.0 (/16) = WC 0.0.255.255
- 255.255.255.0 (/24) = WC 0.0.0.255
Decorar esses valores associados com as máscaras padrões não é suficiente para ajudá-lo em ambientes onde existem sub-redes que não seguem as classes padrões (classless). Quando o ambiente possui sub-redes que utilizam máscaras de rede que não sejam as tradicionais /8, /16 ou /24, a máscara coringa pode ser obtida por meio da subtração da máscara em uso na sub-rede do valor 255.255.255.255. Por exemplo, uma rede /26 (255.255.255.192) tem a wildcard 0.0.0.63 (exemplo a), enquanto que uma rede /30 (255.255.255.252) tem a wildcard 0.0.0.3 (exemplo b).
-------------------------------------------------------
a) Exemplo: Sub-Rede /26 | b) Exemplo: Sub-Rede /30
---------------------------|---------------------------
255.255.255.255 | 255.255.255.255
(-) | (-)
255.255.255.192 | 255.255.255.252
_______________ (=) | _______________ (=)
0. 0. 0. 63 | 0. 0. 0. 3
-------------------------------------------------------
Ainda em dúvida? Continue estudando e praticando...
Samuel.