Cradlepoint(旧Pertino) GatewayでSORACOM Gateにリモートアクセスする

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ども、大瀧です。
先日のSORACOM Conference "Discovery" 2016で発表された新サービスSORACOM Gate、みなさん早速試してみましたか?

Gateを使うとAmazon VPC上のEC2インスタンスからSIMを差したIoTゲートウェイに接続できるようになるわけですが、実際にメンテナンスをする端末からAmazon VPCへのアクセスもセキュアしたいこともあるかなと思い、今回はVPN/SD-WANサービスのCradlepoint(旧Pertino)と組み合わせたリモートアクセス構成をご紹介します。

概要

Cradlepointは、クライアントをインストールしたマシン同士で仮想ネットワークを構築するサービスです。今回はGateピアとなるインスタンスにCradlepointクライアントをインストールして仮想ネットワークの終端とし、VPC-IoTゲートウェイ間はSORACOM Gate/Canalの閉域接続を利用します。

gate05

IoTゲートウェイにCradlepointクライアントをインストールする代わりにGateピアでCradlepoint Gatewayを設定し、IoTゲートウェイにトラフィックを転送する形にしてみました。そうすることで、IoTゲートウェイにはCradlepointクライアントをインストールすることなく、特別な構成なしでリモートアクセスの環境を導入することができます。

SORACOM Gateの構成

Gateの構成は、こちらのエントリーと特に変わりません。SORACOM CanalとGateピアとしてのAmazon Linuxインスタンスを構成します。VXLANトンネルのインターフェス名はvxlan0としています。

$ ifconfig vxlan0
vxlan0    Link encap:Ethernet  HWaddr 8A:ED:0F:61:87:4A
          inet addr:10.225.194.171  Bcast:10.255.255.255  Mask:255.128.0.0
          inet6 addr: fe80::88ed:fff:fe61:874a/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:8951  Metric:1
          RX packets:244 errors:0 dropped:0 overruns:0 frame:0
          TX packets:382 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:31289 (30.5 KiB)  TX bytes:35411 (34.5 KiB)
$

VXLANのインターフェースにSORACOMデフォルトのCIDR、10.128.0.0/9のアドレスが割り当てられているのがわかりますね。

Cradlepointの構成

GateピアのインスタンスにCradlepointクライアントをインストールします。今回はAmazon Linuxなので、ダウンロードページの「Linux Installation guide」→「Using yum」の手順に沿ってインストールしました。Cradlepointのトンネルインターフェース名はpertino0で、CIDRは172.86.160.0/20でした。

$ ifconfig pertino0
pertino0  Link encap:Ethernet  HWaddr 8E:3F:00:3C:C5:35
          inet addr:172.86.160.5  Bcast:172.86.175.255  Mask:255.255.240.0
          inet6 addr: fe80::8c3f:ff:fe3c:c535/64 Scope:Link
          inet6 addr: 2001:470:813b::4891:0:2102/48 Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1400  Metric:1
          RX packets:1006 errors:0 dropped:0 overruns:0 frame:0
          TX packets:28 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:93356 (91.1 KiB)  TX bytes:3952 (3.8 KiB)
$

続いて、Cradlepoint Gatewayを有効にします。CradlepointのWebコンソールから[Devices] - [GATEWAY]を選択、先ほどクライアントをインストールしたインスタンスを選択し、[Enable Gateway]をクリックします。

Cradlepoint01

External(Cradlepoint Gatewayの転送先)の登録画面になるので、任意の[Host Name]と(今回はbx1)、[External IPv4 Address]にSORACOM Air SIMに付与されたIPアドレスを入力し、[Save]をクリックします。

Cradlepoint02

登録されたら、[IPv4 Address]をメモしておきます。PCからIoTゲートウェイに接続するときは、このIPアドレスを利用します(今回は172.86.160.6)。

Cradlepoint03

それからもう1点、SORACOMのデバイスネットワークはルーティングテーブルを編集する機能がないため、帰りのトラフィック向けのCradlepoint仮想ネットワーク宛てのルーティングエントリーが設定できません。そこで今回はCradlepoint→Gateに対してIPマスカレードを設定し、帰りのトラフィックをGatewayのVXLANトンネルのアドレスに向くように工夫しました。

$ sudo iptables -t nat -A POSTROUTING -s 172.86.160.0/20 -o vxlan0 -j MASQUERADE
$ sudo service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
$

これでOKです。

動作確認

それでは、CradlepointクライアントをインストールしたPCからIoTゲートウェイに接続してみます。

$ ping 172.86.160.6
PING 172.86.160.6 (172.86.160.6): 56 data bytes
64 bytes from 172.86.160.6: icmp_seq=0 ttl=63 time=438.554 ms
64 bytes from 172.86.160.6: icmp_seq=1 ttl=63 time=146.970 ms
64 bytes from 172.86.160.6: icmp_seq=2 ttl=63 time=143.491 ms
64 bytes from 172.86.160.6: icmp_seq=3 ttl=63 time=143.880 ms
64 bytes from 172.86.160.6: icmp_seq=4 ttl=63 time=150.069 ms
^C
--- 172.86.160.6 ping statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 143.491/204.593/438.554/117.005 ms
suzaku:~ ryuta$ ssh root@172.86.160.6
root@172.86.160.6's password:
Linux obsiot.example.org 3.10.17-poky-edison #3 SMP PREEMPT Fri Sep 4 11:53:01 JST 2015 i686

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Jul 17 01:08:09 2016 from 10.225.194.171
root@obsiot:~#

接続できました!

まとめ

CradlepointのVPNとSORACOM Gateを利用して、IoTゲートウェイにエージェントを入れることなくPCから接続する構成をご紹介しました。先日追加されたSORACOMリファレンスアーキテクチャのWebカメラ管理システムの実装例として見ていただいてもいいのではないかと思います。