ヘッドレスマシン(raspberryPi/raspbian)でsupervisord
を使用してwvdial
によって監視される3G接続を設定しています。これは、3G接続が稼働している場合にのみアクセスできます。要するに、スーパーバイザーは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
/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を介してルートを追加します。