Nesta aula, vamos explorar os fundamentos de rede que todo profissional de DevOps precisa dominar. Entender como IPs, portas, DNS e protocolos como HTTP/HTTPS funcionam é crucial para configurar servidores, depurar problemas de conectividade e garantir a segurança das aplicações. Além disso, veremos ferramentas de diagnóstico como ping, curl e ss, que são indispensáveis para investigar problemas de rede.

O conhecimento de rede permite que você gerencie a comunicação entre serviços, configure firewalls corretamente e otimize a entrega de aplicações. Vamos abordar cada tópico de forma prática, com exemplos de comandos que você pode testar em seu próprio ambiente.

IP, portas, DNS (visão geral)

IP (Internet Protocol) é o endereço único que identifica um dispositivo em uma rede. Existem duas versões principais: IPv4 (ex.: 192.168.1.1) e IPv6 (ex.: 2001:db8::1). Cada dispositivo em uma rede precisa de um IP para se comunicar com outros dispositivos. Portas são números que identificam processos específicos em um dispositivo, permitindo que múltiplos serviços rodem no mesmo IP (ex.: porta 80 para HTTP, 443 para HTTPS).

DNS (Domain Name System) traduz nomes de domínio legíveis por humanos (como exemplo.com) em endereços IP. Isso facilita o acesso a serviços sem que precisemos decorar números. No contexto DevOps, é comum configurar registros DNS para apontar domínios para servidores ou balanceadores de carga.

Exemplo de consulta DNS com dig:

dig +short exemplo.com

Esse comando retorna o IP associado ao domínio.

HTTP/HTTPS

HTTP (Hypertext Transfer Protocol) é o protocolo usado para comunicação entre clientes (navegadores, APIs) e servidores web. Ele funciona sobre TCP, geralmente na porta 80. HTTPS é a versão segura, que adiciona criptografia via TLS/SSL, na porta 443. Para DevOps, é essencial entender os métodos HTTP (GET, POST, PUT, DELETE), códigos de status (200, 404, 500) e cabeçalhos.

Exemplo de requisição HTTP com curl:

curl -v http://exemplo.com

Isso mostra detalhes da requisição e resposta, incluindo cabeçalhos e status.

Firewalls

Firewalls controlam o tráfego de rede com base em regras, permitindo ou bloqueando conexões. Podem ser baseados em host (como iptables no Linux) ou em rede (firewalls de hardware/cloud). Regras comuns incluem permitir tráfego em portas específicas (ex.: 22 para SSH, 80 para HTTP) e bloquear outras. Em ambientes cloud, você configura Security Groups (AWS) ou Firewall Rules (GCP).

Exemplo de regra iptables para permitir SSH:

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Isso adiciona uma regra que aceita conexões TCP na porta 22.

Diagnóstico (ping, curl, ss)

Ferramentas de diagnóstico são vitais para identificar problemas de rede. ping testa conectividade básica enviando pacotes ICMP. curl é usado para testar requisições HTTP/HTTPS e ver respostas. ss (substituto do netstat) mostra estatísticas de soquetes, como portas em escuta e conexões ativas.

Exemplos:

ping -c 4 8.8.8.8
curl -I https://google.com
ss -tuln

O primeiro testa conectividade com o DNS do Google; o segundo obtém cabeçalhos HTTP; o terceiro lista todas as portas TCP/UDP em escuta.

Boas práticas

Sempre documente as regras de firewall e as configurações de DNS. Use nomes de domínio em vez de IPs fixos para facilitar mudanças. Monitore portas abertas com ferramentas como nmap e mantenha apenas o necessário. Prefira HTTPS em produção e evite expor portas de administração (como SSH) para toda a internet.

Referências

Exercícios

  1. Explique a diferença entre IPv4 e IPv6 e dê um exemplo de cada.
  2. ✓ Resposta: IPv4 usa endereços de 32 bits, como 192.168.1.1, enquanto IPv6 usa 128 bits, como 2001:db8::1. IPv4 é mais comum, mas está se esgotando; IPv6 oferece mais endereços e melhor eficiência.
  3. Qual comando você usaria para testar se um servidor web está respondendo na porta 80? Escreva um exemplo.
  4. ✓ Resposta: curl -I http://exemplo.com ou curl -v http://exemplo.com:80.
  5. Explique como um firewall baseado em host (iptables) pode bloquear tráfego indesejado. Dê um exemplo de regra que permite HTTP.
  6. ✓ Resposta: Firewalls como iptables filtram pacotes com base em regras. Exemplo para permitir HTTP: sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT. Isso aceita pacotes TCP destinados à porta 80.
  7. Qual a finalidade do comando ss -tuln? O que significa cada opção?
  8. ✓ Resposta: O comando lista todos os soquetes TCP/UDP em escuta, com números de porta. Opções: -t (TCP), -u (UDP), -l (listen), -n (numérico).
  9. Como você resolveria um problema de "nome de domínio não encontrado"? Cite duas possíveis causas e uma ferramenta para diagnosticar.
  10. ✓ Resposta: Causas: DNS configurado incorretamente ou servidor DNS inacessível. Ferramenta: dig exemplo.com ou nslookup exemplo.com.