SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ROSとRaspberryPiで遠隔みまもりロボットを作ろう(「Tech-Sketch」出張所/番外編)

ラズパイで動くロボット「GoPiGo」をつかって遠隔見守りロボットを作ろう(4)インターネット経由の操作環境構築編

ROSとRaspberry Piで遠隔みまもりロボットを作ろう 第4回(「Tech-Sketch」出張所/番外編)

VPNサーバーの構築

 VPNサーバーは、大まかに以下の手順で構築します。

  1. AWSインスタンスの作成
  2. サーバーソフトウェアのインストール
  3. 初期設定

 まず、インスタンスの作成から進めていきます。

AWSインスタンスの作成

 AWSのインスタンスを立てる方法は、多くの文献があるので詳しくは解説しません。ただ、以下の2点は個別に設定してください。

  • セキュリティグループの設定で、VPN接続用ポート(1194)を開放する
  • インスタンスに対する“アクション”から、“送信元/送信先変更のチェック”を無効にする

 OSは、「Amazon Linux AMI」であるとして進めます。

 では、VPNサーバーの作成に入っていきます。

サーバーソフトウェアのインストール

 AWSインスタンスにSSHで接続し、必要なソフトをインストールしていきます。

 以下のコマンドは、VPNサーバーソフトウェアである「OpenVPN」と、サーバーとして運用するための認証局を作成するソフトウェアである「Easy-RSA」をインストールするためのものです。

$ sudo apt-get install -y openvpn
$ wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.0-rc2/EasyRSA-3.0.0-rc2.tgz
$ tar -xvzf EasyRSA-3.0.0-rc2.tgz
$ sudo mv EasyRSA-3.0.0-rc2 /usr/local/EasyRSA
$ cd /usr/local/EasyRSA/

 インストールは正常に終了しましたか?

 では、続いてサーバー上に認証局を作成します。以下のコマンドを順番に入力してください。

$ ./easyrsa init-pki
$ ./easyrsa build-ca
$ ./easyrsa gen-dh

 1つ目は公開鍵基盤(Public Key Infrastructure)の初期化、2つ目は認証局(Certification Authority)の作成、3つ目は公開鍵作成用の暗号であるDH(Diffie-Hellman)パラメータの作成を行うものです。

 2つ目のコマンドで入力を求められるパスフレーズは、以降の証明書発行の際に入力を求められるので、忘れないようにしてください。

初期設定

 初期設定として、サーバーとクライアント、それぞれで使用する証明書(.crtファイル)と鍵(.keyファイル)の発行、そしてサーバー用設定ファイルの作成を行います。

 本来、クライアントの名称は任意ですが、今回は識別のため、以下のように指定します。

  • GoPiGo:gopigo
  • スマホ:smartphone

 以下のコマンドで証明書と鍵を作成しましょう。

$ ./easyrsa build-server-full server nopass
$ ./easyrsa build-client-full gopigo nopass
$ ./easyrsa build-client-full smartphone nopass

 1行目はサーバー向け、2行目と3行目はそれぞれGoPiGoと、スマホ向けの証明書と鍵ファイルを生成するコマンドです。

 crtファイルは、/usr/local/EasyRSA/pki/issued/以下に、keyファイルは、 /usr/local/EasyRSA/pki/private/以下に、指定した名称で生成されます。

 途中で入力を求められるパスフレーズには、1つ前の手順の、./easy-rsa build-caコマンドで指定したパスフレーズを入力してください。 

 次に、サーバー設定ファイルを作成します。設定例はOpenVPNのインストールディレクトリの中にあるので、それをコピーして使用します。

$ sudo cp /usr/share/doc/openvpn-2.3.12/sample/sample-config-files/server.conf /etc/openvpn/server.conf
$ sudo vi /etc/openvpn/server.conf

 編集する必要がある項目は以下の2つです。それぞれの行頭の「;」を削除し、有効化してください。

  • クライアントに固定IPアドレスを振るため、137行目のclient-config-dir ccdの有効化
  • クライアント間の通信を許可するため、197行目のclient-to-clientの有効化

 その他の項目については、デフォルト設定のままで問題ありません。項目の詳細については、日本語訳されたHow Toが公開されているので、そちらを参考にしてください。

 今回、VPNクライアントに割り振るプライベートIPアドレスは、図3のイメージに従い、以下のとおりとします。

  • GoPiGo:10.8.0.5
  • スマホ:10.8.0.9

 以下のコマンドでファイルを作成し、設定します。作成するファイル名はクライアント名と同一で、拡張子は必要ありません。ファイルの中にはifconfig-pushで始まり、仮想的なクライアントとサーバーのエンドポイントの組を指定します。このクライアントに対するサーバーのエンドポイントの値は決まっています。

 クライアント側IPアドレス10.8.0.5には10.8.0.6が、クライアント側IPアドレス10.8.0.9には10.8.0.10が、それぞれ対応します。

$ sudo mkdir /etc/openvpn/ccd
$ sudo vi /etc/openvpn/ccd/gopigo
ifconfig-push 10.8.0.5 10.8.0.6
$ sudo vi /etc/openvpn/ccd/smartphone
ifconfig-push 10.8.0.9 10.8.0.10

 エンドポイントの組は、こちらで公開されています。クライアントを増やす際などに参考にしてください。

 最後に、以下のコマンドで、サーバー用の証明書、鍵、DHパラメータファイルを、サーバー設定ファイルで指定したディレクトリ/etc/openvpn/に配置して、サーバー側での作業は終了です。

$ sudo cp /usr/local/EasyRSA/pki/ca.crt /etc/openvpn/
$ sudo cp /usr/local/EasyRSA/pki/issued/server.crt /etc/openvpn/
$ sudo cp /usr/local/EasyRSA/pki/private/server.key /etc/openvpn/
$ sudo cp /usr/local/EasyRSA/pki/dh.pem /etc/openvpn/dh1024.pem

 以下のコマンドで、VPNサーバーを起動してみましょう。

$ sudo /etc/rc.d/init.d/openvpn start

 以上でサーバー側の準備は完了です。

 次は、クライアントからVPNサーバーに接続するための準備を進めていきます。

次のページ
クライアントの準備

この記事は参考になりましたか?

ROSとRaspberryPiで遠隔みまもりロボットを作ろう(「Tech-Sketch」出張所/番外編)連載記事一覧

もっと読む

この記事の著者

林﨑 貴昭(TIS株式会社)(ハヤシザキ タカアキ)

TIS株式会社 AIサービス事業部AIサービス企画開発部所属。2016年度入社。現在は、小さいころからの夢だった自律移動ロボットの研究開発に従事。最近は、カメラや各種センサといったハードウェアと格闘する日々を送っている。仕事でプログラムを書く時間が激減したことに危機感を覚え、家で何かしらプログラムを...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/10274 2017/07/21 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー