wvdial, ppp0 и установка маршрута по умолчанию (автоматически)
Я устанавливаю соединение 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 ответа
Вы можете написать свой собственный скрипт, который выполняет маршрутизацию в /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
это работало для меня, было в состоянии добавить маршруты и также установить метрику.
Я не смог найти хорошего решения для этого, поэтому я выбрал простой скрипт 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, если нет.