Я устанавливаю соединение 3G, которое будет контролироваться supervisord с помощью wvdial на безголовом компьютере (raspberryPi/raspbian), доступ к которому я могу получить только через соединение 3G, как только оно активируется. Короче говоря, supervisor поддерживает работу wvdial с отключенным автоматическим подключением wvdial (я где- то читал, что wvdial не слишком хорош в автоматическом переподключении).

Соединение остается без проблем, но маршрут по умолчанию не всегда установлен, и в этом случае я не могу получить доступ к коробке. Я не могу вручную установить маршрут с помощью sudo route add default ppp0 , очевидно, что он не сработает сразу после запуска . Я мог бы просто запустить вышеупомянутое в сценарии, но, поскольку он не работает, если маршрут уже существует, мне потребуется некоторая обработка ошибок, и должен быть какой-то чистый способ сделать это. Любые советы по отсутствующей опции конфигурации?

Мой конфиг (я думаю, что это соответствующие файлы):

/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

2 ответа2

2

Вы можете написать свой собственный скрипт, который выполняет маршрутизацию в /etc/ppp/ip-up.d/

любой скрипт в этом каталоге вызывается из скрипта /etc/ppp/ip-up

эти переменные доступны из 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

это работало для меня, был в состоянии добавить маршруты и также установить метрику.

0

Я не смог найти хорошего решения для этого, поэтому я выбрал простой скрипт cron, который выполняет следующее:

#!/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

Не очень хорошо выглядит, но это делает работу! Он просто проверяет, доступен ли маршрут по умолчанию, и добавляет один через ppp0, если нет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .