iPhoneでOpenVPNを使おう

iPhoneでOpenVPNを使うために、サーバーの設定、証明書・鍵の作成・設定、iPhoneを設定するところまで行ったので、そのメモ。

なお、本稿の初稿は2013年4月6日(土)。同じドメイン内の別のURLで公開していたが、Webサイトの全面的な再編とリニューアルに伴って、本ブログ側に転載する。以下、初稿時のままで掲載。

外出先から自宅にVPN接続するため、PPTPサーバー内蔵のブロードバンドルーターを用いてきました。VPNを使いたくなる用途はかなりあります。自宅へのリモートアクセス、公衆無線LAN使用時のセキュリティ確保(公衆無線LANでの暗号は強固とは限らないので)、その他いろいろです。お手軽便利に使えてきたものの、いかんせんVPNのプロトコルとしてPPTPは決して堅牢なものとはいえず、いつもその点が気がかりでした。代替用としてL2TP/IPsecサーバーを自宅のLinuxサーバーにインストールしようとしたものの、難解すぎて挫折していました。L2TP/IPsecサーバー機能を内蔵したルーター(ヤマハのRTX-810とか)の購入を検討したこともあったものの、価格その他で購入に踏み切れずにいました。

iOS用のOpenVPN接続ソフト「OpenVPN Connect」が開発されて、AppleのApp Storeからダウンロードできるようになったという話を聞いて、OpenVPNをLinuxサーバーにインストールして試してみたところ、L2TP/IPsecサーバー構築に挑んだ時の苦労はなんだったのだろうというほど、ラクにインストール・設定ができました。セキュリティはL2TP/IPsecと同等以上、インストールは簡単、iPhoneでも使える、使わない手はありません。

iPhone, iPodTouch, iPad, iPad miniからOpenVPN接続できる、考えるだけでワクワクします。OpenVPNのサーバー設定からiPhoneでの設定までの手順を備忘録としてまとめます。なおこの接続ソフトはApple公認のものなので、JailBreak(脱獄)は不要です。

ちなみに、LinuxサーバーにはぷらっとホームのOpenBlocksを使っています。ファンレス、ディスクレスで堅牢なので、この手のサーバー運用にはぴったりです。

【インストール環境】

以下のようなインストール環境・前提条件で、インストールと設定を行います。

  • サーバー1台に対して、クライアント1台がリモートアクセスする環境を想定。
  • Webブラウズを含む、すべてのパケットがVPNを経由するようにする。
  • サーバーOSは、Debian GNU Linux 6.0
  • サーバー背後のLAN環境は192.168.0.0/24とする。
  • ネットワーク環境に応じて使い分けできるよう、接続方法を2種類用意する。
  • VPNサーバーはルーティングモード(TUNデバイス)で動作させる。

OpenVPNでは、デフォルトでUDPプロトコル1194番を使います。このポートだけでもかまわないものの、ネットワーク環境に応じて使い分けができるよう、接続方法(VPNトンネル)を2種類用意することとし、ひとつはデフォルトのUDPプロトコル1194番、もうひとつはTCPプロトコル443番(httpsで使われているポート)を使うこととします。httpsはインターネット利用の上で必須なサービスであり、ポートをふさがれるなどの理由でパケットが通らない可能性は低いと考えられます。(接続方法を2種類用意するものの、証明書を共用しているだめ、2種類同時に使うことはできません。)

【サーバーへのインストールと設定】

以下のような流れで、LinuxサーバーにOpenVPNをインストールし、設定していきます。なおサーバーOSはDebian GNU Linux 6.0です。これ以外のLinuxでは、インストールのコマンド、およびルーティング設定時のディレクトリ、ファイル名、コマンド名が若干違うかもしれません。

  • OpenVPNソフトのインストール
  • 証明書・鍵の作成と配置
  • OpenVPNの設定
  • ルーティングと自動起動の設定
  • ファイアーウォール設定変更
  • OpenVPN起動

まずOpenVPNをインストールします。Linuxのソフトウェアは最新の状態に更新されているものとします。(aptitude update; aptitude safe-upgrade;)

次に、証明書と鍵の作成と配置を行います。認証局(CA)とその鍵、サーバー証明書とその鍵、クライアント証明書とその鍵、DHパラメータ、TLS認証鍵、合計8個作成します。

次に、OpenVPNサーバーの設定ファイルを編集します。/etc/openvpn/server.confを元に必要な箇所を修正します。なお、2種類の接続方法を準備するため、設定ファイルも2種類(server-tun0.confとserver-tun1.conf)用意し、/etc/openvpn内に保存します。なお2種類の接続方法(2種類のトンネル)を用意する場合、ポート番号、サブネットアドレスを別々にする必要があるので、そのように設定します。

次にルーティングの設定を行います。ここまでの設定だけだと、クライアントからOpenVPNサーバーに接続することはできても、そこから外へ出て行けないため、Webブラウズなどができません。

次にファイアーウォールの設定を変更し、UDPプロトコル1194番およびTCPプロトコル443番宛のパケットを通すようにします。ファイアーウォールの設定はさまざまと思いますので、詳細はここでは割愛します。OpenVPNサーバーの設定は以上です。OpenVPNを起動します。

【iPhoneの設定】

以下のような流れで、iPhoneを設定していきます。最初にAppleのApp Storeから「OpenVPN Connect」をダウンロードし、インストールしておいてください。

  • ovpnプロファイルの作成
  • ovpnプロファイルのiPhoneへのコピー
  • ovpnプロファイルのインポート
  • iPhoneで実際に接続する

クライアントのiPhoneに証明書や鍵をインポートするために、ovpnプロファイルを作成します。ovpnプロファイルそのものはテキストファイルで、その構造には2種類あります。ひとつは証明書や鍵を別個のファイルとして持つ構造、もうひとつは証明書や鍵すべてをひとつのovpnプロファイルに入れ込んでしまう構造です。ここではひとつのovpnプロファイルに証明書や鍵すべてを入れ込む構造をとることとします。証明書や鍵ファイルそのものはバイナリファイルではなくテキストファイルなので、簡単にコピペ可能です。

ovpnプロファイルを作成したら、拡張子ovpnのファイル名で保存します。

次にovpnプロファイルをiPhoneにiTunes経由でコピーします。iTunesでOpenVPN Connectにファイルをコピーする箇所があるので、そこにコピーします。(これについては他にもキャプチャ画面付で解説しているサイトがあるので、詳細は割愛します。)ovpnプロファイルをiPhoneにコピーしたら、iPhoneでOpenVPN Connectを起動します。するとインポートしたプロファイルが表示されるので、+ボタンを押してインポートします。

openvpn_iphone_001 openvpn_iphone_002

プロファイルのインポートが完了すると、OpenVPN接続が可能です。Disconnectedの下のスイッチを動かすと、接続します。表示がConnectedになり、緑色ランプが表示され、画面上部にVPNマークが表示されます。

openvpn_iphone_003

iPadにも入れてみました。手順はiPhoneの場合と同様です。

openvpn_iphone_004

スポンサーリンク

フォローする

スポンサーリンク