encaminhar tráfego para fora de gateway diferente por rede de destino


9

Eu tenho vários gateways e gostaria de direcionar algum tráfego para diferentes gateways com base em seu destino. Acho que precisaria usar uma combinação de regras iproute2 e iptables, mas não sei por onde começar.
Alguém pode dar um exemplo?

Respostas:


9

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 addmostra um único endereço IP, enviado uma determinada interface Ethernet (ep3s8) para o roteador do próximo salto, 10.0.0.1

A segunda rota é para uma rede inteira, 10.xyz, enviada uma determinada placa Ethernet, eth0. Essa é a "rede local", que não possui um roteador de próximo salto, está tudo no mesmo fio lógico.

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


1
Observe que você também pode especificar gateways para blocos inteiros, `` ip route add 10.1.0.0/16 via 192.168.0.1` '
jthill

Obrigado pela sua resposta, isso ajudará a me indicar a direção certa. Vou tentar e informar você.
Walter

5

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

Gostaria de salientar que também existe um pequeno programa interessante, que pode ser encontrado aqui , que permite vincular aplicativos específicos a uma determinada interface. É claro que isso é fácil com aplicativos como o openssh, que tem opções para vincular ao endereço de escuta desejado. Mas essa biblioteca permite vincular até 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 substituir essas mesmas especificações por aplicativo.


Você não precisa de roteamento de política se deseja rotear por destino.
Diego Woitasen

Olá, esse também é um bom argumento, hmm, que permitirá maior flexibilidade, provavelmente mais avançada do que eu gostaria de estar neste momento. Definitivamente algo para aprender.
21313 Walter Walter

3

um bom lugar para ler sobre o roteamento da base de origem é o Linux Advanced Routing & Traffic Control,
você também pode ler manuais

man ip rule
man ip route

Em geral, você deve adicionar a regra (eu 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 - a
tabela de destino 2 - tabela em que você deve atribuir
prioridade às suas rotas 20000 - prioridade da regra

você pode ver sua regra

#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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.