route trafega o gateway diferente pela rede de destino

8

Eu tenho vários gateways e gostaria de encaminhar o tráfego de diferentes gateways com base em seu destino. Eu estou supondo que eu preciso usar uma combinação de regras iproute2 e iptables, mas não tenho certeza por onde começar.
Alguém pode dar um exemplo?

    
por Walter 17.11.2013 / 15:10

3 respostas

7

Você provavelmente pode fazer o que quiser com ip route :

ip route add 8.8.8.8 via 10.0.0.1 dev enp3s8
ip route add 10.0.0.0/24 dev eth0

O primeiro ip route add mostra um único endereço IP, enviou uma determinada interface ethernet (ep3s8) para o roteador de próximo salto, 10.0.0.1

A segunda rota é para uma rede inteira, 10.x.y.z, enviada uma determinada placa ethernet, eth0. Essa é a "rede local", que não tem um roteador de próximo salto, está tudo no mesmo caminho lógico.

Você quer ler man ip-route antes de fazer qualquer coisa, no entanto. Além disso, esteja preparado para ter que reinicializar e não faça isso remotamente. Você pode facilmente criar rotas incorretas que terminem seu acesso remoto. Eu sou a voz da experiência nesta última recomendação.

    
por 17.11.2013 / 17:18
5

O que você está perguntando é policy-based routing ou source-based routing . Há uma excelente introdução por David Schwartz neste mesmo site.

Gostaria de salientar que existe também um pequeno programa, que você pode encontrar aqui , que permite ligar aplicativos específicos a uma determinada interface. É claro que isso é fácil com aplicativos como o openssh, que têm opções para vincular ao endereço de escuta desejado. Mas essa biblioteca permite vincular até mesmo aplicativos sem essas opções (como o Firefox) a um determinado endereço IP.

Dessa forma, você pode escolher se deseja fornecer tabelas de roteamento separadas para todos os aplicativos ou sobrepor essas mesmas especificações por aplicativo.

    
por 17.11.2013 / 17:19
3

Um bom lugar para ler sobre roteamento de base de origem é Roteamento avançado de Linux & Controle de Tráfego
você também pode ler manuais

man ip rule
man ip route

Em geral, você deve adicionar a regra (adicionei a interface eth1 apenas para fins de demonstração, ela pode ser omitida)

#ip rule add dev eth1 to 170.10.0.10 table 2 priority 20000

aqui estão:
dev eth1 - dispositivo que será usado para enviar pacotes
para 170.10.0.10 - o destino de tabela 2 - tabela onde você deve ass suas rotas
prioridade 20000 - prioridade da regra

você pode ver sua regra por

#ip ru sh
    0: from all lookup local
20000: from all to 170.10.0.10 iif eth1 lookup 2
32766: from all lookup main
32767: from all lookup default

Em seguida, você deve adicionar as rotas da maneira usual, mas você deve especificar a tabela (tabela 2), onde você colocaria a rota

#ip route add table 2 via 170.10.0.1 default

para ver suas rotas, você deve executar

#ip route show ta 2
    
por 17.11.2013 / 17:25