ユーザ用ツール

サイト用ツール


mae3xx_ope:ppp_monitor:start

PPP 接続を行う (発信・状態監視機能あり)

Ubuntu Linux 標準のネットワーク接続機能1) で PPP 接続を行うと、 3G/4G のデバイスが不具合を起こすなどした場合に接続を維持することができません。
デバイス自動リセット、自動再接続などの機能がないためです。

遠隔地に置いたときのように、人手で回復処理を行うことが難しいケースで安定運用を行うことができるよう、
下記機能を設けた Upstart の Job “ppp” を用意しました2)

  • PPP 接続失敗時、もしくは切断時の 3G/4G デバイス自動リセット
  • Persist (持続) 接続機能

※ v4.0.0 より、systemd になっています。


設定

PPP 接続設定

PPP 接続を行う (発信/着信) (obsolete) を参考に、PPP 接続の設定を行います。pppconfig で作成した設定を前提にしています。
※ v2.2.0β9 より PPP 設定ファイル生成機能、v2.7.0α2 より PING による接続状態監視機能を追加しました。


Upstart Job / systemd service 設定

Upstart Job / systemd service の設定ファイルは、/etc/default/ppp となります。
サンプルファイルを下記に示します。

ppp
START=yes
PROVIDER=DTI
PERSIST=1
RESET_ON_FAIL=1
RESET_ALWAYS=0
RESET_AT=03:00
RESET_WAIT=30
HOLDOFF=5
RETRY=3


設定項目はそれぞれ下記のとおりです。

項目 内容 初期値
START使用するかどうか yes/no no
PROVIDERPPP 設定ファイル名/etc/ppp/peers/ 以下のファイル名
PERSIST持続接続を行う 1/0 1
RESET_ON_FAIL異常発生時、3G/4G デバイスをリセットする 1/0 1
RESET_ALWAYSPPP 切断時、常に 3G/4G デバイスをリセットする 1/0 0
RESET_AT3)4)PPP 強制切断時刻指定 hh:mm5)
RESET_WAIT3G/4G デバイスリセット後の待ち時間 [秒] 306)
HOLDOFFPPP 再接続待機時間 [秒] 5
RETRYPPP 異常判断までのリトライ回数7) 3


v2.2.0β9 より PPP 設定ファイル生成機能 (上記 PROVIDER 部分)、v2.7.0α2 より PING による接続状態監視機能を追加しました。
コメント (“# PPP config” の行) 以下の情報から、PPP 接続に必要な設定ファイルを生成します。

ppp
START=yes
PROVIDER=
PERSIST=1
RESET_ON_FAIL=1
RESET_ALWAYS=0
RESET_WAIT=30
HOLDOFF=5
RETRY=3
 
# PPP config
APN=dream.jp
PDPTYPE=IP
DEMAND=1
IDLE=60
DEVICE=AUTO
DEFAULTROUTE=1
AUTH=CHAP
ACCOUNT=user@dream.jp
PASSWORD=dti
NETMODE=
 
# monitor
MONITOR=yes
MONITOR_TARGET=www.centurysys.jp
MONITOR_INTERVAL=30
MONITOR_FAIL=2
MONITOR_LOG=yes


項目 内容
APNAccess Point Name
PDPTYPEPDP Type IP / PPP
DEMANDオンデマンド接続を行う 1 / 0
IDLE無通信タイムアウト時間 [秒]
DEVICE3G/4G 通信デバイス LISA-U200 / KYM11 / UM03-KO / AMP520 / ttyLISA0 / ttyKYM11 / ttyUM03KO0 / ttyAMP0 / AUTO8)
DEFAULTROUTEPPP にデフォルトルートを設定する 1 / 0
AUTH認証方式 CHAP / PAP / NOAUTH
ACCOUNTPPP アカウント
PASSWORDPPP パスワード
NETMODE9)通信モード選択 (LTE / 3G / 自動) AUTO / WCDMA / LTE / NONE(設定しない, AMM5220)
CARRIERID10)キャリア/PLMN 選択 1(NTT docomo) / 2(KDDI MNO) / 3(Softbank) / 4(SIM Free) / 5(KDDI MVNO) / 5桁の数値11)
MONITORPING 接続監視機能 有効/無効 (PERSIST 接続でのみ有効) yes/no
MONITOR_TARGETPING 監視先アドレス FQDN or IPアドレスで指定
MONITOR_INTERVALPING 送信間隔 秒で指定
MONITOR_FAILPING リトライ回数
MONITOR_LOGPING 実行結果を記録する/しない yes/no


v2.8.4β1 より、PPP 接続に成功した場合、設定ファイル(/etc/default/ppp) に CONNECT_OK=1 という項目が追加されるようになりました。
これは、AMTelecom Module が APN 設定/アカウント設定を行うたびに内蔵フラッシュの書き換えを行い、限界12)を超えるとモジュールが故障するのを回避するためです。
SIM 変更などの理由でエディタで設定を変更する場合、CONNECT_OK=1 の行を削除してください。

※ よって、AMTelecom Module の場合、wvdial の利用は推奨しません。通常、wvdial を使う場合の説明では、初期化文字列で APN 等を設定するようになっているためです。


この設定ファイルから PPP 接続の設定ファイルを生成する条件は下記となります。

  • “PROVIDER” を設定していないこと

生成・編集するファイルは下記となります。

  • /etc/ppp/peers/ppp0
  • /etc/ppp/chap-secrets
  • /etc/ppp/pap-secrets
  • /etc/chatscripts/ppp0


生成されたファイルの例

下記設定ファイルから生成された設定ファイルの例です。

ppp
START=yes
PROVIDER=
PERSIST=1
RESET_ON_FAIL=1
RESET_ALWAYS=0
RESET_WAIT=30
HOLDOFF=5
 
# PPP config
APN=dream.jp
PDPTYPE=IP
DEMAND=1
IDLE=60
DEVICE=LISA-U200
DEFAULTROUTE=1
AUTH=CHAP
ACCOUNT=user@dream.jp
PASSWORD=dti


/etc/ppp/peers/ppp0
ppp0
# This optionfile was generated by gen_pppconfig.
#
#
unit 0
hide-password
noauth
connect "/usr/sbin/chat -v -f /etc/chatscripts/ppp0"
debug
modem
lock
/dev/ttyLISA0
460800
defaultroute
replacedefaultroute
noipdefault
user "user@dream.jp"
remotename ppp0
ipparam ppp0
 
demand
nopersist
idle 60
usepeerdns


/etc/ppp/chap-secrets
chap-secrets
# Secrets for authentication using CHAP/PAP
# client	server	secret			IP addresses
"mopera"	*	"mopera"
"user@dream.jp"	ppp0	"dti"
"user@au.au-net.ne.jp"	*	"au"


/etc/chatscripts/ppp0
ppp0
# This chatfile was generated by gen_pppconfig.
#
'' ATZ
OK ATE0
ABORT BUSY
ABORT 'NO CARRIER'
ABORT VOICE
ABORT 'NO DIALTONE'
ABORT 'NO DIAL TONE'
ABORT 'NO ANSWER'
ABORT DELAYED
ABORT ERROR
TIMEOUT 30
 
OK AT+CGDCONT=1,"IP","CHAP:dream.jp"
OK AT
OK ATDT*99***1#
CONNECT \d\c


Job の起動/停止

上記設定ファイルで、“START=yes” としている場合、MA-E3xx が起動したときに自動で起動します。
手動で 起動/停止 を行う場合、Job 名 “ppp” で制御します。

Upstart の場合

user1@plum:~$ sudo service ppp status
[sudo] password for user1: 
ppp stop/waiting
user1@plum:~$ sudo service ppp start 
ppp start/running, process 1669
user1@plum:~$ sudo service ppp status
ppp start/running, process 1669
user1@plum:~$ sudo service ppp stop  
ppp stop/waiting
user1@plum:~$ sudo service ppp status
ppp stop/waiting
user1@plum:~$ 


systemd の場合

状態確認

user1@plum:~$ sudo systemctl status ppp.path
[sudo] password for user1: 
● ppp.path
   Loaded: loaded (/etc/systemd/system/ppp.path; enabled; vendor preset: enabled)
   Active: inactive (dead) since Wed 2018-08-29 09:32:21 JST; 25s ago

Aug 29 09:07:03 plum systemd[1]: Started ppp.path.
Aug 29 09:32:21 plum systemd[1]: Stopped ppp.path.
user1@plum:~$ sudo systemctl status ppp.service
● ppp.service - PPP wrapper
   Loaded: loaded (/etc/systemd/system/ppp.service; disabled; vendor preset: enabled)
   Active: inactive (dead) since Wed 2018-08-29 09:32:21 JST; 56s ago
  Process: 512 ExecStart=/usr/local/sbin/ppp_wrapper (code=killed, signal=TERM)
  Process: 508 ExecStartPre=/usr/local/sbin/gen_pppconfig (code=exited, status=0/SUCCESS)
 Main PID: 512 (code=killed, signal=TERM)

Aug 29 09:32:21 plum systemd[1]: Stopping PPP wrapper...
Aug 29 09:32:21 plum pppd[523]: Script /etc/ppp/ip-down started (pid 1139)
Aug 29 09:32:21 plum pppd[523]: sent [LCP TermReq id=0x2 "User request"]
Aug 29 09:32:21 plum pppd[523]: Terminating on signal 15
Aug 29 09:32:21 plum pppd[523]: rcvd [LCP TermAck id=0x2]
Aug 29 09:32:21 plum pppd[523]: Connection terminated.
Aug 29 09:32:21 plum ip-down[1145]: Terminate PPP monitor.
Aug 29 09:32:21 plum pppd[523]: Script /etc/ppp/ip-down finished (pid 1139), status = 0x0
Aug 29 09:32:21 plum pppd[523]: Exit.
Aug 29 09:32:21 plum systemd[1]: Stopped PPP wrapper.


接続開始

user1@plum:~$ sudo systemctl start ppp.path


接続が完了した場合の状態

user1@plum:~$ sudo systemctl status ppp
● ppp.service - PPP wrapper
   Loaded: loaded (/etc/systemd/system/ppp.service; disabled; vendor preset: enabled)
   Active: active (running) since Wed 2018-08-29 09:34:02 JST; 23s ago
  Process: 1234 ExecStartPre=/usr/local/sbin/gen_pppconfig (code=exited, status=0/SUCCESS)
 Main PID: 1235 (ppp_wrapper)
   CGroup: /system.slice/ppp.service
           ├─1235 /bin/bash /usr/local/sbin/ppp_wrapper
           ├─1246 pppd call ppp0 nodetach
           ├─1309 ddclient - sleeping for 590 seconds
           ├─1318 /bin/bash /usr/local/sbin/ppp_monitor ppp0
           └─1321 sleep 60

Aug 29 09:34:10 plum pppd[1246]: primary   DNS address 202.231.208.71
Aug 29 09:34:10 plum pppd[1246]: secondary DNS address 202.231.208.72
Aug 29 09:34:10 plum pppd[1246]: Script /etc/ppp/ip-up started (pid 1266)
Aug 29 09:34:11 plum ddclient[1306]: WARNING:  file /etc/ddclient.conf, line 233: Invalid Value for keyword 'lo
Aug 29 09:34:11 plum ddclient[1308]: WARNING:  skipping host: example.warplink.ne.jp: 'login=' is an invalid lo
Aug 29 09:34:11 plum ip-up[1312]: Execute PPP monitor.
Aug 29 09:34:11 plum ddclient[1313]: WARNING:  file /etc/ddclient.conf, line 233: Invalid Value for keyword 'lo
Aug 29 09:34:11 plum pppd[1246]: Script /etc/ppp/ip-up finished (pid 1266), status = 0x0
Aug 29 09:34:11 plum ddclient[1319]: WARNING:  skipping host: example.warplink.ne.jp: 'login=' is an invalid lo
Aug 29 09:34:11 plum ppp_monitor[1320]: ping monitoring is disabled.


切断

user1@plum:~$ sudo systemctl stop ppp.*


切断が完了した場合の状態

user1@plum:~$ sudo systemctl status ppp.path
● ppp.path
   Loaded: loaded (/etc/systemd/system/ppp.path; enabled; vendor preset: enabled)
   Active: inactive (dead) since Wed 2018-08-29 09:35:17 JST; 5s ago

Aug 29 09:34:01 plum systemd[1]: Started ppp.path.
Aug 29 09:35:17 plum systemd[1]: Stopped ppp.path.
user1@plum:~$ sudo systemctl status ppp
● ppp.service - PPP wrapper
   Loaded: loaded (/etc/systemd/system/ppp.service; disabled; vendor preset: enabled)
   Active: inactive (dead) since Wed 2018-08-29 09:35:18 JST; 11s ago
  Process: 1235 ExecStart=/usr/local/sbin/ppp_wrapper (code=killed, signal=TERM)
  Process: 1234 ExecStartPre=/usr/local/sbin/gen_pppconfig (code=exited, status=0/SUCCESS)
 Main PID: 1235 (code=killed, signal=TERM)

Aug 29 09:35:17 plum systemd[1]: Stopping PPP wrapper...
Aug 29 09:35:17 plum pppd[1246]: Script /etc/ppp/ip-down started (pid 1330)
Aug 29 09:35:17 plum pppd[1246]: sent [LCP TermReq id=0x2 "User request"]
Aug 29 09:35:17 plum pppd[1246]: Terminating on signal 15
Aug 29 09:35:17 plum pppd[1246]: rcvd [LCP TermAck id=0x2]
Aug 29 09:35:17 plum pppd[1246]: Connection terminated.
Aug 29 09:35:17 plum ip-down[1336]: Terminate PPP monitor.
Aug 29 09:35:18 plum pppd[1246]: Script /etc/ppp/ip-down finished (pid 1330), status = 0x0
Aug 29 09:35:18 plum pppd[1246]: Exit.
Aug 29 09:35:18 plum systemd[1]: Stopped PPP wrapper.


設定例

SORACOM (plan-K)

ppp
# PPP config
APN=soracom.io
PDPTYPE=IP
DEMAND=
IDLE=
DEVICE=AUTO
LOCALADDR=
REMOTEADDR=
NETMASK=
DEFAULTROUTE=1
AUTH=CHAP
ACCOUNT=sora
PASSWORD=sora
NETMODE=
CARRIERID=5


au.net

ppp
# PPP config
APN=au.au-net.ne.jp
PDPTYPE=IP
DEMAND=1
IDLE=30
DEVICE=KYM11
DEFAULTROUTE=1
AUTH=CHAP
ACCOUNT=user@au.au-net.ne.jp
PASSWORD=au


ServersMan LTE (DTI)

ppp
# PPP config
APN=dream.jp
PDPTYPE=IP
DEMAND=1
IDLE=30
DEVICE=LISA-U200
DEFAULTROUTE=1
AUTH=CHAP
ACCOUNT=user@dream.jp
PASSWORD=dti


IIJ モバイルサービス/タイプ I

ppp
# PPP config
APN=iijmobile.biz
PDPTYPE=IP
DEMAND=
IDLE=
DEVICE=AUTO
LOCALADDR=
REMOTEADDR=
NETMASK=
DEFAULTROUTE=1
AUTH=CHAP
ACCOUNT=mobile@iij
PASSWORD=iij
NETMODE=
CARRIERID=4

※ AMM570 もしくは LN940A 搭載の機器のみ対応


さくらのセキュアモバイル

ppp
# PPP config
APN=sakura
PDPTYPE=IP
DEMAND=
IDLE=
DEVICE=AUTO
LOCALADDR=
REMOTEADDR=
NETMASK=
DEFAULTROUTE=1
AUTH=NOAUTH
ACCOUNT=
PASSWORD=
NETMODE=
CARRIERID=44020 <--- 接続するキャリア(NTT docomo/KDDI/Softbank により変更)

※ AMM57013)もしくは LN940A 搭載の機器のみ対応


PPP 接続状態監視

v2.7.0α2 より追加した、常時接続中(PERSIST)14) に通信モジュールがきちんと動作しているか PING による監視を行う機能です。
PPP 接続中、指定した間隔で指定したアドレスに PING(ICMP ECHO) を送信し、連続して指定した回数応答がない場合 PPP を切断します。

下記のようなログが記録されます。

Apr  5 10:27:45 plum pppd[2478]: Script /etc/ppp/ip-up started (pid 2521)
Apr  5 10:27:46 plum ip-up: Execute PPP monitor.
Apr  5 10:27:46 plum pppd[2478]: Script /etc/ppp/ip-up finished (pid 2521), status = 0x0
Apr  5 10:27:46 plum ppp_monitor: ppp monitor started, PPP I/F: ppp0, TARGET: www.centurysys.jp, INTERVAL: 30, MAXFAIL: 2
Apr  5 10:28:16 plum ppp_monitor: ping to www.centurysys.jp succeeded.
Apr  5 10:28:46 plum ppp_monitor: ping to www.centurysys.jp succeeded.
Apr  5 10:29:16 plum ppp_monitor: ping to www.centurysys.jp succeeded.


手動でアドレスを指定すると、対象が落ちてしまった場合もPPPを切断してしまう為、v5.3.0より、LTE通信の経路上で応答するホップ数が最小のアドレスを対象にするように変更しています。15)

Feb 22 10:44:07 gemini ppp_manager[992]: PPP Manager[992]: (8) PPP connected.
Feb 22 10:44:37 gemini ppp_manager[992]: PPP Manager[992]: check_with_icmp: responding hosts found in the route: address: 1XX.XXX.XXX.XXX, hops: 1.
Feb 22 10:44:37 gemini ppp_manager[992]: PPP Manager[992]: LTE: host in the route: 1XX.XXX.XXX.XXX


注意点

PPP 接続の各種設定 (APN / アカウント / パスワード) が誤っている場合、常に “接続失敗” と判断されてしまいます。
この機能(特に 3G/4G デバイスのリセット)を有効にする前に、手動での PPP 接続ができることを確認してください。


1)
ifup/ifdown, /etc/network/interfaces による
2)
v2.1.5rc8 より
3)
“RESET_ALWAYS” とセットで設定することにより、定時通信モジュールリセットが可能
4)
v2.2.1 より
5)
24 時間制で指定
6)
接続失敗→モジュールリセットが頻発する場合、この数値を調整してください。
7)
v2.7.0α2で追加
8)
v2.3.0β4 より
9)
MA-E350/NL, MA-E350/SL でのみ有効
10)
AMM570/LN940A 搭載機のみ有効
11)
PLMN直接指定, AMM570 or LN940A のみ対応
12)
書き換え回数 Max10 万回
13)
v4.2.0rc8から対応
14)
“DEMAND” 接続の場合、この機能により PPP が切断されなくなるため利用できません
15)
“host in the route: …” の出力がでていれば動作しています。
mae3xx_ope/ppp_monitor/start.txt · 最終更新: 2024/02/22 13:11 by サポート