Comandos de rede básicos
Esta aula apresenta os comandos de rede essenciais no Linux, incluindo ping, curl, wget, ip e ss, além de técnicas de diagnóstico de conectividade. Você aprenderá na prática como verificar, testar e diagnosticar problemas de rede usando essas ferramentas fundamentais.
Nesta aula, vamos explorar os comandos de rede básicos que todo administrador de sistemas e desenvolvedor precisa dominar no Linux. Essas ferramentas são essenciais para verificar conectividade, transferir dados e diagnosticar problemas de rede. Começaremos com o clássico ping, depois avançaremos para ferramentas de transferência como curl e wget, e finalizaremos com utilitários modernos de inspeção de interfaces e portas: ip e ss.
Dominar esses comandos não só ajuda no dia a dia, mas também é fundamental para automatizar tarefas de monitoramento e diagnóstico em scripts. Ao longo da aula, você verá exemplos práticos e dicas de boas práticas para usar essas ferramentas de forma eficiente e segura.
ping
O comando ping é uma das ferramentas mais antigas e utilizadas para testar a conectividade entre seu computador e outro host na rede. Ele envia pacotes ICMP (Internet Control Message Protocol) Echo Request para o destino e aguarda respostas Echo Reply. Se o destino estiver acessível, ele responde; caso contrário, o comando indica perda de pacotes ou timeout.
A sintaxe básica é ping [opções] destino. Por padrão, o comando continua enviando pacotes indefinidamente até você interromper com Ctrl+C. Para testes rápidos, é comum limitar o número de pacotes com a opção -c. Além disso, a opção -i define o intervalo entre pacotes, e -W define o tempo máximo de espera pela resposta.
Exemplo de uso:
# Envia 4 pacotes para o google.com
ping -c 4 google.com
# Envia pacotes a cada 2 segundos, com timeout de 1 segundo
ping -i 2 -W 1 8.8.8.8
# Verifica se um host está acessível na rede local
ping 192.168.1.1
No output, você verá o tempo de ida e volta (RTT) de cada pacote e estatísticas finais. Um RTT alto pode indicar congestionamento ou rota longa. Perda de pacotes sugere problemas de conectividade ou firewall bloqueando ICMP. Lembre-se de que muitos servidores bloqueiam ICMP por segurança, então ausência de resposta não significa necessariamente que o host está fora do ar.
curl e wget
Quando precisamos transferir dados de ou para servidores, curl e wget são as ferramentas mais versáteis. Ambos suportam HTTP, HTTPS, FTP e outros protocolos, mas têm diferenças importantes.
curl é mais orientado a transferência de dados e é amplamente usado para testar APIs, baixar arquivos, enviar dados via POST, e muito mais. Ele exibe o conteúdo na saída padrão por padrão, o que o torna ideal para inspecionar respostas HTTP. Já wget é mais focado em download de arquivos, especialmente downloads recursivos e retomáveis. Ele salva o conteúdo em arquivos por padrão.
Exemplos com curl:
# Baixa o conteúdo de uma página e exibe no terminal
curl https://example.com
# Salva o conteúdo em um arquivo
curl -o pagina.html https://example.com
# Envia uma requisição POST com dados JSON
curl -X POST -H "Content-Type: application/json" -d '{"nome":"João"}' https://api.exemplo.com/usuarios
# Segue redirecionamentos e mostra cabeçalhos HTTP
curl -L -I https://example.com
Exemplos com wget:
# Baixa um arquivo e salva com o nome original
wget https://example.com/arquivo.zip
# Download recursivo de um site (com limitação de profundidade)
wget -r -l 2 https://example.com
# Retoma um download interrompido
wget -c https://example.com/arquivo.zip
# Baixa múltiplos arquivos a partir de uma lista
wget -i lista.txt
Uma boa prática é usar curl para testes de API e wget para downloads simples ou em lote. Ambos têm inúmeras opções; consulte as páginas de manual (man curl, man wget) para aprofundar.
ip e ss (visão geral)
Os comandos ip e ss são as ferramentas modernas para inspecionar interfaces de rede e conexões. Eles substituem os antigos ifconfig e netstat, que ainda existem, mas são considerados obsoletos em muitas distribuições.
O comando ip permite visualizar e configurar interfaces, endereços IP, rotas e muito mais. Por exemplo, ip addr mostra todas as interfaces e seus endereços; ip route exibe a tabela de roteamento; e ip link mostra o estado das interfaces (up/down).
Já o ss é utilizado para inspecionar sockets e conexões de rede. Ele é mais rápido e legível que o netstat. Com ss, você pode ver portas em escuta, conexões estabelecidas, estatísticas de TCP, entre outros.
Exemplos:
# Mostra todas as interfaces de rede e endereços IP
ip addr
# Mostra a tabela de roteamento
ip route
# Ativa ou desativa uma interface (requer root)
sudo ip link set eth0 up
sudo ip link set eth0 down
# Lista todas as portas em escuta (TCP e UDP)
ss -tulpn
# Mostra todas as conexões TCP estabelecidas
ss -tn
# Filtra por porta específica (ex.: 80)
ss -tulpn | grep :80
Esses comandos são essenciais para diagnosticar problemas de conectividade, verificar se um serviço está escutando na porta correta e entender o roteamento da máquina. Dominá-los é fundamental para qualquer pessoa que trabalhe com redes no Linux.
Diagnóstico
Quando algo dá errado na rede, uma abordagem sistemática ajuda a identificar o problema rapidamente. Comece verificando a configuração de rede local com ip addr e ip route para garantir que há um IP válido e uma rota padrão. Em seguida, teste a conectividade com o gateway usando ping. Se o gateway responder, o problema pode estar além da rede local.
Ferramentas como traceroute (ou tracepath) mostram o caminho que os pacotes percorrem até o destino, ajudando a identificar onde os pacotes são perdidos. O comando dig ou nslookup verifica a resolução de DNS. E o curl pode testar se um serviço HTTP está acessível e exibir códigos de status.
Exemplo de sequência de diagnóstico:
# 1. Verificar interfaces e IPs
ip addr
# 2. Verificar rota padrão
ip route
# 3. Testar gateway
ping -c 3 192.168.1.1
# 4. Testar DNS
nslookup google.com
# 5. Testar HTTP
curl -I https://google.com
# 6. Rastrear rota (se necessário)
traceroute -n google.com
Essa abordagem permite isolar o problema: se o ping ao gateway funciona, mas o ping a um host externo falha, o problema pode estar no roteamento ou no firewall. Se o DNS não resolve, o problema está na configuração do resolvedor. Se o curl retorna um código de erro, você pode investigar a porta ou o serviço específico.
Boas práticas e observações finais
Ao usar esses comandos em scripts, lembre-se de tratar saídas e códigos de retorno. Por exemplo, ping retorna 0 se pelo menos um pacote for recebido, e 1 se falhar. O curl retorna 0 em sucesso, e códigos diferentes para erros. Use essas informações para tomar decisões no script.
Além disso, cuidado com o uso de ping em loops infinitos; sempre limite com -c ou use timeout. Prefira curl a wget para testes de API, pois ele oferece mais controle sobre cabeçalhos e métodos. E sempre consulte as páginas de manual para explorar opções avançadas.
Referências
- ping(8) - Linux manual page
- curl man page
- GNU Wget Manual
- ip(8) - Linux manual page
- ss(8) - Linux manual page
- traceroute(8) - Linux manual page
- nslookup(1) - Linux manual page
Exercícios
- Explique o que o comando
ping -c 5 8.8.8.8faz e qual é o significado do tempo de resposta (RTT) exibido. - Qual é a diferença principal entre
curlewget? Dê um exemplo de uso para cada um. - Como você verificaria qual porta um serviço está escutando em sua máquina? Cite dois comandos possíveis.
- Descreva uma sequência de comandos para diagnosticar um problema em que você não consegue acessar um site externo, mas consegue acessar a internet (por exemplo, o ping para o gateway funciona).
- Explique o que o comando
ip route showexibe e por que é útil.
curl é mais flexível para transferências de dados, exibindo o conteúdo na tela por padrão e suportando muitos protocolos e métodos HTTP. wget é focado em download de arquivos, com suporte a downloads recursivos e retomáveis. Exemplo: curl -X POST -d '{"id":1}' https://api.exemplo.com/item para testar uma API; wget -r -l 2 https://site.com para baixar um site inteiro.
ss -tulpn para listar todas as portas em escuta, ou netstat -tulpn (embora ss seja preferível). Por exemplo: ss -tulpn | grep :80 mostra se há um serviço na porta 80.
nslookup site.com ou dig site.com. Se o DNS falhar, verifique o arquivo /etc/resolv.conf. Em seguida, teste a conectividade com o site usando ping site.com. Se o ping falhar, tente traceroute site.com para ver onde os pacotes são perdidos. Também teste a porta HTTP com curl -I https://site.com para ver se o serviço responde.
ip route show exibe a tabela de roteamento do sistema, mostrando como os pacotes são encaminhados para diferentes redes. É útil para verificar se existe uma rota padrão (default) e se as rotas para redes específicas estão corretas, ajudando a diagnosticar problemas de conectividade.