[Reenviado, sob conselho de um participante, de stackoverflow]
Eu tenho um sistema (kernel 4.4) que tem duas interfaces de rede para o mundo externo - ethernet, por exemplo. através de um roteador ADSL e ppp. Ambos são NAT. (Não preciso aceitar conexões de entrada e não tenho ipv6) A conexão ethernet está propensa a falhas - talvez apenas o cabo local, mas talvez o roteador ADSL (por exemplo, desligado) ou até mesmo a linha ISP / ADSL . Eu posso detectar isso fazendo ping especificamente nessa interface; O que eu gostaria de fazer nessa situação é definir o ppp como o padrão do sistema, ou seja, para que, quando um aplicativo abrir uma nova conexão, não precise saber ou especificar qual interface usar. Eu não quero simplesmente derrubar a interface eth, já que preciso continuar pingando para saber quando ela está viva novamente.
As informações da rota são as seguintes:
route -n
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.10.254 0.0.0.0 UG 100 0 0 eth0
0.0.0.0 10.68.55.242 0.0.0.0 UG 700 0 0 ppp0
10.68.55.242 0.0.0.0 255.255.255.255 UH 700 0 0 ppp0
192.168.10.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
ip route
default via 192.168.10.254 dev eth0 proto static metric 100
default via 10.68.55.242 dev ppp0 proto static metric 700
10.68.55.242 dev ppp0 proto kernel scope link src 10.68.55.242 metric 700
192.168.10.0/24 dev eth0 proto kernel scope link src 192.168.10.125 metric 100
[I'm unsure about there being two 'default', or indeed why there are...]
ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:c6:7f:e5:50 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.125/24 brd 192.168.10.255 scope global dynamic eth0
valid_lft 75591sec preferred_lft 75591sec
3: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 3
link/ppp
inet 10.68.55.242/32 scope global ppp0
valid_lft forever preferred_lft forever
Acho que posso obter o resultado desejado removendo / re-adicionando uma das rotas, dando-lhe uma métrica maior ou menor que a da outra interface. Mas isso significa um pouco de análise tortuosa em um script.
Então, eu me perguntei se havia uma maneira mais "ousada" de fazer isso? Eu li muitas páginas sobre o iptables & regras, mas para cenários ligeiramente diferentes e estou lutando para adaptar os princípios à minha situação particular (mais simples?). Também não tenho certeza se eles acabariam sendo mais esbeltos.
Eu pesquisei aqui também, e percebo que mudar a métrica da rota pode, de fato, ser o método mais direto, afinal. Mas quaisquer outras maneiras rápidas e limpas para eu olhar? Algo que dá um comando muito simples para estimular as coisas de um lado para o outro. Obrigado.
Tags networking ip linux