CIDR (Classless Inter-Domain Routing) é um método para alocar endereços IP e rotear pacotes do Internet Protocol de forma mais eficiente do que o sistema original de endereçamento com classes, usando uma máscara de sub-rede de comprimento variável representada por um comprimento de prefixo. Foi introduzido em 1993 pela Internet Engineering Task Force (IETF) para lidar com o rápido esgotamento dos endereços IPv4 e com o crescimento das tabelas de roteamento.
A evolução até o CIDR
Antes do CIDR, os endereços IPv4 eram divididos em "classes" fixas (A, B, C, D, E). Cada classe tinha uma parte de rede e uma parte de host predefinidas, o que levava a um uso ineficiente do espaço de endereçamento. Por exemplo, uma rede Classe B oferecia 65.534 endereços de host, muito mais do que uma única organização costumava precisar, resultando em espaço IP desperdiçado. Por outro lado, uma rede Classe C, com apenas 254 endereços de host, muitas vezes era pequena demais.
O roteamento com classes também fazia com que as tabelas de roteamento no backbone da internet crescessem rapidamente, porque cada rede Classe A, B ou C exigia uma entrada separada, independentemente de sua relação hierárquica com outras redes.
Entendendo a notação CIDR
O CIDR abandona o conceito de classes fixas ao permitir que a parte de rede de um endereço IP tenha comprimento arbitrário. Esse comprimento é indicado por um sufixo no endereço IP, /prefix_length.
Um endereço IPv4 é um número de 32 bits. O prefix_length especifica quantos dos bits mais à esquerda formam a parte de rede do endereço. Os bits restantes representam a parte de host.
Exemplo: 192.168.1.0/24
* 192.168.1.0 é o endereço IP.
* /24 indica que os primeiros 24 bits são a parte de rede.
Equivalência com a máscara de sub-rede
O prefix_length corresponde diretamente a uma máscara de sub-rede tradicional em notação decimal com pontos. A máscara é formada colocando os primeiros prefix_length bits em 1 e os bits restantes em 0.
| Prefixo CIDR | Máscara de sub-rede | Máscara em binário (primeiros 16 bits) |
|---|---|---|
| /8 | 255.0.0.0 | 11111111.00000000.00000000.00000000 |
| /16 | 255.255.0.0 | 11111111.11111111.00000000.00000000 |
| /24 | 255.255.255.0 | 11111111.11111111.11111111.00000000 |
| /27 | 255.255.255.224 | 11111111.11111111.11111111.11100000 |
| /30 | 255.255.255.252 | 11111111.11111111.11111111.11111100 |
Como o CIDR funciona: cálculo de endereços
Para determinar o endereço de rede, o endereço de broadcast e a faixa de hosts utilizáveis de um bloco CIDR, são feitos cálculos específicos.
Endereço de rede
O endereço de rede (ou ID de rede) é o primeiro endereço do bloco CIDR. Ele é obtido com uma operação AND bit a bit entre qualquer endereço IP do bloco e a máscara de sub-rede. Todos os bits de host no endereço de rede são 0.
Endereço de broadcast
O endereço de broadcast é o último endereço do bloco CIDR. Ele é obtido colocando todos os bits de host do endereço de rede em 1. Os pacotes enviados a esse endereço são entregues a todos os hosts daquele segmento de rede.
Faixa de hosts utilizáveis
A faixa de hosts utilizáveis compreende todos os endereços IP entre o endereço de rede e o endereço de broadcast, excluindo ambos. São os endereços que podem ser atribuídos a dispositivos na rede.
Número de hosts
O número de endereços IP disponíveis dentro de um bloco CIDR é calculado como 2^(32 - prefix_length). O número de endereços de host utilizáveis é 2^(32 - prefix_length) - 2 (subtraindo o endereço de rede e o de broadcast).
Exemplo: 192.168.10.64/27
Vamos analisar o bloco CIDR 192.168.10.64/27.
- Comprimento do prefixo:
/27 - Máscara de sub-rede: os primeiros 27 bits são
1, os últimos 5 bits são0.
11111111.11111111.11111111.11100000(binário)
255.255.255.224(decimal com pontos) - Endereço IP em binário:
192.168.10.64=11000000.10101000.00001010.01000000 - Endereço de rede: faça o AND bit a bit com a máscara de sub-rede.
11000000.10101000.00001010.01000000(IP)
11111111.11111111.11111111.11100000(Máscara)
-----------------------------------
11000000.10101000.00001010.01000000(ID de rede)
192.168.10.64
(Observação: o IP informado 192.168.10.64 já é o endereço de rede deste bloco /27) - Endereço de broadcast: coloque os bits de host (últimos 5 bits) do endereço de rede em
1.
ID de rede:11000000.10101000.00001010.01000000
Broadcast:11000000.10101000.00001010.01011111
192.168.10.95 - Faixa de hosts utilizáveis:
- Primeiro IP utilizável:
192.168.10.65 - Último IP utilizável:
192.168.10.94
- Primeiro IP utilizável:
- Número de hosts:
32 - 27 = 5bits de host.
2^5 = 32endereços no total.
32 - 2 = 30endereços de host utilizáveis.
Benefícios do CIDR
Alocação eficiente de endereços IP
O CIDR permite subnetting flexível, possibilitando ao administrador escolher um comprimento de prefixo que corresponda exatamente ao número de hosts necessários em determinado segmento de rede. Isso reduz ao mínimo o desperdício de endereços IP em comparação com o endereçamento por classes.
Agregação de rotas (supernetting)
O CIDR permite combinar várias redes menores em um único bloco de rede maior para fins de roteamento. Por exemplo, um ISP pode receber o bloco 203.0.113.0/20. Ele pode então subdividi-lo em blocos menores /24 ou /27 para seus clientes. Do ponto de vista da internet como um todo, basta anunciar a rota única /20, o que reduz significativamente o tamanho das tabelas de roteamento globais. Esse processo é chamado de agregação de rotas ou supernetting.
Redução do tamanho das tabelas de roteamento
Ao viabilizar a agregação de rotas, o CIDR reduz o número de entradas nas tabelas de roteamento dos roteadores de backbone. Isso melhora a eficiência do roteamento e diminui os requisitos de memória e processamento dos roteadores.
Roteamento hierárquico
O CIDR facilita uma estrutura de roteamento hierárquica, na qual blocos CIDR maiores são alocados a grandes ISPs ou a registros regionais de internet, que então subdividem esses blocos em outros menores para seus clientes. Isso cria uma arquitetura de roteamento mais organizada e escalável.
CIDR em serviços de proxy
Os serviços de proxy dependem fortemente do CIDR para diversas funcionalidades:
Listas de Controle de Acesso (ACLs)
Os proxies usam blocos CIDR em ACLs para definir quais endereços IP ou faixas de clientes têm ou não permissão de acesso ao proxy ou a recursos específicos por meio dele.
# Exemplo de proxy Nginx permitindo faixas CIDR específicas
http {
server {
listen 80;
server_name example.com;
location / {
# Negar por padrão
deny all;
# Permitir endereços IP específicos
allow 192.168.1.10;
allow 10.0.0.0/8; # Permite toda a faixa privada Classe A
allow 172.16.0.0/12; # Permite toda a faixa privada Classe B
allow 192.168.0.0/16; # Permite toda a faixa privada Classe C
# Permitir blocos de IP públicos específicos
allow 203.0.113.0/24;
proxy_pass http://backend_server;
}
}
}
Geolocalização e roteamento regional
Serviços de proxy costumam usar blocos CIDR para identificar a origem geográfica dos endereços IP dos clientes. Essa informação pode ser usada para:
* Localização de conteúdo: entregar conteúdo específico de cada região.
* Geobloqueio: restringir o acesso a conteúdos com base no país ou na região do cliente.
* Roteamento otimizado: direcionar o tráfego para proxies mais próximos do cliente, reduzindo a latência.
Balanceamento de carga
Em configurações de balanceamento de carga, o CIDR pode ser usado para direcionar o tráfego de clientes de faixas de IP específicas a determinados pools de servidores backend ou instâncias de proxy, garantindo uso ideal dos recursos ou conformidade com requisitos regionais de residência de dados.
Lista branca/negra de IPs
Firewalls de proxy e recursos de segurança utilizam o CIDR para colocar redes confiáveis em lista branca ou faixas de IP maliciosas conhecidas em lista negra, aumentando a segurança ao filtrar o tráfego na camada do proxy.
Acesso a redes privadas
Para proxies que operam dentro de redes corporativas, o CIDR é essencial para definir as faixas de rede interna acessíveis pelo proxy ou para distinguir clientes internos de externos.
CIDR e IPv6
Os princípios do CIDR também são fundamentais no endereçamento IPv6, embora o endereço tenha 128 bits. Os endereços IPv6 são sempre expressos em notação CIDR, como 2001:0db8::/32. O comprimento do prefixo em IPv6 funciona de forma idêntica ao IPv4, definindo as partes de rede e de host do endereço e permitindo alocação e roteamento eficientes.
Conclusão
O CIDR é um componente indispensável da infraestrutura moderna da internet, crucial para a gestão eficiente de endereços IP e para um roteamento escalável. Para os serviços de proxy, entender o CIDR a fundo é vital para configurar controles de acesso robustos, otimizar o fluxo de tráfego e implementar políticas de segurança.
