Controlando qual interface de rede é usada como padrão

1

[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.

    
por ColH 13.07.2017 / 15:24

0 respostas