255.255.255.0: A matemática das máscaras de rede
Você sabe o que significam matematicamente as máscaras de rede? Um /24, /25? Um 255.255.128.0 define o quê? No iptables um 10.1.0.0/28 tem qual finalidade? E o que isto tem a ver com as classes de IPs? Para quem não for alérgico à escovação de bits...
Parte 7: Roteamento baseado em máscara de rede
Cada máquina sabe seu IP, sua máscara e o IP do gateway. A máquina não sabe as máscaras e os ips de outras máquinas, apenas a sua. Logo, ao necessitar comunicar-se com uma máquina cujo o IP é X.Y.K.Z a máquina não tem como saber qual rede este IP é, mas tem como saber se é a mesma rede sua. Isto é suficiente para ela saber se pode enviar diretamente (mesma rede) ou se precisa acionar o gateway para jogar para fora (eu, estando no RS, posso não saber onde é um CEP que começa com "4", mas sei que não é RS, pois estou no RS e aqui ele começa com "9". Basta para eu enviar para outra agência de correio).
Alguns exemplos:
Caso A: origem e destino estão na mesma rede. Maquina A com IP 10.1.0.5/25 deseja conversar com 10.1.0.120 (ela não sabe a máscara do destino!!!).
Máquina A primeiro determina a sua rede aplicando um AND do seu IP com sua máscara, sendo que ela agora é 255.255.255.128, pois um /25 significa 25 bits em 1:
Caso B: origem e destino não estão na mesma rede. Maquina A com IP 10.1.0.5/25 deseja conversar com 10.1.0.129. Já sabemos que a rede que a máquina A pertence é 10.1.0.0 (veja, pode não ser se a máquina A estiver com a máscara errada!!!)
Ela faz o mesmo com o IP de destino, aplicando um AND do IP de destino COM A SUA MÁSCARA (única que ela tem):
Se a máquina A estiver com a máscara errada (um /24 quando deveria ser um /25) ela pode ficar isolada de parte da rede, por achar que o destino é rede local quando não é (deveria ter usado o gateway). Da mesma forma se ela é um /25 quando deveria ser um /24 poderá usar o gateway quando não era necessário. A correta configuração de máscara é extremamente importante.
Alguns exemplos:
Caso A: origem e destino estão na mesma rede. Maquina A com IP 10.1.0.5/25 deseja conversar com 10.1.0.120 (ela não sabe a máscara do destino!!!).
Máquina A primeiro determina a sua rede aplicando um AND do seu IP com sua máscara, sendo que ela agora é 255.255.255.128, pois um /25 significa 25 bits em 1:
1111 1111 1111 1111 1111 1111 1000 0000 (255) (255) (255) (128)Ela chega a conclusão que pertence a rede 10.1.0.0. Ela faz o mesmo com o IP de destino, aplicando um AND do IP de destino COM A SUA MÁSCARA (única que ela tem):
(10) (1) (0) (120) 0000 1010 0000 0001 0000 0000 0111 1000 1111 1111 1111 1111 1111 1111 1000 0000 (25 bits em 1)Como resultado deste AND, chega-se ao cálculo de 10.1.0.0. Como o número calculado para rede é o mesmo, a conclusão é que o destino está aqui, local, basta realizar um ARP e endereçar diretamente o MAC do destino. Nada de gateway.
Caso B: origem e destino não estão na mesma rede. Maquina A com IP 10.1.0.5/25 deseja conversar com 10.1.0.129. Já sabemos que a rede que a máquina A pertence é 10.1.0.0 (veja, pode não ser se a máquina A estiver com a máscara errada!!!)
Ela faz o mesmo com o IP de destino, aplicando um AND do IP de destino COM A SUA MÁSCARA (única que ela tem):
(10) (1) (0) (129) 0000 1010 0000 0001 0000 0000 1000 0001 1111 1111 1111 1111 1111 1111 1000 0000 (25 bits em 1) 0000 1010 0000 0001 0000 0000 1000 0000 (RESULTADO AND)Como resultado deste AND, chega-se ao cálculo de 10.1.0.128, que não é mesma rede da máquina A. A conclusão é que o destino não está aqui e preciso repassar o pacote para o gateway (o que o gateway faz deixamos para um próximo artigo).
Se a máquina A estiver com a máscara errada (um /24 quando deveria ser um /25) ela pode ficar isolada de parte da rede, por achar que o destino é rede local quando não é (deveria ter usado o gateway). Da mesma forma se ela é um /25 quando deveria ser um /24 poderá usar o gateway quando não era necessário. A correta configuração de máscara é extremamente importante.
http://gravatai.ulbra.tche.br/~elgio/calcmasc.php
Mas coloquei um redir no endereço publicado para não haver problemas.