RaspberryPi
ipsim
4GPi

4GPiで固定IPアドレスSIMイプシムを使う

メカトラックス様のラズベリーパイ用4G(LTE)通信モジュール「4GPi」で、グローバルIPアドレス固定割当の格安SIMイプシムを使ってみます。
4GPi.JPG

何ができるの?

有線LAN・無線LANが無い環境でも、外部からRaspberry Piを制御できます。

ポイント

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

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

準備するもの

ipsim.jpg

  • Raspberry Pi 3 Model B+など
  • ラズベリーパイ用4G(LTE)通信モジュール「4GPi
  • 適当な容量のmicroSDカード(4gpi-stretch-lite-20181029)
  • 固定IPアドレスMVNO「イプシム」標準SIM
  • モニタ・キーボード(または設定用PC+DHCPが有効な有線LAN)、ACアダプタ、ケーブルなど

4GPiと3GPiの違い

4GPi 3GPi
通信方式 4G(LTE)専用 3G専用
対応キャリア docomo/au/SoftBank docomo/SoftBank
ACアダプタ 別途用意1 付属
環境構築済みmicroSD 別途用意 付属
付属アンテナ 2本 1本

開封から接続まで

セットアップ(約15分)

4GPi_SIM.jpg

  1. microSDカードにOSイメージ(4gpi-stretch-lite-20181029)を書き込みます。
  2. Raspberry Piに4GPiを取り付け、4GPiにイプシムのSIMカードを取り付けます。
  3. Raspberry Piにモニタ・キーボードを接続します。なお、DHCPの割当状態が確認できる場合は、代わりに有線LANに接続し、Raspberry Piに割り当てられたIPアドレスを確認してください(ssh接続で作業できますので、モニタ・キーボードは不要です)。
  4. 起動します。

初期設定(約1分)

  1. Raspberry Piにコンソールまたはsshでログインします。
    ID・初期パスワードは配布元を参照してください。

  2. イプシムのAPNを設定します。
    プリセットはされていないので、イプシムのAPN情報設定します。

    sudo nmcli con add type gsm ifname "*" con-name ipsim.net apn 4gn.jp user sim@with password sim
    

接続確認(約3分)

4GPI_LED.jpg

  1. 4GPiの青色LED
    《高速点滅》

  2. 4GPiパッケージコマンド 4gpi-networkmanager

    4gpi-nm-helper
    $ 4gpi-nm-helper show default all
    4gn.jp sim@with sim
    

    →APN情報が正しいことを確認します。

  3. nmcliコマンド

    nmcli(1)
    $ nmcli con
    NAME                UUID                                  TYPE            DEVICE
    ipsim.net           8bb407b2-3054-42e2-b3e7-************  gsm             cdc-wdm0
    Wired connection 1  d0840652-664f-39d5-9623-************  802-3-ethernet  --
    
    nmcli(2)
    $ nmcli dev status
    DEVICE    TYPE      STATE        CONNECTION
    cdc-wdm0  gsm       connected    ipsim.net
    eth0      ethernet  unavailable  --
    wlan0     wifi      unavailable  --
    lo        loopback  unmanaged    --
    

    →DEVICEにcdc-wdm0が表示されること、STATEがconnectedになっていることを確認します。

  4. ifconfigコマンド

    ifconfig
    $ ifconfig -a
    eth0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
            ether b8:27:eb:xx:xx:xx  txqueuelen 1000  (Ethernet)
            RX packets 2672  bytes 215165 (210.1 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 1169  bytes 268537 (262.2 KiB)
            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  (Local Loopback)
            RX packets 18  bytes 882 (882.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 18  bytes 882 (882.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    wlan0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
            ether ce:12:0f:96:95:60  txqueuelen 1000  (Ethernet)
            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=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500
            inet XXX.XXX.XXX.70  netmask 255.255.255.252  destination XXX.XXX.XXX.70
            unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)
            RX packets 485  bytes 34644 (33.8 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 333  bytes 31991 (31.2 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    

    →wwan0にイプシムのグローバルIPアドレス(今回のSIMの場合はXXX.XXX.XXX.70)が割り当てられていることを確認します。ppp0ではありません。2

  5. netstatコマンド

    netstat
    $ netstat -nr
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
    0.0.0.0         XXX.XXX.XXX.69  0.0.0.0         UG        0 0          0 wwan0
    XXX.XXX.XXX.68  0.0.0.0         255.255.255.252 U         0 0          0 wwan0
    

    →今回のSIMの場合はIPアドレスがキリのいい位置3だっため/30扱いになっているようです。(/29以下になる場合もあると思います)

実際に接続してみる

Raspberry Piからインターネットに接続

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

インターネット側からRaspberry Piに接続

  1. ufwのデフォルト状態を確認します。ppp0とwwan0は、INが全拒否となっています。4

    ufw
    $ sudo ufw status numbered
    Status: active
    
         To                         Action      From
         --                         ------      ----
    [ 1] Anywhere on ppp0           DENY IN     Anywhere
    [ 2] Anywhere on wwan0          DENY IN     Anywhere
    [ 3] Anywhere (v6) on ppp0      DENY IN     Anywhere (v6)
    [ 4] Anywhere (v6) on wwan0     DENY IN     Anywhere (v6)
    
  2. 接続元のグローバルIPアドレス(YYY.YYY.YYY.YYY)を確認し、許可設定を最上位に追加します。

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

    ufw
    $ sudo ufw status numbered
    Status: active
    
         To                         Action      From
         --                         ------      ----
    [ 1] XXX.XXX.XXX.70 22/tcp      ALLOW IN    YYY.YYY.YYY.YYY
    [ 2] Anywhere on ppp0           DENY IN     Anywhere
    [ 3] Anywhere on wwan0          DENY IN     Anywhere
    [ 4] Anywhere (v6) on ppp0      DENY IN     Anywhere (v6)
    [ 5] Anywhere (v6) on wwan0     DENY IN     Anywhere (v6)
    
  4. 実際に手元のPCからインターネット経由でRaspberry Piにssh接続してみます。
    LTE通信のため、3G通信と比較して圧倒的に高速・低レイテンシで使えるようになりました!

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

Raspberry PiからRaspberry Piに接続

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

最後に

メカトラックス提供のOSイメージを使うと、ufwがインストール済みで、WAN側(固定IPアドレス側)はデフォルトでping応答以外は無効となっているため、比較的安全にインターネット側からRaspberry Piを制御可能な環境が出来上がります。ping応答も無効にしたい場合は、以前の3GPiの投稿を参考にしてください。
3GPiより高速な通信が可能になったことはもちろん、何よりも低レイテンシが嬉しいですね!


  1. 今回は5V/2.4AのACアダプタを用いてRaspberry Pi 3 Model B(B+ではありません)のmicro USBへの給電だけでも動作しましたが、メカトラックスさんによると4GPi用のACアダプタ(12V/2A/内径2.1mm)やslee-Piの使用を推奨とのことです。4GPi側にACアダプタを接続すると、Raspberry Pi側にも給電できます。(Raspberry Piのmicro USBへの給電が不要になります) 

  2. raspberrypi-kernelの更新でwwanが使用できるようになったとのことです。 

  3. IPアドレスの第4オクテットが.70で、/30の「中」に収まるため。 

  4. /etc/default/ufwがDEFAULT_INPUT_POLICY="ACCEPT"に変更されているので注意しましょう。