CANDY LINE様のラズベリーパイ向け3G/4G LTE両対応の通信ボード「CANDY Pi Lite+ D」で、グローバルIPアドレス固定割当の格安SIMイプシムを使ってみます。同じソフトウェアで動作する「CANDY Pi Lite LTE」や「CANDY Pi Lite 3G」でも同じです。
#何ができるの?
有線LAN・無線LANが無い環境でも、外部からラズパイを制御できます。
##ポイント
- ラズパイに直接グローバルIPアドレスが割り当てられます → APNを設定するだけ!
- Internet側からラズパイに接続可能です → ufwで必要な通信のみ許可します
※デフォルトの状態で使うと危険です。必ずufwやiptablesの設定を行いましょう。
※CANDY LINE提供のOSイメージを用いる場合は、予めufwが有効になっています。
- 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)
- microSDカードにOSイメージアップデート v3.0.0を書き込みます。sshで接続できるよう、
/boot/ssh
の空ファイルも作成しておきます。 - CANDY Pi Lite+ Dを組み立て、イプシムのSIMカードを取り付け1ます。せっかくなので、高速通信が可能となるUSB拡張ボードも取り付けましょう。2
- ラズパイにモニタ・キーボードを接続します。なお、DHCPの割当状態が確認できる場合は、代わりに有線LANに接続し、ラズパイに割り当てられたIPアドレスを確認してください(ssh接続で作業できますので、モニタ・キーボードは不要です)。
- 起動します。
##初期設定(約1分)
sudo vi /boot/apn
```text:/boot/apn
{
"apn": "4gn.jp",
"user": "sim@with",
"password": "sim"
}
```
1. いったん電源をOFFにします。
```
sudo shutdown -h now
##接続確認(約3分)
-
電源をON、CANDY Pi Lite+のグリーンLEDが
《ゆっくり点滅》→《はやい点滅》→《点灯または点滅》
と変化することを確認します。またその後オレンジLEDが
《0.4秒間隔で点滅》
することを確認します。 -
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"
}
-
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)が割り当てられていることを確認します。
-
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
-
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)
-
実際に手元のPCからInternet経由でラズパイに接続してみます。
LTE通信のため3G通信よりレイテンシが低く、sshは問題なく使えました。 -
後は、ufwに必要な許可設定を追加します。
##ラズパイからラズパイに接続
- 同一構成を2つ以上用意すると、ラズパイ⇔ラズパイ間の接続も可能です。
#最後に
CANDY LINE製のOSイメージを使うと、予めufwがインストールされている上、WAN側(固定IPアドレス側)はデフォルトでping応答以外は無効となっているため、比較的安全にInternet側からラズパイを制御可能な環境が出来上がります。ping応答も無効にしたい場合はこちらを参考にしてください。
アンテナの固定方法を考える必要はありますが、USBドングルで苦労した身としては簡単にLTE高速通信に対応できるのは魅力的ですね!