Reconecte se o link estiver obsoleto

1

Eu corro a caixa FreeBsd com o pppd sobre Ethernet. Tudo funciona muito bem com apenas uma exceção. Às vezes, não com muita frequência, a conexão se torna obsoleta. Tudo parece estar ok: ifconfig mostra que está ativo, o ppp diz que o link está ok, mas o tráfego não aparece. O que eu faço é executar killall pppd e depois reiniciar o ppp manualmente. Ele se reconecta e as coisas estão ótimas novamente.

Minha pergunta é: existe uma configuração no pppd (ou mpd5, ou em qualquer outro lugar) que, se definida, faz o ppp detectar que o link é obsoleto e reconectar automaticamente?

Se não houver essa configuração, talvez haja outra solução?

    
por akond 06.09.2012 / 19:54

3 respostas

0

Então, eu criei essa solução.

enable lqr
set lqrperiod 5
    
por 12.09.2012 / 21:14
1

Você configurou as seguintes opções do pppd Protocolo de Controle de Link ? Eles controlam se e com que freqüência o pppd envia ecos do LCP para verificar se o link ainda está ativo ou não, e como ele responde se não estiver.

lcp-echo-failure n
lcp-echo-interval n
lcp-echo-adaptive

Eles combinam bem com as seguintes opções, que controlam se o pppd tentará reiniciar uma conexão após o término, quanto tempo atrasar antes de se reconectar e quantas vezes ele será reiniciado após falhas:

persist
holdoff n
maxfail n

Se maxfail for diferente de zero, você também pode querer que um script wrapper ou job-cron reinicie o pppd se ele tiver saído completamente (ou seja, configuração de falhas > maxfail). Um motivo comum para ter maxfail > 0 é que um script de wrapper pode ser escrito para ter respostas mais inteligentes (do que tentar novamente várias vezes) para, por exemplo, uma indisponibilidade prolongada.

Veja a página do manual do pppd para mais detalhes sobre estas e outras opções de configuração.

    
por 10.09.2012 / 11:36
0

Eu adicionaria um script de shell simples ao crontab, que faria ping periodicamente em um host conhecido e reiniciaria o serviço se o host não pudesse ser alcançado.

Algo parecido com isto:

#!/bin/sh
ping -q -c3 google.com &> /dev/null
if [[ $? != "0" ]]
  then
    ppp_restart_command
fi

Nomeie-o, por exemplo, conn_check.sh , adicione-o ao crontab e deixe-o rodar a cada 60 s.

    
por 08.09.2012 / 23:32

Tags