Uma breve história:
Antigamente, em tempos idos e antanhos, quando tudo era verbo (no período jurássico, no tempo dos dinossauros), existiam dois aparelhos físicos distintos, o modem e o roteador (além da tal placa Fax/Modem).
A função do modem era (e é ainda), a grosso modo, somente autenticar a conexão, mais nada. Aquelas informações (VPI, VCI, login e senha da operadora) que se coloca nos modem/roteadores de hoje, são para fazer a autenticação junto ao ISP (Internet Service Provider - Provedor de serviços de Internet).
Cabe ao roteador fazer as rotas e todo o trabalho pesado. Por rotas, entende-se o caminho mais perto e/ou mais rápido para a conexão solicitada. E todo roteador tem dentro de si a famosa "Tabela de Roteamento", onde ele guarda as suas rotas em cache para não ter que refazê-las toda vez que uma máquina cliente solicitar uma conexão já solicitada anteriormente.
Por isso é que o
GNU/Linux com IPtables, quando é configurado para fazer o compartilhamento na tabela NAT (NAT - Network Address Translation - Tradução de Endereços de Rede), tecnicamente, não estamos transformando ele em um roteador, porque ele não fará rotas no sentido estrito de tabelas.
O NAT somente "pega" tudo que entrar e sair por uma placa de rede, faz a tradução dos endereços e repassa a todas as outras placas de rede do servidor.
Entenda o NAT como se fosse um tradutor entre duas pessoas. Uma fala criôulo haitiano e a outra pessoa fala esloveno. O NAT fala essas duas línguas e interliga essas duas redes (ou sub-redes) diferentes. E todo roteador tem dentro de si a tabela NAT.
Dois dispositivos estão na mesma rede (ou sub-rede), se satisfizerem duas condições e, obrigatoriamente, tem que satisfazer essas duas condições:
Os 3 primeiros octetos e a máscara de rede (ou sub-rede) devem, obrigatoriamente, ser iguais. Entenda-se por octeto cada conjunto de números que compõem o endereço IP, por exemplo:
192.168.1.0 :: São chamados de octetos porque cada conjunto de números separados por um ponto são números binários expressos em notação decimal, formados por um Byte, e um Byte é formado por 8 bits, por isso são chamados de octetos.
Octeto vem de oito. O Brasil é pentacampeão (ganhou cinco vezes a copa) e será Hexa se ganhar a sexta vez. Bi e Tri são prefixos latinos. Tetra, Penta e Hexa são radicais gregos que indicam uma ordem numérica, mas isso não vem ao caso.
Por exemplo, o número decimal 255 expresso em notação binária fica assim: 11111111 (8 "uns"). Os endereços IPs são expressos em notação decimal para facilitar a vida de nós, humanos.
Vamos tomar como exemplo, os seguintes endereços IPs:
- 192.168.1.2/24 e 192.168.1.5/24
Esses dois endereços estão na mesma sub-rede, portanto, os dois falam crioulo haitiano (ou esloveno) e não necessitam de NAT (o tradutor) para "conversar".
A máscara de sub-rede aí em cima está expressa na notação CIDR (Classless Inter-Domain Routing - Roteamento de Classes Entre Domínios), mas pode ser expressa em notação decimal.
A /24 seria 255.255.255.0, a /25 seria 255.255.255.128 e assim por diante. Basta fazer a transformação. Na época da escovação de bits (período pré-jurássico), o cara tinha que saber conversão binária de cor e salteado, mas também não vem ao caso.
192.168.2.1/24 e 192.168.1.1/24 → Note que esse dois IPs NÃO estão na mesma faixa de sub-rede, pois os 3 primeiros octetos, da esquerda para a direita, não são iguais, portanto, um fala crioulo haitiano e outro fala esloveno e precisam obrigatoriamente do tradutor para poderem se entender, senão dá briga.
192.168.1.2/24 e 192.168.1.5/25 → Note que esses dois IPs tem os 3 primeiros octetos iguais, porém, a máscara de sub-rede é diferente, portanto, dará briga sem o tradutor (NAT).
O que define o endereço IP de cada dispositivo conectado em uma rede (ou sub-rede) é o último octeto da esquerda para a direita. Esse sim NÃO pode ser igual para dois dispositivos (computador, roteador, switch, smartphones, etc).
O formato dos endereços IPs acima são todos IPv4, ou seja, IP versão 4. A versão 6 (IPv6), que é expressa em números hexadecimais (um numerozão gigante), veio para acabar com o problema da falta de endereços IPv4, pois, atualmente, existem mais dispositivos (computador, roteador, switch, etc) do que IPs.
A versão 5 foi uma modificação experimental e nunca foi utilizada. O IPv4 é formado por 32 bits, enquanto que o IPv6 tem 128 bits, proporcionando assim, maior possibilidades de combinações.
O endereço IP tem sua relevância, porém, o endereço MAC (Media Access Control - composto por 48 bits e expresso em notação hexadecimal) é o endereço mais importante em uma comunicação local e sua descoberta é feita pelo protocolo ARP (Address Resolution Protocol - Protocolo de Resolução de Endereços). A grosso modo, o ARP tem uma função semelhante ao DNS. Mas isso é matéria para outro artigo.
Atualmente, o modem e o roteador estão juntos em um único aparelho físico, mas dentro desse aparelho físico, as suas funções de modem e de roteador são distintas (bem como o serviço de DHCP e NAT).