Comandos de rede básicos
Esta aula apresenta os comandos de rede essenciais no Linux/Bash: ping, curl, wget, ip, ss e ferramentas de diagnóstico. Você aprenderá a testar conectividade, transferir dados, inspecionar interfaces e portas, e diagnosticar problemas de rede com exemplos práticos.
Nesta aula, vamos explorar os comandos de rede básicos que todo administrador de sistemas e desenvolvedor deve conhecer no ambiente Linux/Bash. Dominar essas ferramentas é fundamental para diagnosticar problemas de conectividade, verificar serviços, transferir arquivos e entender o estado da rede do sistema. Começaremos com o clássico ping, passaremos pelos utilitários de transferência curl e wget, depois veremos as modernas ferramentas ip e ss, e finalizaremos com técnicas de diagnóstico combinadas.
Esses comandos são a base para tarefas do dia a dia, desde verificar se um host está acessível até inspecionar portas abertas e rotas. Ao longo da aula, você verá exemplos práticos e opções úteis que podem ser aplicadas imediatamente. Vamos começar!
ping
O comando ping é uma das ferramentas mais antigas e utilizadas para testar a conectividade de rede. Ele envia pacotes ICMP (Internet Control Message Protocol) do tipo Echo Request para um host de destino e aguarda respostas Echo Reply. Se o host estiver ativo e a rede funcionando, ele responde, permitindo medir o tempo de ida e volta (RTT) e a perda de pacotes.
O ping é útil para verificar se um servidor está online, se a rede local está funcionando, e para avaliar a latência. No entanto, muitos servidores bloqueiam pacotes ICMP por segurança, então a ausência de resposta não significa necessariamente que o host está inacessível. Vamos ver os usos mais comuns:
# Ping básico (envia pacotes continuamente até Ctrl+C)
ping google.com
# Enviar um número específico de pacotes
ping -c 4 8.8.8.8
# Definir o intervalo entre pacotes (em segundos)
ping -i 2 google.com
# Verificar a interface de rede usada (opção -I)
ping -I eth0 google.com
# Exibir apenas o resultado final (estatísticas) com -q
ping -c 4 -q google.com
No exemplo acima, -c define a contagem, -i o intervalo, -I a interface de origem e -q modo silencioso. A saída típica mostra o número de pacotes transmitidos/recebidos, a perda e o tempo mínimo/médio/máximo.
curl e wget
Quando precisamos transferir dados de ou para servidores, curl e wget são as ferramentas padrão. O curl é mais versátil, suporta diversos protocolos (HTTP, HTTPS, FTP, etc.) e é frequentemente usado para testar APIs, baixar arquivos e enviar dados. O wget é mais focado em download, especialmente de páginas inteiras e downloads recursivos, sendo mais simples em alguns aspectos.
Vamos explorar exemplos práticos de ambos:
# curl: baixar o conteúdo de uma URL para a saída padrão
curl https://example.com
# curl: salvar em um arquivo (-o)
curl -o pagina.html https://example.com
# curl: seguir redirecionamentos (-L) e mostrar cabeçalhos (-I)
curl -L -I https://example.com
# curl: enviar dados via POST (com -d)
curl -X POST -d "nome=Joao" https://httpbin.org/post
# wget: baixar um arquivo
wget https://example.com/arquivo.zip
# wget: baixar recursivamente um site (cuidado!)
wget -r -l 2 https://example.com
O curl é preferido em scripts por sua flexibilidade e por suportar saída silenciosa (-s), que é útil para automação. O wget é mais amigável para downloads simples e oferece opções como -c para continuar transferências interrompidas.
ip e ss (visão geral)
Os comandos ip e ss fazem parte do pacote iproute2, que substitui as antigas ferramentas ifconfig, route e netstat. O ip é usado para gerenciar interfaces de rede, endereços IP, rotas e túneis. O ss (socket statistics) é usado para inspecionar sockets e conexões de rede, sendo mais rápido e detalhado que o antigo netstat.
Vamos ver alguns comandos essenciais:
# ip: mostrar todas as interfaces de rede
ip addr show
# ip: mostrar apenas interfaces ativas
ip link show
# ip: mostrar a tabela de rotas
ip route show
# ip: adicionar um endereço IP a uma interface (requer root)
sudo ip addr add 192.168.1.100/24 dev eth0
# ss: listar todas as conexões TCP
ss -t
# ss: listar todas as portas em escuta (listening)
ss -tlnp
# ss: mostrar estatísticas de rede
ss -s
O ip é essencial para configurar redes de forma dinâmica, enquanto o ss ajuda a verificar quais serviços estão rodando e em quais portas. A opção -p mostra o processo associado à conexão, e -l filtra por sockets em escuta.
Diagnóstico
Quando algo dá errado na rede, é importante ter uma abordagem sistemática para diagnosticar. Combinando os comandos anteriores, podemos identificar onde está o problema: na interface, na rota, no DNS, no firewall ou no servidor remoto. Vamos ver um fluxo comum de diagnóstico.
Primeiro, verificamos a conectividade básica com ping. Se falhar, testamos a interface com ip addr. Em seguida, verificamos a rota com ip route. Se a rota estiver correta, testamos o DNS com nslookup ou dig. Por fim, testamos a porta específica com curl ou nc. Vamos a um exemplo prático:
# 1. Testar conectividade com um host
ping -c 3 google.com
# 2. Verificar interfaces e IPs
ip addr show
# 3. Verificar rota padrão
ip route show default
# 4. Testar resolução DNS
nslookup google.com
# 5. Testar porta HTTP (80) com curl
curl -I http://google.com
# 6. Verificar conexões estabelecidas
ss -tnp | grep :80
Essa sequência permite isolar o problema: se o ping falhar, o problema pode estar na rede física ou na configuração de IP. Se o ping funcionar, mas o curl falhar, o problema pode ser firewall ou serviço. O ss ajuda a confirmar se a conexão está sendo estabelecida.
Boas práticas e observações finais
Ao usar esses comandos, lembre-se de que alguns exigem privilégios de root (como adicionar IPs). Prefira sempre as opções que fornecem saída legível e evite loops infinitos com ping em scripts, use -c para limitar. Para diagnóstico, combine ping, ip, ss e curl para obter uma visão completa. Essas ferramentas são extremamente poderosas e essenciais no dia a dia.
Referências
- Manual do ping (man7.org)
- Documentação oficial do curl
- Manual do wget (GNU)
- Manual do ip (man7.org)
- Manual do ss (man7.org)
- Guia de administração de rede (TLDP)
Exercícios
- Explique o que o comando
ping -c 5 8.8.8.8faz e qual é a importância do parâmetro-c. - Qual é a diferença principal entre
curlewget? Dê um exemplo de uso de cada um. - Como você usaria o comando
ippara exibir todas as interfaces de rede e seus endereços IP? Escreva o comando. - Qual comando você usaria para listar todas as portas TCP em escuta no sistema? Como você incluiria o processo responsável?
- Descreva um fluxo de diagnóstico passo a passo para verificar se um servidor web em
http://meuservidor.comestá acessível. Inclua os comandos que você usaria. ping meuservidor.compara verificar conectividade básica.ip addr showpara verificar se a interface local está ativa.ip route showpara confirmar a rota padrão.nslookup meuservidor.compara testar a resolução DNS.curl -I http://meuservidor.compara testar a porta 80 e ver os cabeçalhos HTTP.- Se falhar,
ss -tlnp | grep :80para ver se o servidor está escutando na porta 80.
-c define o número de pacotes a serem enviados, evitando que o comando fique em execução indefinidamente, o que é importante em scripts e testes automatizados.
curl é mais versátil, suporta muitos protocolos e é frequentemente usado para transferir dados, testar APIs e enviar requisições. O wget é mais focado em download de arquivos e pode baixar sites recursivamente. Exemplo: curl -O https://example.com/arquivo.txt e wget https://example.com/arquivo.txt.
ip addr show ou ip a. Isso exibe todas as interfaces, incluindo seus endereços IPv4 e IPv6, estado (UP/DOWN), entre outras informações.
ss -tlnp lista todas as portas TCP em escuta (-l), mostrando o processo (-p). A opção -t filtra por TCP e -n evita a resolução de nomes, tornando a saída mais rápida.