wvdial、ppp0 和设置默认路由(自动)

wvdial、ppp0 和设置默认路由(自动)

我正在设置一个 3G 连接,supervisord使用wvdial无头机器 (raspberryPi/raspbian) 进行监控,一旦它上线,我只能通过 3G 连接访问。简而言之,supervisor 保持 wvdial 运行,并关闭 wvdial autoreconnect(我读到某处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

答案1

您可以编写自己的脚本来执行路由/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

这对我有用,能够添加路线并设置度量。

答案2

我找不到任何好的解决方案,因此我选择了一个简单的 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 添加一条。

相关内容