CIDR e Máscaras de tamanho variável

Muito do que vimos até aqui já foi abordado nos capítulos anteriores. Optei por começar com um resumo geral para chamá-lo de volta ao tema, já que esta questão dos endereçamentos é um assunto complicado. Vamos então às novidades.

A divisão tradicional, com as classes A, B e C de endereços IP fazia com que um grande número de endereços fossem desperdiçados. Um provedor de acesso que precisasse de 10.000 endereços IP, por exemplo, precisaria ou utilizar uma faixa de endereços classe B inteira (65 mil endereços), o que geraria um grande desperdício, ou utilizar 40 faixas de endereços classe C separadas, o que complicaria a configuração. Existia ainda o problema com as faixas de endereços classe A, que geravam um brutal desperdício de endereços, já que nenhuma empresa ou organização sozinha chega a utilizar 16 milhões de endereços IP.

A solução para o problema foi a implantação do sistema CIDR (abreviação de “Classless Inter-Domain Routing”, que pronunciamos como “cider”), a partir de 1993 (leia o RCF no http://tools.ietf.org/html/rfc1519).

Entender as classes de endereços A, B e C é importante para compreender o uso das máscaras de sub-rede e por isso elas ainda são muito estudadas, mas é importante ter em mente que, na prática, elas são uma designação obsoleta. Naturalmente, ainda existem muitas redes que utilizam faixas de endereços de classe A, B e C (já que as faixas alocadas no passado não podem ser simplesmente revogadas de uma hora para a outra), mas as faixas alocadas atualmente utilizam quase sempre o novo sistema.

No CIDR são utilizadas máscaras de tamanho variável (o termo em inglês é VLSM, ou Variable-Length Subnet Mask), que permitem uma flexibilidade muito maior na criação das faixas de endereços. Se são necessários apenas 1000 endereços, por exemplo, poderia ser usada uma máscara /22 (que permite o uso de 1022 endereços), em vez de uma faixa de classe B inteira, como seria necessário antigamente.

Outra mudança é que as faixas de endereços não precisam mais iniciar com determinados números. Uma faixa com máscara /24 (equivalente a uma faixa de endereços de classe C) pode começar com qualquer dígito e não apenas com de 192 a 223.

O CIDR permite também que várias faixas de endereços contínuas sejam agrupadas em faixas maiores, de forma a simplificar a configuração. É possível agrupar 8 faixas de endereços com máscara 255.255.255.0 (classe C) contínuas em uma única faixa com máscara /21, por exemplo, que oferece um total de 2045 endereços utilizáveis (descontando o endereço da rede, endereço de broadcast e o endereço do gateway).

As faixas de endereços são originalmente atribuídas pela IANA às entidades regionais. Elas dividem os endereços em faixas menores e as atribuem aos carriers (as operadoras responsáveis pelos links), empresas de hospedagem, provedores de acesso e outras instituições. Estas, por sua vez, quebram os endereços em faixas ainda menores, que são atribuídas aos consumidores finais.

Revisando, a máscara de subrede determina qual parte do endereço IP é usada para endereçar a rede e qual é usada para endereçar os hosts dentro dela. No endereço 200.232.211.54, com máscara 255.255.255.0 (/24), por exemplo, os primeiros 24 bits (200.232.211.) endereçam a rede e os 8 últimos (54) endereçam o host.

Quando usamos máscaras simples, podemos trabalhar com os endereços em decimais, pois são sempre reservados 1, 2 ou 3 octetos inteiros para a rede e o que sobra fica reservado ao host. Esta é a idéia usada nas faixas de endereços classe A, B e C.

Quando falamos em máscaras de tamanho variável, entretanto, precisamos começar a trabalhar com endereços binários, pois a divisão pode ser feita em qualquer ponto. Imagine, por exemplo, o endereço “72.232.35.108”. Originalmente, ele seria um endereço de classe A e utilizaria máscara “255.0.0.0”. Mas, utilizando máscaras de tamanho variável, ele poderia utilizar a máscara “255.255.255.248”, por exemplo.

Nesse caso, teríamos 29 bits do endereço dedicados à endereçar a rede e apenas os 3 últimos bits destinados ao host. Convertendo o endereço para binário teríamos o endereço “01001000.11101000.01100000.01101100”, onde o “01001000.11101000.01100000.01101” é o endereço da rede e o “100” é o endereço do host dentro dela. Como temos 29 bits dedicados à rede, é comum o uso de um “/29” como máscara, no lugar de “255.255.255.248”.

À primeira vista, esse conceito parece bastante complicado, mas na prática não é tão difícil assim. A primeira coisa a ter em mente é que as máscaras de tamanho variável só fazem sentido quando você converte o endereço IP para binário.

Para converter um número decimal em um número binário, você pode usar a calculadora do Windows ou o Kcalc no Linux. Configure a calculadora para o modo científico (exibir/científica) e verá que do lado esquerdo aparecerá um menu de seleção permitindo (entre outras opções) escolher entre decimal (dec) e binário (bin).

Configure a calculadora para binário e digite o número 11111111, mude a opção da calculadora para decimal (dec) e a calculadora mostrará o número 255, que é o seu correspondente em decimal. Tente de novo agora com o binário 00000000 e terá o número decimal 0.

Veja que 0 e 255 são exatamente os números que usamos nas máscaras de sub-rede simples. O número decimal 255 (equivalente a 11111111) indica que todos os 8 números binários do octeto se referem à rede, enquanto o decimal 0 (correspondente a 00000000) indica que todos os 8 dígitos binários do octeto se referem ao host. Em uma rede com máscara 255.255.255.0 temos:

Decimal:

255

255

255

0

Binário:

11111111

11111111

11111111

00000000

rede

rede

rede

host

As máscaras de tamanho variável permitem fazer a divisão em outros pontos do endereço. No endereço “72.232.35.108” com máscara “255.255.255.248” que citei a pouco, teríamos:

Decimal:

255

255

255

248

Binário:

11111111

11111111

11111111

11111 000

rede

rede

rede

rede host

Imagine o caso de um pequeno provedor de acesso, que possui um backbone com uma faixa de endereços com máscara 255.255.255.0 (/24) e precisa dividí-lo entre dois clientes, onde cada um deles deve ter uma faixa completa de endereços.

O backbone do provedor utiliza a faixa de endereços 203.107.171.x onde o 203.107.171 é o endereço da rede e o “x” é a faixa de endereços de que eles dispõem para endereçar os micros das duas empresas. Como endereçar ambas as redes, se não é possível alterar o “203.107.171” que é a parte do seu endereço que se refere à rede? A solução seria justamente utilizar máscaras de tamanho variável.

Veja que podemos alterar apenas dos últimos 8 bits do endereço IP:

Decimal:

203

107

171

x

Binário:

11001011

11010110

10101011

????????

Usando uma máscara 255.255.255.0, são reservados todos os 8 bits para o endereçamento dos hosts, e não sobra nada para diferenciar as duas redes. Usando uma máscara de tamanho variável, é possível “quebrar” os 8 bits do octeto em duas partes, usando a primeira para diferenciar as duas redes e a segunda para endereçar os hosts:

Decimal:

203

107

171

x

Binário:

11001011

11010110

10101011

???? ????

rede

rede

rede

rede host

Para tanto, ao invés de usar a máscara de sub-rede 255.255.255.0 que, como vimos, reservaria todos os 8 bits para o endereçamento do host, usaremos uma máscara 255.255.255.240 (/28) (corresponde ao binário 11111111.111111.11111111.11110000). Veja que em uma máscara de sub-rede os números binários “1” referem-se à rede e os números “0” referem-se ao host. Na máscara 255.255.255.240 temos exatamente esta divisão: quatro bits 1 e quatro bits 0:

Decimal:

255

255

255

240

Binário:

11111111

11111111

11111111

1111 0000

rede

rede

rede

rede host

Temos agora o último octeto dividido em dois endereços binários de 4 bits cada. Cada um dos dois grupos representa agora um endereço distinto, e deve ser configurado independentemente. Como fazer isso? Veja que 4 bits permitem 16 combinações diferentes (de 0 a 15). Se você converter o número 15 em binário terá “1111” e, se converter o decimal 0, terá “0000”. Se converter o decimal 11 terá “1011” e assim por diante.

Neste caso, é possível usar endereços de 1 a 14 para identificar os hosts e as redes separadas. Note que os endereços 0 e 15 não podem ser usados, pois assim como os endereços 0 e 255, eles são reservados para pacotes de broadcast:

Decimal:

203

107

171

12 _ 14

Binário:

11111111

11111111

11111111

1100 1110

rede

rede

rede

rede host

Estabeleça um endereço de rede para cada uma das duas sub-redes disponíveis e um endereço diferente para cada micro da rede, mantendo a formatação do exemplo anterior. Por enquanto, apenas anote em um papel os endereços escolhidos, junto como seu correspondente em binários.

Na hora de configurar o endereço IP nas estações, configure primeiro a máscara de sub-rede como 255.255.255.240 e, em seguida, converta os endereços binários em decimais, para ter o endereço IP de cada estação. No exemplo da ilustração anterior, havíamos estabelecido o endereço 12 para a rede e o endereço 14 para a estação; 12 corresponde a “1100” e 14 corresponde a “1110”. Juntando os dois temos “11001110”, que corresponde ao decimal “206”. O endereço IP da estação será então 203.107.171.206, com máscara 255.255.255.240.

Se tivesse escolhido o endereço 10 para a rede e o endereço 8 para a estação, teríamos “10101000” que corresponde ao decimal 168. Neste caso, o endereço IP da estação seria 203.107.171.168.

Nesse primeiro exemplo dividimos a faixa de endereços em 14 redes distintas, cada uma com 14 endereços. Isso permitiria que o provedor de acesso do exemplo fornecesse links para até 14 empresas diferentes, desde que cada uma não precisasse de mais do que 14 endereços. É possível criar diferentes combinações, reservando números diferentes de bits para a rede e o host:

Máscara

Bits da rede

Bits do host

Número de redes

Número de hosts

255.255.255.0 (/24)

nenhum

00000000

nenhuma

254 endereços
(do 1 ao 254)

255.255.255.192 (/26)

11

000000

2 endereços
(2 e 3)

62 endereços
(de 1 a 62)

255.255.255.224 (/27)

111

00000

6 endereços
(de 1 a 6)

30 endereços
(de 1 a 30)

255.255.255.240 (/28)

1111

0000

14 endereços
(de 1 a 14)

14 endereços
(de 1 a 14)

255.255.255.248 (/29)

11111

000

30 endereços
(de 1 a 30)

6 endereços
(de 1 a 6)

255.255.255.252 (/30)

111111

00

62 endereços
(de 1 a 62)

2 endereços
(2 e 3)

Em qualquer um dos casos, para obter o endereço IP basta converter os dois endereços (rede e estação) para binário, “juntar” os bits e converter o octeto para decimal.

Usando uma máscara de sub-rede 192, por exemplo, e estabelecendo o endereço 2 (ou “10” em binário) para a rede e 47 (ou “101111” em binário) para o host, juntaríamos ambos os binários obtendo o octeto “10101111” que corresponde ao decimal “175”.

Se usássemos a máscara de sub-rede 248, estabelecendo o endereço 17 (binário “10001”) para a rede e o endereço 5 (binário “101”) para o host, obteríamos o octeto “10001101” que corresponde ao decimal “141”.

Na hora de escrever o endereço e a máscara (como ao criar uma regra de firewall, ou ajustar um determinado arquivo com permissões de acesso), você pode tanto escrever a máscara por extenso, como em “192.168.0.0/255.255.255.0”, quanto escrever usado a notação abreviada, como em “192.168.0.0/24”.

Essa possibilidade é usada ao extremo pelas empresas de hospedagem, que dividem as faixas de endereços disponíveis em diversas faixas menores, com apenas 4 ou 8 endereços, que são atribuídas aos servidores dedicados hospedados em seus data-centers.

Ao usar a máscara 255.255.255.248, por exemplo, apenas 3 bits do endereço são reservados ao endereçamento dos hosts (convertendo 255.255.255.248 para binário, você teria 11111111.11111111.11111111.11111000), permitindo que uma faixa de endereços originalmente de classe A (16 milhões de hosts) seja dividida em 2.080.768 pequenas redes, uma para cada servidor dedicado que for locado.

Três bits permitem 8 combinações, mas o primeiro e o último endereço são reservados ao endereço da rede e ao endereço de broadcast, fazendo com que apenas 6 endereços possam realmente ser utilizados. Destes, mais um é sacrificado, pois é atribuído ao gateway (sem o gateway o servidor não acessa a Internet), de forma que no final apenas 5 endereços ficam realmente disponíveis.

Imagine, por exemplo, que você locou um servidor dedicado que tem disponível uma faixa de endereços que vai do 72.232.35.106 até o 72.232.35.110 (com máscara 255.255.255.248), sendo que o endereço 72.232.35.105 é o gateway da rede. Originalmente, a faixa de endereços iria do 72.232.35.104 ao 72.232.35.111, mas como o primeiro endereço é reservado à rede, o último aos pacotes de broadcast e mais um endereço precisa ficar reservado ao gateway da rede, ficamos no final com apenas 5 endereços válidos, como citei. Convertendo os endereços para binário, teríamos:

72.232.35.104 = 01001000 . 11101000 . 00100011 . 01101 000
72.232.35.105 = 01001000 . 11101000 . 00100011 . 01101 001
72.232.35.106 = 01001000 . 11101000 . 00100011 . 01101
010
72.232.35.107 = 01001000 . 11101000 . 00100011 . 01101
011
72.232.35.108 = 01001000 . 11101000 . 00100011 . 01101
100
72.232.35.109 = 01001000 . 11101000 . 00100011 . 01101 101
72.232.35.110 = 01001000 . 11101000 . 00100011 . 01101
110
72.232.35.111 = 01001000 . 11101000 . 00100011 . 01101
111

Como pode ver, os 8 endereços esgotam todas as possibilidades possíveis dentro da faixa, já que temos apenas 3 bits disponíveis para o host. Os 29 primeiros bits do endereço se referem à rede e por isso são sempre iguais e apenas os três últimos se referem ao host. Este processo de converter os endereços para binário é um pouco trabalhoso, mas ajuda a entender melhor a estrutura dos endereços no CIDR.

Você pode se perguntar qual é a necessidade de ter uma faixa com 5 endereços utilizáveis se o servidor é apenas um. Existem diversos motivos para isso. A primeira é que, ao configurar um servidor dedicado, você precisa de uma faixa de endereços inteira para poder configurar o DNS reverso, um pré-requisito para que seus e-mails não sejam rotulados como spam por outros servidores.

Ao registrar um domínio, você precisa fornecer os endereços de dois servidores DNS, que responderão por ele. Em vez de ter dois servidores, você pode utilizar outro dos seus 5 endereços disponíveis para criar um alias (apelido) para a placa de rede do seu servidor dedicado e assim poder configurá-lo para responder simultaneamente como servidor DNS primário e secundário, eliminando assim a necessidade de utilizar dois servidores separados. Novamente, essa configuração é possível apenas caso o servidor possua uma faixa de endereços própria.

No final, a configuração de rede de um servidor dedicado acaba sendo algo similar a isto:

Endereço IP: 72.232.35.106
Máscara: 255.255.255.248
Gateway: 72.232.35.105
Endereço da rede: 72.232.35.104
Endereço de broadcast: 72.232.35.111
Alias da placa de rede (para o DNS secundário): 72.232.35.107
Endereços vagos: 72.232.35.108, 72.232.35.109 e 72.232.35.110

Como se não bastasse, é possível ainda instalar o VMware Server, o Xen, ou outro sistema de virtualização e aproveitar estes três endereços vagos para criar três máquinas virtuais, cada uma com seu próprio endereço IP e configurada como se fosse um servidor separado. O princípio é o mesmo que ao rodar um segundo sistema operacional dentro do VMware Player no seu micro de trabalho, a única grande diferença é que neste caso toda a configuração é feita remotamente.

Você poderia então, criar três servidores virtuais, alocando uma parte da memória e do HD do servidor principal para eles. As possíveis aplicações são muitas. Você poderia sublocar os servidores virtuais (a opção mais óbvia), usá-los para fazer testes e experiências diversas, sem correr o risco de danificar a instalação do sistema instalado no servidor principal, ou mesmo usar os servidores virtuais para rodar serviços potencialmente inseguros, de forma que, mesmo que alguém conseguisse obter acesso através de alguma falha de segurança, ficaria preso dentro do servidor virtual, sem ter acesso ao sistema principal.


Interface de gerenciamento do VMware Server, com duas máquinas virtuais ativas

A maioria das empresas de hospedagem oferece a opção de incluir endereços IP ou faixas adicionais no seu plano, permitindo (por exemplo), que você rode mais máquinas virtuais. Você pode então pagar um valor extra para dispor de mais endereços IP válidos, da mesma forma que pode contratar um plano com uma quota maior de tráfego ou com mais banda disponível:


Seleção do volume de endereços IP, quota de tráfego e largura de banda
ao locar um servidor dedicado

Hoje em dia, não é incomum que um único servidor dedicado hospede 10 ou 20 máquinas virtuais, cada uma sublocada para um cliente diferente. Isso abre as portas para diversos tipos de serviços personalizados. Você pode ver mais detalhes sobre a configuração de servidores dedicados no meu livro Servidores Linux, guia prático.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X