Linux: Como configurar automaticamente o roteamento IP com base nos resultados do ping

3

Eu tenho um servidor linux com duas conexões possíveis para a rede: um é um modem celular lento e de alta latência (ppp0), e o outro é através da rápida banda larga (wlan0).

O problema é que a conexão de banda larga às vezes cai. No entanto, como o wifi ainda está lá, o wicd deixa a rota padrão por meio do wlan0. (Se o sinal do wifi desaparecesse, o wicd removeria o wlan0 das tabelas de roteamento e a rota padrão passaria para o ppp0, mas, nesse caso, o próprio wifi parece bem).

O que eu preciso é de uma ferramenta que realmente teste a conectividade todo o caminho para alguns servidores selecionados e, se eles estiverem inacessíveis, defina a interface de roteamento padrão como ppp0 por um tempo.

Eu provavelmente posso hackear um script que pode fazer isso, mas parece algo que outras pessoas precisariam fazer. Ainda não existe uma ferramenta ou script que faça isso?

    
por Jemenake 17.03.2014 / 19:21

1 resposta

1

Parece que sua pergunta é mais "Como posso testar programaticamente a largura de banda disponível?" Para o seu teste de ping, você poderia fazer algo assim:

root@xxxxxxlp01 ~ $ ping ehswebvlp10 -c4 | egrep -wo "time=.*" | cut -f2 -d= |  awk '{ sum+=$1} END {print sum/4}'
0.49
root@xxxxxxlp01 ~ $ ping ehswebvlp10 -c4 | egrep -wo "time=.*" | cut -f2 -d= |  awk '{ sum+=$1} END {print sum/4}'
0.208
root@xxxxxxlp01 ~ $ ping ehswebvlp10 -c4 | egrep -wo "time=.*" | cut -f2 -d= |  awk '{ sum+=$1} END {print sum/4}'
0.217

Em seguida, faça alguma lógica de ramificação com base no número que você recebe. Outro teste seria usar nc para estabelecer uma conexão TCP com um servidor remoto em um período de tempo especificado usando a opção -w para especificar um tempo limite em segundos. Exemplo:

root@xxxxxxlp01 ~ $ nc -vz google.com 80 -w 3
Connection to google.com 80 port [tcp/http] succeeded!

Então faça sua ramificação a partir disso.

É importante para a estabilidade que seus testes sejam feitos em um período de tempo para permitir o congestionamento temporário. Caso contrário, suas interfaces podem acabar oscilando. Por exemplo, se o ping estiver acima de seu limite, se for sleep 15 ou algo assim e verifique uma segunda vez.

Eu também usaria logger para jogar algo em syslogd toda vez que você fizer uma alteração na rota padrão. Caso contrário, você pode esquecer que fez isso, obter alguma coisa de rede estranha daqui a 4-5 meses e precisar de ajuda para descobrir o que continua mudando a rota padrão.

    
por 17.03.2014 / 19:39