クライアントの準備
今回は、クラウド上のVPNサーバーに、GoPiGoとスマホをクライアントとして接続するという形式でネットワークを構成します。
クライアントとして接続するのに必要なファイルは、それぞれ以下のとおりです。
-
GoPiGo
- ca証明書:/usr/local/EasyRSA/pki/ca.crt
- クライアント証明書:/usr/local/EasyRSA/pki/issued/gopigo.crt
- クライアント秘密鍵:/usr/local/EasyRSA/pki/private/gopigo.key
-
スマホ
- ca証明書:/usr/local/EasyRSA/pki/ca.crt
- クライアント証明書:/usr/local/EasyRSA/pki/issued/smartphone.crt
- クライアント秘密鍵:/usr/local/EasyRSA/pki/private/smartphone.key
GoPiGoの場合、VPNサーバーからscpコマンドなどを用いて、端末にダウンロードしてください。
スマホの場合は、PCにダウンロードし、PC上で作成する設定ファイルに、直接埋め込むやり方が一般的です。
GoPiGo上では、ダウンロードしたすべてのファイルを/etc/openvpn/以下に配置してください。
GoPiGoへのインストール
GoPiGoへインストールするOpenVPNクライアントソフトウェアは、サーバーソフトウェアと同じものです。起動の際にクライアント設定ファイルを指定することで、VPNクライアントとして起動します。
以下のコマンドで、OpenVPNをインストールしましょう。
$ sudo apt-get install openvpn
続いて、クライアント設定ファイルを作成します。
$ sudo cp /usr/share/doc/openvpn-2.3.12/sample/sample-config-files/client.conf /etc/openvpn/client.conf sudo vi /etc/openvpn/client.conf
設定ファイル中で、VPNサーバーが動いているインスタンスのパブリックIPアドレスを指定してください。サーバー認証用の証明書(ca)にはca.crtを指定してください。また、クライアント用の証明書ファイル(cert)と鍵ファイル(key)には、それぞれに、ダウンロードしてきたgopigoと名の付く.crt、.keyファイルを指定してください。
以上で準備は完了です。以下のコマンドで、OpenVPNをクライアントとして起動してみましょう。
VPNサーバーが稼働している場合、Initialization Sequence Completedと表示されます。
$ sudo openvpn /etc/openvpn/client.conf ... ... Initialization Sequence Completed
スマホへのインストール
スマホからOpenVPNサーバーに接続する際には、アプリを利用します。
iOS/Androidそれぞれに公開されているので、ストアで「OpenVPN Connect 」と検索するか、iOSの場合はこちら、Androidの場合はこちらからインストールしてください。
アプリを使って接続する場合にも、GoPiGoの手順と同様にクライアント設定ファイルを準備する必要があります。
スマホ用の設定ファイルは、証明書や秘密鍵ファイルを指定するのではなく、クライアント設定ファイルの中に、直接書き込む必要があるという点に注意してください。
この作業は、PC上のテキストエディタで設定ファイルを作成し、スマホに転送すると簡単です。詳しい手順は公開されているので、こちらを参考にしてください。
準備ができたら、アプリ上でスライダーをONにしてみましょう。connectedと表示されれば接続成功です。
スマホのブラウザから、以下のURLにアクセスし、操作してみてください。
ただし、通信遅延があるので、操作して反応がなくても動かしすぎないよう、様子を見て動かすように注意してください。
筆者の環境では、1~2秒程度遅延がありましたが、問題なく操作することができました。
おわりに
今回は、GoPiGoとスマホの間にクラウドを挟むことで、遠隔地からロボットを操作する環境の構築を行いました。次回からいよいよ、「見守り」機能の開発に入っていきます。
