wvdial, ppp0 e configurando a rota padrão (automaticamente)

0

Estou configurando uma conexão 3G para ser monitorada por supervisord usando wvdial em uma máquina sem cabeçalho (raspberryPi / raspbian), que só posso acessar através da conexão 3G, uma vez que ela esteja ativa. Em suma, o supervisor mantém o funcionamento do wvdial, com o autoreconnect do wvdial desligado (eu li em algum lugar que o wvdial não é muito bom em reconectando automaticamente).

A conexão permanece sem nenhum problema, mas a rota padrão nem sempre é definida. Nesse caso, não consigo acessar a caixa. Não consigo definir manualmente a rota com sudo route add default ppp0 , obviamente, isso não funcionará uma vez ao vivo. Eu poderia simplesmente executar o acima em um script, mas desde que ele falha se a rota já existe eu precisaria de algum tratamento de erro, e tem que haver alguma maneira limpa de fazê-lo. Alguma dica sobre a opção de configuração ausente?

Minha configuração (acho que esses são os arquivos relevantes):

/etc/wvdial.conf :

[Dialer Defaults]
Modem Type = Analog Modem
ISDN = 0
Phone = *99#
Stupid mode=1
Auto Reconnect = off

[Dialer myprovider]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0
Baud = 115200
Modem = /dev/gsmmodem
Username = xxxx
Password = xxxx

/etc/ppp/peers/wvdial :

noauth
name wvdial
defaultroute
replacedefaultroute

/etc/network/interfaces :

auto eth0
iface eth0 inet static
    address 192.168.2.10
    netmask 255.255.255.0
    gateway 192.168.2.1
    dns-nameservers 8.8.8.8 8.8.4.4
    
por Laurent S 02.08.2015 / 20:23

2 respostas

2

Você pode escrever seu próprio script que faz o roteamento em /etc/ppp/ip-up.d/

qualquer script nesse diretório é chamado pelo script /etc/ppp/ip-up

estas variáveis são acessíveis a partir do ip-up:

# This script is called with the following arguments:
#    Arg  Name                          Example
#    $1   Interface name                ppp0
#    $2   The tty                       ttyS1
#    $3   The link speed                38400
#    $4   Local IP number               12.34.56.78
#    $5   Peer  IP number               12.34.56.99
#    $6   Optional ''ipparam'' value    foo
# These variables are for the use of the scripts run by run-parts
PPP_IFACE="$1"
PPP_TTY="$2"
PPP_SPEED="$3"
PPP_LOCAL="$4"
PPP_REMOTE="$5"
PPP_IPPARAM="$6"
export PPP_IFACE PPP_TTY PPP_SPEED PPP_LOCAL PPP_REMOTE PPP_IPPARAM

isso funcionou para mim foi capaz de adicionar rotas e também definir a métrica.

    
por 07.05.2017 / 15:21
0

Eu não encontrei nenhuma boa solução para isso, então escolhi um script cron simples que faz o seguinte:

#!/bin/bash
route_found=$(/sbin/route -n | /bin/grep -c ^0.0.0.0)
ppp_on=$(/sbin/ifconfig | /bin/grep -c ppp0)
if [ $route_found -eq 0 ] && [ $ppp_on -eq 1 ]
  then /sbin/route add default ppp0
fi

Não é muito bonito, mas faz o trabalho! Ele apenas verifica se uma rota padrão está disponível e adiciona uma através de ppp0, se não.

    
por 11.08.2015 / 23:39