VPNをアンドロイドで使う解説シリーズの2回目は、VPNサーバーをインストールしてみることにします。ただし、VPNサーバーはWindowsマシン(非Windows Server)にインストールすることとし、そのインターネット接続環境は、個人宅の一般的な構成である「ブロードバンドルーター」+「ローカルネットワーク」とします。また、VPNサーバーをインストールするマシンは、常時インターネットに接続可能なものとし、原則、スリープしない設定になっているものとします。

VPNソフトウェアとしては、フリーで利用可能な「Softether VPN」を使います。これを使う理由はフリーであるからというのもありますが、無料のダイナミックDNSサービスがあり、IPアドレス割り当てが固定でない一般的なISPを使っていても外出先からVPNサーバーに接続が可能になるからです。また、アンドロイドやデスクトップアプリケーションをインストールできないWindows RTにも対応するなど、クライアント側の対応プラットフォームが多いこともメリットです。

まずは、サーバーソフトウェアをダウンロードしてインストールします。また、WindowsやLinux用には、専用クライアントも用意されているので、必要に応じてインストールしてもいいでしょう。ただし、本連載はアンドロイド向けであるため、WindowsやLinuxのクライアントのインストールや設定については解説しません。

・SoftEther VPN
http://ja.softether.org/

・ソフトウェアダウンロード
http://ja.softether.org/5-download

SoftEther VPNのサイトからWindows版のサーバーソフトウェア(SoftEther VPN Server and VPN Bridge)をダウンロードしてインストールします。

インストールが完了し、最後の表示(写真01)で「SoftEther VPNサーバー管理マネージャを起動します」というのがオンになっていれば、管理ツール「SoftEther VPN Server Manager」が起動します(写真02)。設定はここから行います。リストで「localhost(このサーバー)」が選択されていることを確認して「接続」ボタンを押します。最初は、サーバーの管理用パスワードの設定です。以後の管理で必要になるので、忘れないように何かに記録しておきます。

写真01: インストールが終わったときのウィンドウに「SoftEther VPNサーバー管理マネージャを起動します」という項目があり、これがオンになっていると管理マネージャが起動する。設定はこの管理マネージャから行う

写真02: サーバー管理マネージャには、「localhost(このサーバー)という項目があるのでこれを選択して「接続」ボタンを押す。このあと、管理用パスワード設定がある

次に「簡易セットアップ」ウィンドウ(写真03)が表示されるので、「リモートアクセスVPNサーバー」にチェックを入れて「次へ」ボタンを押します。

写真03: 簡易セットアップ画面では、「リモート アクセスVPNサーバー」にチェックを入れて「次へ」で先に進む

次の設定項目は「仮想HUB名」ですが、ここはデフォルトの「VPN」のままでかまいません。なお、以後の説明では、仮想HUB名はVPNであることを前提とするため、名前を変えて登録した場合には、適宜説明を読み替えてください。

次はダイナミックDNSの設定です(写真04)。ダイナミックDNSは、固定IP割り当てでないISPを使う場合に、インターネット側にあるDNSサーバーにVPNサーバーのIPアドレスを登録して、インターネット側からDNS名で常にアクセスを可能にする機能です。SoftetherVPNには、無料の専用ダイナミックDNSサービスがあり、自動的にIPアドレスを登録してくれます。これを利用するためには、ホスト名を登録しなければなりません。ウィンドウ右側中央付近に推奨のホスト名が提示されています。このまま「閉じる」ボタンを押せば登録は完了です。ホスト名をルールの範囲内で自由に設定できますが、他人と重複した名前を使うことはできません。なので、ここを変更すると、場合によっては何回か変更して利用可能な名前を探す必要があります。

写真04: ダイナミックDNS機能では、提示された名前(ダイナミックDNSホスト名の変更部分)をそのまま使うか、自分で名前を指定する

次はVPNの接続方式の設定です(写真05)。ここでは「L2TPサーバー機能を有効にする」のチェックをオンにして、ウィンドウ左下の「IPsec事前共有キー」を設定します。IPsec事前共有キーは、クライアントを正しく認識するための情報なので、ここもちゃんと記録しておきます。「IPsec事前共有キー」は、あとでアンドロイドの設定を行う場合に利用します。

写真05: 「IPsec/L2TP/EtherIP/L2TPv3設定」では、「L2TPサーバー機能を有効にする」のチェックボックスをオンにして、画面下の「IPsec事前共有鍵」に適当な共有鍵を指定する。VPNサーバーは同じ共有鍵を持つクライアントからの接続を許可するが、暗号化キーなどは別になるので適当な名前(ただし推測されにくいもの)を設定する

次の設定は「VPN Azureサービスの設定」です(写真06)。これは、VPNサーバーがファイアウォールの内側にあったり、あるいはWindows RTマシンで利用する場合に必要になりますが、このサービスも無料なので、ウィンドウ左下にある「VPN Azureを有効にする」をオンにします。すると、ダイナミックDNSで設定した名前を使った「VPN Azureサービス名」が表示されるます。ここに表示されたホスト名は、設定で利用するので記録しておいたほうがいいでしょう。ただし、アンドロイドのVPN設定では使いません。

写真06: VPN Azureサービスの設定は、アンドロイドの接続だけなら設定する必要はないが、ファイアウォールの設定変更が困難な場合やクライアントにWindows RTを使う場合には設定する必要がある。なお設定しておいても、悪影響はないので、設定しておくほうがいいだろう

最後は「簡易セットアップの実行」です(写真07)。ここは、「VPN接続を受け入れるためのユーザーの作成」と「ローカルブリッジの設定」を行います。まず、「ユーザーを作成する」ボタンを押します。

写真07: 「簡易セットアップの実行」画面となるので、まずは、「ユーザーを作成する」ボタンを押してユーザー作成を行う

「ユーザーの新規作成」(写真08)では、「ユーザー名」、「パスワード」、「パスワードの確認入力」を設定します。どちらもクライアントの接続で必要になる情報なので、記録しておきます。他の項目「本名」や「説明」などを設定してもかまいません。OKボタンを押すとユーザー管理ウィンドウが表示されるので、登録が正しいかをリストで確認したあと「閉じる」ボタンを押します。

写真08: ユーザー名やパスワード(確認入力も)を設定する。他のところは設定しなくてもよく、トラブルを避けるため触らないほうがいいだろう。認証方法は「パスワード認証」になっていることを確認しておく

次に戻ってきた「簡易セットアップの実行」にある「ローカルブリッジの設定」で、VPN接続が行われるネットワークアダプタ(インターネットに接続するネットワークアダプタ)を選択し(写真09)、「閉じる」ボタンを押します。

写真09: また写真07の画面に戻るので、今度は、「ローカルブリッジの設定」で、自宅内のネットワークに接続しているネットワークアダプタを選択する。最後に「閉じる」ボタンで設定を終了する

これで設定は終わりです。サーバー管理マネージャのウィンドウ(写真10)が表示されているはずなので、仮想HUBである「VPN」の状態が「オンライン」になっていることを確認して「閉じる」ボタンをおします。VPNサーバーはWindowsのサービスとして動作しているため、管理マネージャのウィンドウは閉じてしまってかまいません。

写真10: サーバー管理マネージャの管理画面になる。この状態でリストに「オンライン」となっていれば、VPNサーバーは動作している。問題がなければ右下の「閉じる」ボタンでウィンドウを閉じる

ブロードバンドルーターの設定

これでVPNサーバーは動作していますが、ブロードバンドルーターでは、VPNサーバーを含め、一般的にインターネット側からの接続を拒否するように設定されています。また、LAN側の複数のマシンからのインターネット接続のため「NAT」が動作しています。このため、ルーターの設定を変更し、インターネット側からVPNサーバーへ向かうパケットを通すようにします。

通過させるのは、TCPで、ポート番号は以下のIPsec用のポートと、サーバー管理マネージャの左下側にある「リスナーの一覧」にあるポート番号です。

★IPsec用ポート番号
500
4500
★SoftEther VPNの標準リスナーポート
443
992
1194
5555

ここでは、サンプルとしてNECのAterm WR8600Nでの設定を紹介します。この機種では「ポートマッピング」という機能を使って、VPNサーバーが動作しているマシン(のIPアドレス)に前記のポート番号へ到達するパケットを転送させます。なお、設定前にVPNサーバーが動作しているマシンのIPアドレスを調べておきます。

WR8600Nは、Webブラウザから設定が可能です。設定ページを開いたら、「詳細設定」 ⇒ 「ポートマッピング設定」を開きます。「追加」ボタンを使って、VPNサーバーのIPアドレスに対してTCPのポート番号を設定していきます(写真11)。WR8600では、1つの設定項目で不連続なポート番号を指定できないので、複数の項目として登録します(写真12)。

写真11: NECのAtermシリーズの場合、VPNサーバーへのアクセスを可能にするには、「詳細設定」 ⇒ 「ポートマッピング機能」を選び、NATエントリを追加する。ここでLAN側ホストはVPNサーバーの動作しているマシンのホスト。プロトコルはTCP、ポート番号はVPNサーバーが待ち受けしているポート番号(サーバー管理マネージャのリスナー一覧にある)を指定する。優先度はAtermシリーズ固有の設定値ですでに登録してある優先度以外のものを指定する

写真12: Atermのポートマッピング機能は非連続のポート番号は複数のエントリとして登録する必要があるため、このように必要なポートをすべて登録する。このリストは優先度の順に並び、優先度の高いものが先に適用される。ただし、登録時にすでに登録した優先度と同じ数字は使えないので注意すること

あとは設定を保存して、ルーターの設定は終了です。他社のルーターでは名称や設定方法は違いますが、原理としては、指定したポート番号あてにTCPのパケットが来たら、VPNサーバーのマシンへパケットが転送されるようにします。一般に「ポートフォワード」や「ポートマッピング」などと呼ばれています。

ルーターの設定が終われば、VPNサーバーはインターネット側からアクセスが可能になります。テストを行うには、内側のLAN内からは試すことができないので、自宅のインターネット接続とは別のインターネット接続方法(たとえば携帯電話によるアクセス)が必要です。なお、テストは、PCなどアンドロイド以外の機器で行うことも可能なので、機器が利用可能ならVPNの接続テストを先に済ませておくことも可能です。VPNサーバーの動作を確認しておくと、アンドロイドを接続する場合のトラブル対策が簡単になります。なぜなら、VPNサーバーが動作していることがわかれば、まずはアンドロイド側をチェックすればいいからです。そういうわけで、次回は、アンドロイド側の設定と接続テストを解説する予定です。

本稿は、2014年5月26日にAndorid情報のWeb専門誌「AndroWire」に掲載した記事を再構成したものです。