Eu sugiro ter as duas interfaces ativadas o tempo todo e ajustar sua tabela de roteamento de tal forma que:
- Sua interface principal sempre será a preferida
- Seu secundário tem um IP e está pronto (hot standby), mas o tráfego não está passando (para que você não mude muito)
- Ter um segundo gateway padrão com maior métrica
Você pode fazer o acima usando
ip route add default dev xyz metric 100
Dependendo da sua distribuição linux, você poderá torná-la permanente editando os scripts de post-up ou if-up.
Outra abordagem, especialmente se você não estiver sendo cobrado por uso, é balancear a carga das duas interfaces. Eu nunca configurei nada parecido ... mas parece bastante simples usar lnlb . Não, meu erro, isso é para o balanceamento de carga de LAN / cluster, mas isso tem uma implementação baseada em iptables
.
ATUALIZAÇÃO: com base no comentário:
Uma tabela de roteamento é semelhante à seguinte:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.207.246.1 0.0.0.0 UG 0 0 0 br0
10.0.3.0 0.0.0.0 255.255.255.0 U 0 0 0 lxcbr0
10.207.246.0 0.0.0.0 255.255.255.0 U 0 0 0 br0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 br0
As rotas padrão são aquelas com destino 0.0.0.0
. Você pode ver o meu é:
0.0.0.0 10.207.246.1 0.0.0.0 UG 0 0 0 br0
O metric
indica a prioridade e o menor número é o mais preferido. Por exemplo, com duas interfaces eu poderia ter o seguinte, nesse caso eu prefiro enviar tráfego para minha interface br0
(bridge):
0.0.0.0 10.207.246.1 0.0.0.0 UG 0 0 0 br0
0.0.0.0 10.205.243.1 0.0.0.0 UG 100 0 0 eth1
Se br0
cair por algum motivo, a segunda rota padrão será a única rota e, portanto, eth1
será usado. Quando a br0
voltar, a rota preferida mudará novamente e apontará para essa interface.
Agora, a segunda abordagem, como eu a entendo, usa duas tabelas de roteamento distintas! Usando o exemplo do blog vinculado, você pode ver uma tabela chamada bsnl
e uma tabela chamada tata
. Cada tabela mapeia para um provedor de internet e cada um tem:
-
Uma LAN diretamente conectada:
ip route add 192.168.1.0/24 dev eth1 src 192.168.1.10 table bsnl
-
Uma rota / gateway padrão:
ip route add default via 192.168.1.1 table bsnl
-
E uma regra que assumo mapeia o tráfego de entrada para uma tabela de roteamento (corrija-me se estiver errado - lendo this ):
ip rule add from 192.168.1.10 table bsnl
A configuração acima definiu o lado WAN / ISP (um conjunto para cada conexão com a Internet) Por último, a rota padrão do escopo global decidirá o nexthop
para o tráfego proveniente da LAN e deve ser roteado para WAN . (O escopo global que eu suponho é aplicado para todas as interfaces que não se enquadram em um ip rule
):
ip route add default scope global nexthop via 192.168.1.1 dev eth1 weight 1 \
nexthop via 192.168.0.1 dev eth2 weight 4
A diferença mais importante é que a última técnica usa as duas interfaces / conexões simultaneamente executando balanceamento de carga com as prioridades dadas. No exemplo acima, eth1
é preferido 1/5 do tempo (20%), que eth2
é preferido 4 / 5s (80%). Ao contrário, na primeira configuração, usando duas rotas padrão, apenas uma conexão é usada a qualquer momento.
Disclaimer: Eu nunca fiz a segunda configuração, então algumas coisas podem estar erradas ou não serem explicadas em detalhes ...
Espero que ajude