Redes na prática: IP, DNS e portas
Como seu computador encontra outro na internet e conversa com ele, explicado com comandos que você roda agora. No fim, você sabe investigar o clássico "a internet caiu" camada por camada.
1. A ideia geral
Uma rede é um conjunto de dispositivos que trocam dados. A internet é uma rede de redes: a da sua casa se liga à do seu provedor, que se liga a outras, até chegar ao servidor do site que você quer abrir.
Para uma mensagem chegar ao destino, três perguntas precisam de resposta:
- Qual é o endereço da máquina? É o endereço IP.
- Como descubro o endereço a partir de um nome, como
wikipedia.org? É o DNS. - Com qual programa daquela máquina eu quero falar? É a porta.
Os dados viajam em pedaços chamados pacotes. Cada pacote leva o endereço de origem e o de destino, e os roteadores pelo caminho decidem para onde mandá-lo, como numa rede de correios.
2. Endereço IP: privado e público
Um endereço IPv4 tem quatro números de 0 a 255 separados por pontos, como 192.168.0.15. Descubra o seu:
| Sistema | Comando |
|---|---|
| Linux | ip -4 address |
| Mac | ipconfig getifaddr en0 |
| Windows (PowerShell ou Prompt) | ipconfig |
inet da sua placa de rede (ignore a lo):2: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> ...
inet 192.168.0.15/24 brd 192.168.0.255 scope global dynamic wlan0Esse é o seu IP privado, que só vale dentro da sua rede. Três faixas são reservadas para redes privadas, e você vai vê-las o tempo todo:
10.0.0.0a10.255.255.255172.16.0.0a172.31.255.255192.168.0.0a192.168.255.255
Na nuvem, as máquinas também recebem IPs dessas faixas dentro da rede privada do projeto. Já o IP público é o endereço com que a sua rede aparece na internet. Para ver o seu:
curl https://ifconfig.me
No PowerShell do Windows, digite curl.exe em vez de curl, porque curl sozinho chama outro comando.
O /24 depois do IP é a máscara, escrita no formato CIDR. Ele diz quantos bits (os zeros e uns que formam o endereço) identificam a rede. Num /24, os três primeiros números são a rede (192.168.0) e o último identifica cada aparelho, o que dá até 254 aparelhos. Você vai encontrar essa notação ao criar redes na nuvem.
O endereço 127.0.0.1, também chamado de localhost, é sempre a própria máquina. É o que você usa para testar um site rodando no seu computador.
3. Roteador, DHCP e NAT
O roteador da sua casa faz três trabalhos ao mesmo tempo:
- DHCP: quando um aparelho entra na rede, o roteador entrega a ele um IP privado, a máscara, o endereço do próprio roteador (o gateway, a saída para a internet) e os servidores de DNS. É por isso que você não configura nada à mão.
- Roteamento: tudo que não é da rede local vai para o gateway, que manda para o provedor.
- NAT: todos os aparelhos da casa saem para a internet com o mesmo IP público. O roteador anota quem pediu o quê e devolve cada resposta para o aparelho certo.
Para ver o gateway: no Linux, ip route (linha que começa com default via); no Windows, ipconfig (linha Gateway Padrão); no Mac, netstat -rn | grep default.
4. IPv4 e IPv6
O IPv4 permite cerca de 4,3 bilhões de endereços, e eles se esgotaram. O NAT foi um dos jeitos de contornar o problema. A solução definitiva é o IPv6, com endereços bem mais longos, escritos em hexadecimal (com os algarismos de 0 a 9 e as letras de a a f) e separados por dois-pontos, como 2001:db8::1.
Hoje as duas versões convivem, e muitos provedores já entregam os dois tipos de endereço. Rode ip address no Linux, ifconfig no Mac ou ipconfig no Windows e procure um endereço com dois-pontos.
5. Testar se uma máquina responde
O ping manda pequenos pacotes para uma máquina e mede quanto tempo a resposta leva. No Linux e no Mac, ele não para sozinho: o -c 4 manda só 4 pacotes. No Windows, ele já para depois de 4: digite só ping wikipedia.org, sem o -c 4.
ping -c 4 wikipedia.org
64 bytes from text-lb.eqiad.wikimedia.org (208.80.154.224): icmp_seq=1 ttl=56 time=18.2 ms ... 4 packets transmitted, 4 received, 0% packet loss
- time: o tempo de ida e volta, em milissegundos. Quanto menor, melhor.
- packet loss: quantos pacotes se perderam. Acima de 0% de forma constante indica problema na rede.
Um ping sem resposta nem sempre quer dizer que a máquina está fora do ar: muitos servidores bloqueiam ping por segurança. Para ver o caminho que os pacotes fazem, use traceroute wikipedia.org no Linux e no Mac ou tracert wikipedia.org no Windows. Cada linha é um roteador pelo caminho. Em algumas distribuições Linux, como o Ubuntu, é preciso instalar antes o pacote traceroute.
6. DNS: os nomes da internet
Ninguém decora IPs. O DNS é o sistema que traduz nomes em endereços. Quando você digita um endereço no navegador, o computador pergunta a um servidor de DNS (normalmente o do provedor ou um público, como o 1.1.1.1 da Cloudflare e o 8.8.8.8 do Google), que descobre a resposta e a guarda por um tempo em cache (uma memória temporária, para não precisar perguntar de novo).
nslookup wikipedia.org
O nslookup funciona no Linux, no Mac e no Windows. No Linux e no Mac existe também o dig, que mostra mais detalhes:
dig +short wikipedia.org
Os tipos de registro mais comuns
| Registro | Para que serve |
|---|---|
A | Liga um nome a um endereço IPv4 |
AAAA | Liga um nome a um endereço IPv6 |
CNAME | Diz que um nome é apelido de outro nome |
MX | Diz qual servidor recebe os e-mails do domínio |
TXT | Guarda textos, muito usados para provar que você é dono do domínio e para regras de e-mail |
NS | Diz quais servidores respondem pelos registros do domínio |
dig +short MX gmail.com
Cada registro tem um TTL, o tempo em segundos que ele pode ficar em cache. É por isso que, quando alguém muda o DNS de um site, a mudança pode levar de minutos a horas para chegar a todo mundo.
nslookup. Depois, rode nslookup num nome que não existe, como naoexiste.exemplo.invalid, e leia a mensagem de erro.7. Portas e protocolos
Uma máquina pode rodar vários serviços ao mesmo tempo: um site, um banco de dados, um acesso remoto. A porta, um número de 0 a 65535, diz com qual deles você quer falar. Se o IP é o endereço do prédio, a porta é o número do apartamento.
| Porta | Serviço |
|---|---|
| 22 | SSH, acesso seguro ao terminal de outra máquina |
| 53 | DNS |
| 80 | HTTP, sites sem criptografia |
| 443 | HTTPS, sites com criptografia |
| 3306 e 5432 | Bancos de dados MySQL e PostgreSQL |
Os dados viajam principalmente por dois protocolos de transporte. O TCP confirma a entrega e reenvia o que se perdeu; é usado em sites, e-mail e SSH. O UDP manda sem confirmar e é mais rápido; é usado em chamadas de vídeo, jogos e na maioria das consultas de DNS. O HTTP/3, versão mais nova do protocolo da web, roda sobre o QUIC, que usa UDP.
Para ver quais portas estão esperando conexões no seu Linux:
ss -tuln
No Mac e no Windows, o equivalente é netstat -an. Um firewall é o que decide quais portas aceitam conexões de fora. Na nuvem, ele aparece como regras de firewall ou grupos de segurança, e um serviço que "não responde" muitas vezes é só uma porta bloqueada.
8. Investigar "a internet caiu"
Quando algo não carrega, teste de dentro para fora. Cada passo elimina uma possibilidade:
- Tenho IP? Rode
ip -4 addressouipconfig. Se o endereço começar com169.254, o computador não conseguiu IP do DHCP: o problema está no Wi-Fi, no cabo ou no roteador. - Chego no roteador? Faça
pingno IP do gateway. - Chego na internet? Faça
ping -c 4 1.1.1.1(no Windows,ping 1.1.1.1). Se funcionar, a conexão está de pé. - O DNS funciona? Rode
nslookup wikipedia.org. Se o ping por IP funciona e o nome não resolve, o problema é DNS. - O serviço responde? Rode
curl -I https://wikipedia.org(no PowerShell,curl.exe). Se tudo acima funciona e só um site falha, o problema provavelmente é no site, não em você.
Esse raciocínio, de testar camada por camada, é o mesmo que times de infraestrutura e SRE (engenharia de confiabilidade) usam para investigar incidentes em produção, o sistema real que os clientes usam.
9. Missão final
1. Anote os dados da sua rede
Seu IP privado, a máscara, o gateway, o IP público e o servidor de DNS. Os comandos estão nas partes 2, 3 e 6. Se o seu sistema usa o systemd-resolved, o comando resolvectl status mostra o DNS em uso.
2. Compare dois servidores de DNS
nslookup wikipedia.org 1.1.1.1
nslookup wikipedia.org 8.8.8.8
O segundo argumento diz para qual servidor de DNS perguntar. As respostas podem variar, porque sites grandes devolvem servidores próximos de quem pergunta.
3. Descubra quem recebe os e-mails de um domínio
nslookup -type=MX gmail.com
Lição escrita em português pela Iniciativa Ako, da Rizzygo, com base nas faixas de endereços privados da RFC 1918 e na documentação do MDN. O texto e os exemplos são próprios. Os números das saídas de exemplo mudam de rede para rede.
Conteúdo aberto sob a licença CC BY 4.0. Viu um erro? Abra uma issue.