6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-05-24

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


	```text:/boot/apn
	{
	  "apn": "4gn.jp",
	  "user": "sim@with",
	  "password": "sim"
	}
	```

1. いったん電源を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
    

1. candyコマンド[^4]

	```text:sim
	$ sudo candy sim show
	{
	  "msisdn": "08000000000", 
	  "state": "SIM_STATE_READY", 
	  "imsi": "440100000000000"
	}
```text:network
$ sudo candy network show
{
  "operator": "NTT DOCOMO NTT DOCOMO", 
  "rssi": "-51", 
  "network": "N/A", 
  "rssiDesc": "OR_MORE", 
  "registration": {
    "cs": "Registered", 
    "ps": "Registered"
  }
}

	```text: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"
	}
  1. 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)が割り当てられていることを確認します。

  2. 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
  1. 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)             
    
  2. 実際に手元のPCからInternet経由でラズパイに接続してみます。
    LTE通信のため3G通信よりレイテンシが低く、sshは問題なく使えました。

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

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

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

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

  1. nano SIMです。

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

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

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?