Rede para DevOps
Esta aula fornece uma visão geral dos conceitos de rede essenciais para DevOps, incluindo IP, portas, DNS, HTTP/HTTPS, firewalls e ferramentas de diagnóstico como ping, curl e ss. O conteúdo é prático, com exemplos de comandos e boas práticas para o dia a dia.
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.comEsse 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.comIsso 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 ACCEPTIsso 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 -tulnO 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
- MDN: Visão geral do HTTP
- Cloudflare: O que é DNS?
- Ping man page
- Curl documentation
- ss man page
- AWS Security Groups
- Iptables - ArchWiki
Exercícios
- Explique a diferença entre IPv4 e IPv6 e dê um exemplo de cada.
- Qual comando você usaria para testar se um servidor web está respondendo na porta 80? Escreva um exemplo.
- Explique como um firewall baseado em host (iptables) pode bloquear tráfego indesejado. Dê um exemplo de regra que permite HTTP.
- Qual a finalidade do comando
ss -tuln? O que significa cada opção? - Como você resolveria um problema de "nome de domínio não encontrado"? Cite duas possíveis causas e uma ferramenta para diagnosticar.
curl -I http://exemplo.com ou curl -v http://exemplo.com:80.sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT. Isso aceita pacotes TCP destinados à porta 80.dig exemplo.com ou nslookup exemplo.com.