3G モデムで ppp 接続をできるだけ確実にします。

3G モデムで ppp 接続をできるだけ確実にします。

私はAngstrom LinuxでportuxG20プラットフォームを使用しています。デバイスはデータを収集し、3Gモデムを使用して#gネットワークを介してサーバーに送信します。 pppdログで次のことがわかりました。

chat:  Aug 05 20:05:23 CONNECT
Serial connection established.
using channel 28
Using interface ppp0
Connect: ppp0 <--> /dev/ttyUSB_utps_modem
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0xb3dc4361> <pcomp> <accomp>]
rcvd [LCP ConfReq id=0x6c <asyncmap 0x0> <auth chap MD5> <magic 0x14ad140> <pcomp> <accomp>]
No auth is possible
sent [LCP ConfRej id=0x6c <auth chap MD5>]
rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0xb3dc4361> <pcomp> <accomp>]
rcvd [LCP ConfReq id=0x6d <asyncmap 0x0> <magic 0x14ad140> <pcomp> <accomp>]
sent [LCP ConfAck id=0x6d <asyncmap 0x0> <magic 0x14ad140> <pcomp> <accomp>]
sent [CCP ConfReq id=0x1 <deflate 15> <deflate(old#) 15>]
sent [IPCP ConfReq id=0x1 <compress VJ 0f 01> <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns3 0.0.0.0>]
rcvd [LCP DiscReq id=0x6e magic=0x14ad140]
rcvd [IPCP ConfNak id=0x1 <ms-dns1 10.11.12.13> <ms-dns3 10.11.12.14> <ms-wins 10.11.12.13> <ms-wins 10.11.12.14>]
sent [IPCP ConfReq id=0x2 <compress VJ 0f 01> <addr 0.0.0.0> <ms-dns1 10.11.12.13> <ms-dns3 10.11.12.14>]
rcvd [IPCP ConfNak id=0x2 <ms-dns1 10.11.12.13> <ms-dns3 10.11.12.14> <ms-wins 10.11.12.13> <ms-wins 10.11.12.14>]
sent [IPCP ConfReq id=0x3 <compress VJ 0f 01> <addr 0.0.0.0> <ms-dns1 10.11.12.13> <ms-dns3 10.11.12.14>]
rcvd [IPCP ConfReq id=0x36]
sent [IPCP ConfNak id=0x36 <addr 0.0.0.0>]
rcvd [IPCP ConfRej id=0x3 <compress VJ 0f 01>]
sent [IPCP ConfReq id=0x4 <addr 0.0.0.0> <ms-dns1 10.11.12.13> <ms-dns3 10.11.12.14>]
rcvd [IPCP ConfReq id=0x37]
sent [IPCP ConfAck id=0x37]
rcvd [IPCP ConfNak id=0x4 <addr 10.21.23.245> <ms-dns1 10.74.210.210> <ms-dns3 10.74.210.211>]
sent [IPCP ConfReq id=0x5 <addr 10.21.23.245> <ms-dns1 10.74.210.210> <ms-dns3 10.74.210.211>]
rcvd [IPCP ConfAck id=0x5 <addr 10.21.23.245> <ms-dns1 10.74.210.210> <ms-dns3 10.74.210.211>]
Could not determine remote IP address: defaulting to 10.64.64.64
local  IP address 10.21.23.245
remote IP address 10.64.64.64
primary   DNS address 10.74.210.210
secondary DNS address 10.74.210.211
Script /etc/ppp/ip-up started (pid 8441)
Script /etc/ppp/ip-up finished (pid 8441), status = 0x0
sent [CCP ConfReq id=0x1 <deflate 15> <deflate(old#) 15>]
rcvd [LCP ProtRej id=0x6f 80 fd 01 01 00 0c 1a 04 78 00 18 04 78 00]
Connect script failed
Terminating on signal 15
Modem hangup
Connection terminated.
Connect script failed
Terminating on signal 15
Modem hangup
Connection terminated.
Connect script failed
Terminating on signal 15
Modem hangup
.
.
.

しばらくすると、接続が確立されます。これが起こる理由と問題の原因は何であるかをどうやって知ることができますか?

私のプロバイダスクリプトは次のとおりです。

debug
logfile /home/logs/pppd.log
user "vodafone"
connect "/usr/sbin/chat -v -f /home/scripts/chatscripts/pap"
/dev/ttyUSB_utps_modem
115200
noipdefault
usepeerdns
defaultroute
persist
noauth

ntdpサーバーへのpingが機能していることを確認するスクリプトがあります。それ以外の場合は、pppdを終了して新しい呼び出しを行います(このタイプの問題に対する正しいアプローチであるかどうかはわかりません。おそらくこれが問題を引き起こす可能性があります)。 :

#!/bin/bash

source /home/scripts/isconnected
TTY="$(cat /home/scripts/.gsm_plugged)"
SERVER="0.de.pool.ntp.org"

sed s/isconnected=[0-9]/isconnected=0/ -i /home/scripts/isconnected

while [ -c $TTY ]
do
sleep 30
ping -c 10 $SERVER > /dev/null
if [ $? -ne 0 ] ; then
            echo "ping failed"
            echo "restarting"
            pkill pppd
            sleep 2
            /usr/sbin/pppd call provider
            sleep 10
            ntpdate -s 0.de.pool.ntp.org
            sed s/isconnected=[0-9]/isconnected=0/ -i /home/scripts/isconnected
    else
            sed s/isconnected=[0-9]/isconnected=1/ -i /home/scripts/isconnected
    fi
done

関連情報