Raspberry Pi 2 から SORACOM Beam を使ってみる

SORACOM Air を Raspberry Pi 2 & L-03D で動かしてみる - fagoken’s diary の続き。

SORACOM Beam の Getting Started を試してみる。ほぼ、書いてある手順通りで echo サーバに telnet できたので、それ以外の部分のみ書きます。 

必要な通信だけ SORACOM Air を経由させる

SORACOM Air は従量課金されてしまうので、通信費をケチるための検証環境向けのネットワーク設定です。

Raspberry Pi の LAN ポートに有線 LAN が接続されていて、有線側からインターネットへ疎通している前提です。まず、 Raspbeery Pi のデフォルトルートは有線 LAN 側に向けておきます。もし、DHCP で IP アドレスをもらっているなら、すでに設定されているはずです(route コマンドで確認できます)。次に、SORACOM Air 経由で通信したいホスト(今回の場合は beam.soracom.io)の IP アドレスを、ppp インターフェースの静的経路として設定します。これで、beam.soracom.io 向けの通信だけ、SORACOM Air 経由になります。なお、beam.soracom.io に紐付いている IP アドレスが変更された場合は、再度静的経路を設定する必要があります。

注意点としては、DNS サーバの設定です。SORACOM Air で ppp 接続を確立した際に設定される、SORACOM の DNS サーバ (169.254.0.53,169.254.1.53) は SORACOM Air 経由からしかアクセスできないようです。このため、 /etc/resolv.conf を編集して、"nameserver 8.8.8.8" (もしくは、DHCPでもらった有線LAN側のDNSサーバ)が一番上に来るよう書き換えます。これで無事名前解決までできるようになります。

この設定にしておけば、apt-get など通常の通信は有線LAN経由になるのでダウンロードが早いです。また、Raspbian のデフォルト設定だと、何もしていなくても NTP など余計な通信を送受信してしまうのでこのネットワーク設定にしておくと安心です。  

※ 前回のブログの設定でデフォルトルートをSORACOM Airにしていたので削除する
pi@raspberrypi ~ $ sudo route del default
※ 有線 LAN 側のゲートウェイをデフォルトルートに設定する
pi@raspberrypi ~ $ sudo route add default gw 192.168.0.1

pi@raspberrypi ~ $ sudo route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
10.64.64.64 * 255.255.255.255 UH 0 0 0 ppp0
192.168.0.0 * 255.255.255.0 U 0 0 0 eth0

pi@raspberrypi ~ $ ping beam.soracom.io
PING beam.soracom.io (169.254.254.169) 56(84) bytes of data.
pi@raspberrypi ~ $ sudo route add 169.254.254.169 dev ppp0
※ ここで 169.254.254.169(beam.soracom.io) 向けの通信は、ppp0 (SORACOM Air) 経由で
   送信するよう静的経路を設定している

pi@raspberrypi ~ $ telnet 169.254.254.169 8023
Trying 169.254.254.169...
Connected to 169.254.254.169.
Escape character is '^]'.
Hello Soracom Beam Client IMSI:xxxxxxxxxxxxxxx !
Soracom Beeeeeeeeeeeeeam!!!!!
Soracom Beeeeeeeeeeeeeam!!!!!
Hello World
Hello World