Como usar ip route para inspecionar e adicionar rotas de rede
1. Introdução ao comando ip route e ao roteamento no Linux
O roteamento IP é um dos pilares fundamentais da comunicação em redes de computadores. No Linux, o subsistema de roteamento gerencia como os pacotes são encaminhados entre diferentes interfaces de rede e destinos. O comando ip route faz parte do pacote iproute2, que substituiu o legado route (do pacote net-tools) por oferecer uma sintaxe mais consistente, suporte a funcionalidades avançadas como múltiplas tabelas de roteamento e melhor integração com o kernel moderno.
Enquanto route -n exibe a tabela de roteamento de forma simples, ip route fornece informações detalhadas como escopo, métrica, protocolo de origem e cache de rota. A estrutura básica de uma entrada na tabela de roteamento inclui: rede de destino, gateway (próximo salto), métrica (prioridade) e interface de saída.
2. Inspecionando a tabela de roteamento atual
Para visualizar a tabela de roteamento principal, utilize:
ip route show
Exemplo de saída típica:
default via 192.168.1.1 dev eth0 proto dhcp metric 100
10.0.0.0/8 via 10.0.0.1 dev eth1 proto static metric 50
172.16.0.0/16 dev eth2 proto kernel scope link metric 100
192.168.1.0/24 dev eth0 proto kernel scope link metric 100
- default: Rota padrão para qualquer destino não especificado
- via: Endereço do gateway (próximo salto)
- dev: Interface de rede utilizada
- proto: Protocolo que adicionou a rota (kernel, static, dhcp, etc.)
- scope: Alcance da rota (link, host, universe)
- metric: Prioridade (menor valor = maior prioridade)
Para filtrar por interface:
ip route show dev eth0
Para exibir a rota específica para um destino:
ip route get 8.8.8.8
Saída:
8.8.8.8 via 192.168.1.1 dev eth0 src 192.168.1.100 uid 1000
Esse comando é extremamente útil para verificar qual caminho o sistema escolheria para alcançar um endereço específico.
3. Adicionando rotas estáticas simples
A sintaxe fundamental para adicionar uma rota estática é:
ip route add <destino> via <gateway> dev <interface>
Exemplo 1: Rota para uma sub-rede local
ip route add 10.10.20.0/24 via 192.168.1.254 dev eth0
Exemplo 2: Rota para uma sub-rede remota
ip route add 172.20.0.0/16 via 10.0.0.1 dev eth1
Exemplo 3: Configuração da rota padrão (default gateway)
ip route add default via 192.168.1.1 dev eth0
Ou, de forma equivalente:
ip route add 0.0.0.0/0 via 192.168.1.1 dev eth0
Após adicionar, verifique com ip route show se a rota aparece corretamente.
4. Trabalhando com métricas e prioridades
A métrica define a prioridade de uma rota. Quando existem múltiplas rotas para o mesmo destino, o kernel escolhe aquela com a menor métrica. Isso é útil para cenários de failover ou balanceamento.
Adicionando rota com métrica específica:
ip route add 10.0.0.0/8 via 192.168.1.254 dev eth0 metric 50
ip route add 10.0.0.0/8 via 10.0.0.1 dev eth1 metric 100
Nesse exemplo, a rota via eth0 (métrica 50) será preferida. Se ela falhar, a rota via eth1 (métrica 100) assumirá.
Para simular failover, remova a rota primária:
ip route del 10.0.0.0/8 via 192.168.1.254 dev eth0
O tráfego automaticamente passará a usar a rota secundária.
5. Gerenciando rotas com escopo e tipo
O escopo define o alcance da rota:
- link: Válida apenas para a própria interface (ex.: redes diretamente conectadas)
- host: Rota para um único host
- universe: Alcance global (padrão para rotas via gateway)
Rotas especiais permitem controle fino de tráfego:
- blackhole: Descarta pacotes silenciosamente
- unreachable: Retorna ICMP "Destination Unreachable"
- prohibit: Retorna ICMP "Administratively Prohibited"
Exemplo prático: bloquear tráfego para uma rede específica:
ip route add blackhole 10.0.0.0/8
Para testar:
ping 10.0.0.1
O comando não receberá resposta, mas o tráfego será descartado localmente sem enviar pacotes à rede.
6. Removendo e modificando rotas existentes
Para remover uma rota, utilize a mesma sintaxe da adição, substituindo add por del:
ip route del 10.10.20.0/24 via 192.168.1.254 dev eth0
Para modificar uma rota existente (alterar gateway ou métrica):
ip route change 10.0.0.0/8 via 10.0.0.2 dev eth1 metric 80
Cuidado ao remover a rota padrão: Se você remover a rota default sem ter uma alternativa, perderá conectividade com redes externas. Para restaurá-la rapidamente:
ip route add default via 192.168.1.1 dev eth0
7. Persistência de rotas e integração com scripts
Rotas adicionadas via comando ip route são voláteis e desaparecem após reinicialização. Para torná-las permanentes, configure nos arquivos do sistema:
Debian/Ubuntu (/etc/network/interfaces):
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
up ip route add 10.0.0.0/8 via 192.168.1.254 dev eth0
down ip route del 10.0.0.0/8 via 192.168.1.254 dev eth0
Red Hat/CentOS (/etc/sysconfig/network-scripts/route-eth0):
10.0.0.0/8 via 192.168.1.254 dev eth0
Para automação com scripts de inicialização, crie um script em /etc/network/if-up.d/ ou use systemd:
# /etc/systemd/system/static-routes.service
[Unit]
Description=Static routes
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/add-static-routes.sh
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
8. Diagnóstico avançado e resolução de problemas
Para verificar o caminho real que um pacote seguiria:
ip route get 10.20.30.40
Combine com ping para testar conectividade:
ping -c 4 10.20.30.40
Se o ping falhar, verifique conflitos de rota com:
ip route show table all
Isso exibe todas as tabelas de roteamento (principal, local, default), permitindo identificar rotas conflitantes.
Para depuração avançada, use tcpdump para capturar pacotes na interface de saída esperada:
tcpdump -i eth0 -n icmp
Execute um ping para o destino e observe se os pacotes estão sendo enviados pela interface correta.
Referências
- Documentação oficial do iproute2 (kernel.org) — Parâmetros do kernel para roteamento IP e configuração avançada.
- Guia de roteamento estático no Linux (Red Hat Customer Portal) — Tutorial oficial da Red Hat sobre configuração de rotas estáticas.
- Manual do comando ip (man7.org) — Página de manual completa com todas as opções do comando ip.
- Tutorial de roteamento no Linux (DigitalOcean) — Guia prático para configurar roteamento IP básico em servidores Linux.
- Artigo sobre ip route e tabelas de roteamento (Linux Journal) — Explicação detalhada do comando ip route com exemplos avançados.
- Documentação do netplan para rotas estáticas (Ubuntu) — Como configurar rotas estáticas usando netplan em distribuições Ubuntu modernas.
- Guia de diagnóstico de rede com ip route (Arch Linux Wiki) — Wiki da Arch Linux com dicas de diagnóstico e configuração de roteamento.