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:

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.