A tabela de rotas define por onde cada pacote deve ser enviado para alcançar seu destino. Entender como ela funciona é fundamental para diagnosticar problemas de conectividade e configurar redes corretamente.
ip route show
O comando principal para visualizar a tabela de rotas:
ip route show
default via 192.168.1.1 dev eth0 proto dhcp metric 100
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100 metric 100
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
Cada linha representa uma rota. Vamos entender os campos:
- default via 192.168.1.1 - rota padrão; todo tráfego sem rota específica vai para o gateway 192.168.1.1.
- dev eth0 - a interface de saída.
- proto dhcp - a rota foi aprendida via DHCP.
- proto kernel - rota criada automaticamente pelo kernel ao configurar o IP.
- scope link - destino alcançável diretamente (rede local).
Verificando o default gateway
Para ver apenas o gateway padrão:
ip route show default
default via 192.168.1.1 dev eth0 proto dhcp metric 100
Outra forma rápida:
ip route get 8.8.8.8
8.8.8.8 via 192.168.1.1 dev eth0 src 192.168.1.100 uid 1000
cache
Dica: O comando
ip route get mostra exatamente qual rota o kernel usaria para alcançar um endereço específico. Excelente para troubleshooting.Adicionando rotas
Para adicionar uma rota para uma subnet específica passando por um gateway:
# Rota para a rede 10.0.0.0/8 via gateway 192.168.1.254
sudo ip route add 10.0.0.0/8 via 192.168.1.254 dev eth0
# Rota para host específico
sudo ip route add 10.20.30.40/32 via 192.168.1.254
Removendo rotas
# Remover rota específica
sudo ip route del 10.0.0.0/8 via 192.168.1.254
# Remover default gateway (cuidado!)
sudo ip route del default
Substituindo o default gateway
# Trocar o gateway padrão
sudo ip route replace default via 192.168.1.254 dev eth0
Rotas persistentes
Rotas adicionadas com ip route add são perdidas após reboot. Para torná-las permanentes, o método depende da distribuição:
Debian/Ubuntu (Netplan)
# /etc/netplan/01-netcfg.yaml
network:
version: 2
ethernets:
eth0:
routes:
- to: 10.0.0.0/8
via: 192.168.1.254
sudo netplan apply
RHEL/CentOS (nmcli)
# Adicionar rota persistente via nmcli
sudo nmcli connection modify "Wired connection 1" \
+ipv4.routes "10.0.0.0/8 192.168.1.254"
# Aplicar
sudo nmcli connection up "Wired connection 1"
Verificando após reboot
# Confirme que a rota sobreviveu ao reboot
ip route show | grep 10.0.0.0
10.0.0.0/8 via 192.168.1.254 dev eth0 proto static metric 100
Dica: Sempre teste uma rota com
ip route add antes de torná-la persistente. Assim você valida que funciona sem correr o risco de travar o acesso remoto após um reboot.