Raspberry Pi 3 で ppp を使って IIJ mobile に接続する
Rsapbian jessie で IIJ mobile に 3G モデムを使って接続するのに苦労したのでメモを残しておきます。
- Raspberry Pi は Raspberry Pi 3 に Raspbian jessie をセットアップしました。
- IIJ mobile は、法人向けのモバイルサービスです。
ネットでは、接続する方法は wvdial
を使う方法が多く存在しましたが、pppconfig
を使って設定した pppd
を使用しました。
pppconfig で接続用スクリプトを作成する
Create a connection
を選択。Provider Name
にプロバイダ名を入力。ここではiijmobile
としました。Configure Name Servers (DNS)
はDynamic
を選択。Authentication Method for <プロバイダ名>
ではPAP
を選択。User Name
にプロバイダから指定されたユーザ名を入力。Password
にプロバイダから指定されたパスワードを入力。Speed
は460800
を入力。Pulse or Tone
はTone
を選択。Pone Number
に*99***1#
を入力。Choose Modem Config Method
はNo
を選択。Manually Select Modem Port
に/dev/ttyUSB2
を入力。Finished Write files and return to main menu.
を選択。Ok
を選択して終了。
/etc/ppp/peers
と /etc/chatscripts
の下に 2. で入力したプロバイダ名の設定ファイルが作成されます。
/etc/ppp/pap-secrets
に User Name と
Password
で入力した内容が保存されます。
chatscript を編集する
/etc/chatscripts/iijmobile
の # modeminit
の次の行を以下のように変更します。
3G モデムは富士ソフトの FS01BU を使っています。
... # modeminit '' ATH OK 'AT+CFUN=1' OK ATZ OK 'ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0' OK 'AT+CGDCONT=1,"IP","<APN名>"' # ispnumber ...
peer を編集する
/etc/ppp/peers/iijmobile
の最後に以下を追記します。
persist replacedefaultroute
iijmobile 用の設定を追加する
/etc/ppp/peers/iijmobile
の最後に以下を追記します。
IIJ mobiel は PAP で認証しないと IP アドレスを割り振ってくれないようです。Raspbian jessie の pppd 2.4.6
は、なぜか以下の指定をしないと、最初に CHAP での認証を要求します。しかし、IIJ mobile では CHAP でも認証は通ってしまいますが、CHAP でログインすると IP アドレスを割り振ってくれないようです。
また、 オプションで明示的に +pap
を指定すると、パスワードが見つからないという pppd
のエラーになってしまいます。
そこで PAP 以外の認証方式を使用しないように設定します。
refuse-chap refuse-mschap refuse-mschap-v2 refuse-eep
pon で接続
$ sudo pon iijmobile
poff で切断
$ sudo poff
起動時などに自動的に PPP 接続するための設定
Raspberry Pi の起動時や、3G モデムが挿入された時に自動的に接続するための設定を行います。
/etc/network/interfaces
に以下を追加して、仮想のネットワークインタフェース wwan0
を用意し、PPP 接続と紐づけます。
allow-hotplug wwan0 iface wwan0 inet ppp provider iijmobile
手動でネットワークインタフェースを ifup/ifdown して接続テスト
wwan0
ネットワークインタフェースを ifup
することで、PPP 接続が開始します。
$ sudo ifup wwan0
wwan0
ネットワークインタフェースを ifdown
することで、PPP 接続が終了します。
sudo ifdown wwan0
デバイスが挿入された時に PPP 接続を開始する
/etc/udev/rules.d/40-fs10bu.rules
に以下を記述します。
KERNEL=="ttyUSB*",\ GROUP=="usb",\ ATTRS{../idVendor}=="1c9e",\ ATTRS{../idProduct}=="6801",\ ATTRS{bNumEndpoints}=="02",\ ATTRS{bInterfaceNumber}=="02",\ SYMLINK+="ttyFS01BU",\ ENV{SYSTEMD_WANTS}+="ifup@wwan0"
接続を開始するようのと同時に、3G モデムを認識した時にそのデバイスファイルに ttyFS01BU と言うシンボリックリンクを作成するようにしています。
これは、FS01BU 以外の USB シリアルデバイスが挿入されている時に、ブート時の認識順によってデバイスファイル名が変わってしまう場合に対応するためです。
/etc/ppp/peers/iijmobile
のシリアルポート名を /dev/ttyUSB2
から /dev/ttyFS01BU
に変更しておくと良いでしょう。