Alteração do GW padrão dependendo do status da porta

0

Eu tenho um servidor baseado em Ubuntu com 4 interfaces Ethernet (eth0, eth1, eth2, eth3). Eth0 da rede 192.168.0.0/24 está tendo um endereço IP fixo 192.168.0.19 e GW: 192.168.0.254 e eth1 para eth3 estão em um modo bridge com br0 IP: 10.0.0.3, net: 10.0.0.0/24, gw: 10.0.0.254. O servidor está conectado à rede externa através da porta eth0 ou eth3. Eu quero no caso que eth0 é UP do servidor para ter GW padrão da rede 192.168.0.0/24 e se eth3 é UP ter GW padrão da rede 10.0.0.0/24. Eu tentei adicionar duas tabelas de roteamento / etc / iproute2 / rt_tables:

# reserved values
#
255     local
254     main
253     default
0       unspec
#
# local
#
#1      inr.ruhep
2 rt1
3 rt2

e alterou o arquivo / etc / network / interfaces, adicionando as regras de post-up e post-down da seguinte forma:

post-up ip route add 192.168.0.0/24 dev eth0 src 192.168.0.19 table rt2
post-up ip route add default via 192.168.0.254 dev eth0 table rt2
post-up ip rule add from 192.168.0.19/32 table rt2
post-up ip rule add to 192.168.0.19/32 table rt2
post-up ip r add default via 192.168.0.254 metric 101 dev eth0
post-down ip rule del from 0/0 to 0/0 table rt2
post-down ip rule del from 0/0 to 0/0 table rt2

e para a eth3:

post-up ip route add 10.0.0.0/24 dev eth3 src 10.0.0.3 table rt1
post-up ip route add default via 10.0.0.254 dev eth3 table rt1
post-up ip rule add from 10.0.0.3/32 table rt1
post-up ip rule add to 10.0.0.3/32 table rt1
post-up ip r add default via 10.0.0.254 metric 100 dev eth3
post-down ip rule del from 0/0 to 0/0 table rt1
post-down ip rule del from 0/0 to 0/0 table rt1

O problema é que o servidor Linux não está lendo essas regras do arquivo de configuração de interfaces e quando eu executo ip rule show ele está me mostrando as tabelas de roteamento rt1 e rt2 em sua saída. Se eu adicionar essas regras manualmente, ele seria listado corretamente, mas, por algum motivo, o roteamento automático não estava funcionando corretamente e o dispositivo não estava excluindo o padrão gw e apenas adicionando o novo. Eu estava seguindo principalmente outro segmento aqui: É possível ter vários gateways padrão para conexões de saída? . Eu sei que eu posso escrever um script bash que irá verificar o status das duas portas em intervalos regulares e, em seguida, excluir e adicionar as rotas apropriadas, mas eu acho que isso não é solução tão elegante desde que este script tem que trabalhar sempre em segundo plano e irá adicionar alguma latência à execução, o que será o máximo do tempo de polling configurado. Eu realmente gosto da solução baseada no post-up / post-down, mas não consigo fazer funcionar corretamente na minha máquina.

    
por Georgе Stoyanov 14.03.2018 / 12:07

0 respostas