Raspberry Pi 3 で ppp を使って IIJ mobile に接続する

Rsapbian jessie で IIJ mobile に 3G モデムを使って接続するのに苦労したのでメモを残しておきます。

  • Raspberry PiRaspberry Pi 3 に Raspbian jessie をセットアップしました。
  • IIJ mobile は、法人向けのモバイルサービスです。

ネットでは、接続する方法は wvdial を使う方法が多く存在しましたが、pppconfig を使って設定した pppd を使用しました。

pppconfig で接続用スクリプトを作成する

  1. Create a connection を選択。
  2. Provider Name にプロバイダ名を入力。ここでは iijmobile としました。
  3. Configure Name Servers (DNS)Dynamic を選択。
  4. Authentication Method for <プロバイダ名> では PAP を選択。
  5. User Name にプロバイダから指定されたユーザ名を入力。
  6. Password にプロバイダから指定されたパスワードを入力。
  7. Speed460800 を入力。
  8. Pulse or ToneTone を選択。
  9. Pone Number*99***1# を入力。
  10. Choose Modem Config MethodNo を選択。
  11. Manually Select Modem Port/dev/ttyUSB2 を入力。
  12. Finished Write files and return to main menu. を選択。
  13. Ok を選択して終了。

/etc/ppp/peers/etc/chatscripts の下に 2. で入力したプロバイダ名の設定ファイルが作成されます。
/etc/ppp/pap-secretsUser 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 に変更しておくと良いでしょう。