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.
Tags networking gateway linux bridge