Respostas:
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, 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-route
antes 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.
O que você está perguntando é policy-based routing
ou 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.
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