Help us understand the problem. What is going on with this article?

CANDY Pi Lite+ Dで固定IPアドレスSIMイプシムを使う

More than 1 year has passed since last update.

CANDY LINE様のラズベリーパイ向け3G/4G LTE両対応の通信ボード「CANDY Pi Lite+ D」で、グローバルIPアドレス固定割当の格安SIMイプシムを使ってみます。同じソフトウェアで動作する「CANDY Pi Lite LTE」や「CANDY Pi Lite 3G」でも同じです。
CANDYPiLite+_1.jpg

何ができるの?

有線LAN・無線LANが無い環境でも、外部からラズパイを制御できます。

ポイント

  • ラズパイに直接グローバルIPアドレスが割り当てられます → APNを設定するだけ!
  • Internet側からラズパイに接続可能です → ufwで必要な通信のみ許可します

※デフォルトの状態で使うと危険です。必ずufwやiptablesの設定を行いましょう。
※CANDY LINE提供のOSイメージを用いる場合は、予めufwが有効になっています。

準備するもの

ipsim.jpg

  • Raspberry Pi 3 Model B
  • ラズベリーパイ向け3G/4G LTE両対応の通信ボード「CANDY Pi Lite+ D
  • 通信用USBケーブル A to micro B(いわゆるmicro USBケーブル)
  • 適当な容量のmicroSDカード(OSイメージアップデート v3.0.0)、ACアダプタ、ケーブルなど
  • 固定IPアドレスMVNO「イプシム」nano SIM
  • モニタ・キーボード(または設定用PC+DHCPが有効な有線LAN)

開封から接続まで

セットアップ(約15分)

CANDYPiLite+_2.jpg

  1. microSDカードにOSイメージアップデート v3.0.0書き込みます。sshで接続できるよう、/boot/sshの空ファイルも作成しておきます。
  2. CANDY Pi Lite+ Dを組み立て、イプシムのSIMカードを取り付け1ます。せっかくなので、高速通信が可能となるUSB拡張ボードも取り付けましょう。2
  3. ラズパイにモニタ・キーボードを接続します。なお、DHCPの割当状態が確認できる場合は、代わりに有線LANに接続し、ラズパイに割り当てられたIPアドレスを確認してください(ssh接続で作業できますので、モニタ・キーボードは不要です)。
  4. 起動します。

初期設定(約1分)

  1. ラズパイにコンソールまたはsshでログインします。

  2. イプシムのAPNを設定します。
    イプシムのAPNはOSイメージにプリセットされていないので、手動でAPN情報設定します。3

    sudo vi /boot/apn
    
    /boot/apn
    {
      "apn": "4gn.jp",
      "user": "sim@with",
      "password": "sim"
    }
    
  3. いったん電源をOFFにします。

    sudo shutdown -h now
    

接続確認(約3分)

  1. 電源をON、CANDY Pi Lite+のグリーンLEDが
    《ゆっくり点滅》→《はやい点滅》→《点灯または点滅》
    と変化することを確認します。またその後オレンジLEDが
    《0.4秒間隔で点滅》
    することを確認します。

  2. candy-pi-lite サービス

    candy-pi-lite
    $ sudo systemctl status candy-pi-lite
    ● candy-pi-lite.service - CANDY Pi Lite Service, version:4.0.0
       Loaded: loaded (/lib/systemd/system/candy-pi-lite.service; enabled; vendor preset: enabled)
       Active: active (running) since Mon 2018-05-14 19:00:02 JST; 1 weeks 0 days ago
     Main PID: 415 (bash)
       CGroup: /system.slice/candy-pi-lite.service
               ├─ 415 bash /opt/candy-line/candy-pi-lite/start_systemd.sh
               ├─ 823 bash /opt/candy-line/candy-pi-lite/start_systemd.sh
               ├─ 836 pppd /dev/QWS.EC25.MODEM 460800 user sim@with password sim connect ''chat -s  ABORT "NO CARRIER" ABORT "ERROR" ABORT "NO DIALTONE" ABORT "BUSY" ABORT "NO ANSWER" "" AT
               └─1035 python /opt/candy-line/candy-pi-lite/server_main.py /dev/QWS.EC25.AT 460800 ppp0
    
     5月 21 19:06:41 raspberrypi pppd[836]: Connect: ppp0 <--> /dev/QWS.EC25.MODEM
     5月 21 19:06:42 raspberrypi pppd[836]: CHAP authentication succeeded
     5月 21 19:06:42 raspberrypi pppd[836]: CHAP authentication succeeded
     5月 21 19:06:45 raspberrypi pppd[836]: Could not determine remote IP address: defaulting to 10.64.64.64
     5月 21 19:06:45 raspberrypi pppd[836]: local  IP address XXX.XXX.XXX.XXX
     5月 21 19:06:45 raspberrypi pppd[836]: remote IP address 10.64.64.64
     5月 21 19:06:45 raspberrypi pppd[836]: primary   DNS address 118.238.xxx.xxx
     5月 21 19:06:45 raspberrypi pppd[836]: secondary DNS address 118.238.xxx.xxx
     5月 21 19:06:46 raspberrypi server_main.<module>[1035]: [NOTICE] <candy-pi-lite> serial_port:/dev/QWS.EC25.AT (460800 bps), nic:ppp0
     5月 21 19:06:46 raspberrypi server_main.__init__[1035]: [NOTICE] <candy-pi-lite> RESTART_SCHEDULE_CRON=>[] is ignored
    
  3. candyコマンド4

    sim
    $ sudo candy sim show
    {
      "msisdn": "08000000000", 
      "state": "SIM_STATE_READY", 
      "imsi": "440100000000000"
    }
    
    network
    $ sudo candy network show
    {
      "operator": "NTT DOCOMO NTT DOCOMO", 
      "rssi": "-51", 
      "network": "N/A", 
      "rssiDesc": "OR_MORE", 
      "registration": {
        "cs": "Registered", 
        "ps": "Registered"
      }
    }
    
    modem
    $ sudo candy modem show
    {
      "counter": {
        "rx": "3728", 
        "tx": "4758"
      }, 
      "datetime": "18/05/21,10:10:26", 
      "functionality": "Full", 
      "imei": "000000000000000", 
      "timezone": 9.0, 
      "model": "EC25", 
      "revision": "EC25JFAR06A04M4G_DCM", 
      "manufacturer": "Quectel"
    }
    
  4. ifconfigコマンド

    ifconfig
    $ ifconfig -a
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            ether b8:27:eb:xx:xx:xx  txqueuelen 1000  (イーサネット)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            inet6 ::1  prefixlen 128  scopeid 0x10<host>
            loop  txqueuelen 1000  (ローカルループバック)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    ppp0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500
            inet XXX.XXX.XXX.XXX  netmask 255.255.255.255  destination 10.64.64.64
            ppp  txqueuelen 3  (Point-to-Pointプロトコル)
            RX packets 20  bytes 664 (664.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 7  bytes 148 (148.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    wlan0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
            ether b8:27:eb:xx:xx:xx  txqueuelen 1000  (イーサネット)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    wwan0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
            ether xx:xx:xx:xx:xx:xx  txqueuelen 1000  (イーサネット)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 2  bytes 180 (180.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    

    →ppp0にグローバルIPアドレス(XXX.XXX.XXX.XXX)が割り当てられていることを確認します。

  5. netstatコマンド

    netstat
    $ netstat -nr
    カーネルIP経路テーブル
    受信先サイト    ゲートウェイ    ネットマスク   フラグ   MSS Window  irtt インタフェース
    0.0.0.0         0.0.0.0         0.0.0.0         U         0 0          0 ppp0
    10.64.64.64     0.0.0.0         255.255.255.255 UH        0 0          0 ppp0
    

    →まぁ、PPPですからね。

実際に接続してみる

ラズパイからInternetに接続

  • pingなどで実際の接続や名前解決を確認します。

Internet側からラズパイに接続

  1. 接続元のグローバルIPアドレス(YYY.YYY.YYY.YYY)を確認し、ufwに許可設定を追加します。

    sudo ufw insert 1 allow from YYY.YYY.YYY.YYY to XXX.XXX.XXX.XXX port 22 proto tcp
    
  2. ufwのstatusを確認します。

    ufw
    $ sudo ufw status numbered
    Status: active
    
         To                         Action      From
         --                         ------      ----
    [ 1] XXX.XXX.XXX.XXX 22/tcp     ALLOW IN    YYY.YYY.YYY.YYY           
    [ 2] Anywhere on ppp0           DENY IN     Anywhere                  
    [ 3] Anywhere on wwan0          DENY IN     Anywhere                  
    [ 4] Anywhere on eth0           ALLOW IN    Anywhere                  
    [ 5] Anywhere on wlan0          ALLOW IN    Anywhere                  
    [ 6] Anywhere on usb0           ALLOW IN    Anywhere                  
    [ 7] Anywhere (v6) on ppp0      DENY IN     Anywhere (v6)             
    [ 8] Anywhere (v6) on wwan0     DENY IN     Anywhere (v6)             
    [ 9] Anywhere (v6) on eth0      ALLOW IN    Anywhere (v6)             
    [10] Anywhere (v6) on wlan0     ALLOW IN    Anywhere (v6)             
    [11] Anywhere (v6) on usb0      ALLOW IN    Anywhere (v6)             
    
  3. 実際に手元のPCからInternet経由でラズパイに接続してみます。
    LTE通信のため3G通信よりレイテンシが低く、sshは問題なく使えました。

  4. 後は、ufwに必要な許可設定を追加します。

ラズパイからラズパイに接続

  • 同一構成を2つ以上用意すると、ラズパイ⇔ラズパイ間の接続も可能です。

最後に

CANDY LINE製のOSイメージを使うと、予めufwがインストールされている上、WAN側(固定IPアドレス側)はデフォルトでping応答以外は無効となっているため、比較的安全にInternet側からラズパイを制御可能な環境が出来上がります。ping応答も無効にしたい場合はこちらを参考にしてください。
アンテナの固定方法を考える必要はありますが、USBドングルで苦労した身としては簡単にLTE高速通信に対応できるのは魅力的ですね!


  1. nano SIMです。 

  2. ラズパイ純正ケースでもなんとか入りました。当然蓋は閉まりませんが…。 

  3. OSイメージを書き込んだPC等で直接/boot/apnファイルを生成しても構いません。(改行コードに注意) 

  4. 検証ではSMS対応SIMを用いたため、データ専用SIMの場合とは一部の出力が異なるかもしれません。 

ipsim_net
固定IPアドレスMVNO【イプシム】の中の人。
https://ipsim.net/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした