🌐 Componente: Rede. Problemas de rede em VMs Linux podem ter origem em configuração de interfaces, drivers de NIC virtual, parâmetros do kernel TCP/IP, firewalls ou infraestrutura subjacente. O diagnóstico deve partir da camada mais baixa (adaptador, erros) para a mais alta (DNS, portas de aplicação).
Quando suspeitar de problema de rede?
- Acesso a serviços externos ou internos lento mas a VM parece saudável
- Timeouts frequentes em aplicações cliente-servidor
- Resolução de nomes (DNS) lenta
- Cópias de ficheiros para partilhas de rede muito abaixo do esperado
ip -s linkmostra erros crescentes em RX ou TX
1. Estado e Erros das Interfaces
# Estado de todas as interfaces
ip addr show
ip link show
# Estatísticas de erros por interface — o mais importante!
ip -s link show
# Forma clássica (requer net-tools)
ifconfig -a
netstat -i
🔴 Verificar no output de
ip -s link: Os campos errors e dropped em RX e TX devem ser 0 ou muito próximos. Valores crescentes indicam problemas de driver, configuração do NIC virtual ou sobrecarga do switch virtual.
# Verificar erros de driver/firmware da NIC
ethtool -S eth0 | grep -i error
# Estado de offloading (deve estar ativo para melhor performance)
ethtool -k eth0 | grep -E 'offload|scatter'
# Velocidade e duplex da interface
ethtool eth0 | grep -E 'Speed|Duplex|Link'
2. ss — Conexões e Estatísticas TCP
# Conexões TCP estabelecidas com processo
ss -tnp
# Portas em escuta com processo responsável
ss -tlnp
# Sumário de estatísticas TCP/UDP
ss -s
# Conexões por estado (TIME_WAIT, ESTABLISHED, etc.)
ss -tan | awk '{print $1}' | sort | uniq -c | sort -rn
# Retransmissões e erros TCP (via netstat)
netstat -st | grep -E 'retransmit|fail|error|reset'
⚠️ Muitas conexões em TIME_WAIT: Um número muito elevado de conexões em
TIME_WAIT pode indicar esgotamento de portas efémeras. Verificar com ss -s e se necessário ajustar: sysctl -w net.ipv4.tcp_tw_reuse=1.
3. ping, traceroute e mtr — Latência e Rota
# Ping com 20 pacotes
ping -c 20 8.8.8.8
# Traceroute sem resolução de DNS (mais rápido)
traceroute -n 8.8.8.8
# mtr — combinação em tempo real de ping + traceroute (a melhor ferramenta)
# apt install mtr / yum install mtr
mtr -n 8.8.8.8
# mtr em modo não-interativo (100 pacotes, output para terminal)
mtr -n --report --report-cycles 50 8.8.8.8
💡 mtr é a melhor ferramenta para diagnóstico de latência de rede — mostra perda de pacotes e RTT em tempo real para cada hop da rota. Identificar em que hop a latência aumenta dramaticamente ou onde há perda de pacotes.
Interpretar o output do mtr --report:
- Loss%: perda de pacotes por hop — deve ser 0% no destino
- Avg: latência média em ms
- StDev: variância — valores altos indicam instabilidade (jitter)
4. Diagnóstico DNS
# Resolver nome com informação detalhada
dig google.com
# Forçar servidor DNS específico para teste
dig @8.8.8.8 google.com
# Medir tempo de resolução DNS
time dig google.com | grep 'Query time'
# Verificação rápida
nslookup google.com
# Configuração DNS atual
cat /etc/resolv.conf
cat /etc/nsswitch.conf | grep hosts
⚠️ DNS lento: Uma resolução DNS que demora mais de 100 ms é percetível. Testar o DNS interno com
dig @<servidor-dns-interno> <dominio-interno> e comparar com um DNS público. Se o DNS interno for significativamente mais lento, o problema pode estar no servidor DNS ou na rede até ele.
5. iftop e nethogs — Tráfego por Host e Processo
# Tráfego por endereço IP remoto (requer root)
# apt install iftop / yum install iftop
iftop -i eth0
# Tráfego por processo (requer root)
# apt install nethogs / yum install nethogs
nethogs eth0
# Monitor simples sem ferramentas adicionais
watch -n 1 'cat /proc/net/dev | column -t'
6. tcpdump — Captura de Pacotes
# Captura de tráfego numa interface (Ctrl+C para parar)
tcpdump -i eth0 -n -v
# Filtrar por host específico
tcpdump -i eth0 -n host 192.168.1.100
# Filtrar por porta
tcpdump -i eth0 -n port 443
# Guardar captura para análise com Wireshark
tcpdump -i eth0 -w /tmp/captura.pcap
# Captura limitada a 100 MB por ficheiro
tcpdump -i eth0 -w /tmp/captura.pcap -C 100
💡 Wireshark: Transferir o ficheiro
.pcap para a workstation e analisar com o Wireshark — filtros úteis: tcp.analysis.retransmission para retransmissões, dns para queries DNS, tcp.time_delta > 0.5 para operações lentas.
7. Teste de Velocidade com iperf3
# Instalar: apt install iperf3 / yum install iperf3
# No servidor de destino (executar primeiro):
iperf3 -s
# No cliente (executar teste de 30 segundos):
iperf3 -c <ip_servidor> -t 30
# Teste bidirecional
iperf3 -c <ip_servidor> -t 30 --bidir
# Teste de UDP (útil para VoIP/streaming)
iperf3 -c <ip_servidor> -u -b 100M -t 30
8. Parâmetros sysctl de Rede
# Ver configuração TCP atual
sysctl net.ipv4.tcp_rmem
sysctl net.ipv4.tcp_wmem
sysctl net.core.rmem_max
sysctl net.core.wmem_max
# Todas as configurações de rede
sysctl -a | grep net.ipv4.tcp | sort
# Verificar se TCP BBR está ativo (melhor algoritmo de congestion control)
sysctl net.ipv4.tcp_congestion_control
9. Checklist — Diagnóstico de Rede
- ✅
ip -s link show— erros em RX/TX acima de zero e a crescer? - ✅
ethtool -S eth0 | grep error— erros no driver da NIC? - ✅
ping -c 20 <gateway>— latência e perda de pacotes? - ✅
mtr -n <destino>— em que hop a latência aumenta? - ✅
time dig <dominio-interno>— DNS lento? - ✅
netstat -st | grep retransmit— retransmissões TCP? - ✅
ss -s— muitas conexões em TIME_WAIT ou CLOSE_WAIT? - ✅
iperf3para servidor de referência — throughput dentro do esperado?
