O gerenciamento de rotas no Linux permite definir caminhos específicos para o tráfego de rede, garantindo que os pacotes cheguem ao destino correto através de diferentes interfaces ou gateways. Este guia aborda desde comandos temporários até configurações persistentes.
- Manipulação de Rotas com o utilitário route (Legado)
O comando route é uma ferramenta tradicional para gerenciar a tabela de roteamento IP do kernel. As alterações feitas aqui são perdidas após o reinício do sistema.
A. Definindo rota para um Host específico
# Rota para um IP único via interface específica
route add -host 10.20.30.40 dev ens192
# Rota para um IP único através de um gateway
route add -host 10.20.30.45 gw 192.168.15.1
B. Definindo rota para uma Rede
# Adicionando uma sub-rede via interface
route add -net 172.16.10.0/24 dev ens192
# Adicionando uma sub-rede via gateway específico
route add -net 172.16.20.0 netmask 255.255.255.0 gw 192.168.15.254
C. Gateway Padrão (Default Route)
# Define o caminho para qualquer destino não listado explicitamente
route add default gw 192.168.15.1
D. Remoção e Visualização
# Remover rotas existentes
route del -host 10.20.30.40
route del -net 172.16.10.0/24
# Visualizar tabela numérica (evita resolução de DNS lenta)
route -n
- Utilizando o comando moderno ip route (iproute2)
A suíte iproute2 é o padrão atual no Linux, oferecendo maior controle e flexibilidade que as ferramentas net-tools antigas.
A. Comandos Básicos de Adição
# Equivalente ao route add -host
ip route add 10.50.50.1 via 192.168.100.1
# Adicionar uma rede completa
ip route add 10.50.0.0/16 dev eth1
# Definir gateway padrão
ip route add default via 192.168.100.254
B. Modificação e Substituição
Diferente do comando antigo, o ip route permite alterar rotas existentes de forma atômica.
# Altera uma rota existente
ip route change 10.50.0.0/16 via 192.168.100.5
# Substitui uma rota ou a cria caso não exista
ip route replace 172.30.0.0/24 dev eth0
C. Exclusão e Limpeza
# Remover uma rota específica
ip route del 10.50.0.0/16
# Limpar rotas de uma interface específica (Cuidado!)
ip route flush dev eth1
# Limpar o cache de roteamento
ip route flush cache
D. Inspeção da Tabela
# Listar todas as rotas
ip route show
# Verificar qual rota o sistema usará para um destino específico
ip route get 8.8.8.8
- Configuração Persistente (RHEL/CentOS/Fedora)
Para garantir que as rotas sobrevivam ao reboot, as definições devem ser escritas em arquivos de configuração no diretório /etc/sysconfig/network-scripts/.
Crie ou edite o arquivo route-interface (substitua interface pelo nome real, como eth0):
# Exemplo de conteúdo do arquivo /etc/sysconfig/network-scripts/route-eth0
default via 192.168.1.1
10.0.0.0/8 via 192.168.1.254
172.20.0.0/16 via 10.0.0.1
- Resolução de Problemas Comuns
Erro: SIOCADDRT: Network is unreachable
Este erro ocorre geralmente quando você tenta adicionar uma rota através de um gateway que não pertence a nenhuma das sub-redes configuradas em suas interfaces locais. O sistema não sabe como alcançar o gateway para enviar o tráfego adiante.
- Laboratório Prático: Interconexão de Redes com Múltiplos Roteadores
Neste cenário, utilizaremos três roteadores (R1, R2, R3) para conectar dois hosts (A e B) em redes distintas.
Topologia de Referência
Host A (Rede 192.168.10.0/24) ↔ R1 ↔ (Rede 10.0.0.0/24) ↔ R2 ↔ (Rede 10.1.0.0/24) ↔ R3 ↔ Host B (Rede 172.16.0.0/24)
Configuração do Encaminhamento IP
Em todos os rotaedores, o encaminhamento de pacotes deve estar ativo no kernel:
# Ativar temporariamente
echo 1 > /proc/sys/net/ipv4/ip_forward
# Ativar permanentemente em /etc/sysctl.conf
net.ipv4.ip_forward = 1
# Aplicar: sysctl -p
Configuração das Rotas Estáticas
Para que a comunicação ocorra, cada roteador precisa conhecer as redes que não estão diretamente conectadas a ele.
No Roteador 1 (R1):
# Conhecer a rede do Host B e a rede entre R2 e R3
ip route add 10.1.0.0/24 via 10.0.0.2
ip route add 172.16.0.0/24 via 10.0.0.2
No Roteador 2 (R2):
# Conhecer as extremidades (Host A e Host B)
ip route add 192.168.10.0/24 via 10.0.0.1
ip route add 172.16.0.0/24 via 10.1.0.2
No Roteador 3 (R3):
# Conhecer a rede do Host A e a rede entre R1 e R2
ip route add 10.0.0.0/24 via 10.1.0.1
ip route add 192.168.10.0/24 via 10.1.0.1
Após essas configurações e a definição dos gateways corretos nos hosts (Host A apontando para R1 e Host B apontando para R3), a conectividade fim-a-fim deve estar operacional.