Serversman@VPSとiPhoneをOpenVPNでつなぐ

iPhoneには標準でVPN機能がついてはいるのですが、
それらはServersMan@VPSでは仕様上の制限で使えません。
私が試した限りではServersMan@VPSで使えるVPNは
OpenVPNのTUNデバイスを利用する場合だけでした。
当時はiOSでもAndroid(非root化)でもOpenVPNは使えませんでした。

そして時は流れ、つい最近OpenVPNがiOSで使えるようになっていることを知りました。
これは使ってみるしかありません。
ということでつないでみました。

まずはServersMan@VPSにログインしてiPhone用に必要なファイルを生成します。
なお、ServersMan@VPSはdebian-32bitですでにOpenVPNサーバになっていることを前提に話を進めます。
で、以下を実行します。なお詳しいことはこちらを参照ください。

# cd /etc/openvpn/easy-rsa/2.0/
# source ./vars
# ./build-key-pass client<識別名>

次に”/etc/openvpn/easy-rsa/2.0/keys”ディレクトリにある
3つのファイルをローカルにダウンロードします。

  • ca.crt
  • client-<識別名>.crt
  • client-<識別名>.key

また、”/usr/share/doc/openvpn/examples/sample-config-files”ディレクトリの
ファイル”client.conf”もダウンロードします。

今度はダウンロードした4つのファイルをローカルで加工します。
“client.conf”を”<識別名>.ovpn”にリネームします。
このovpnファイルのremote項目について以下のように編集します。

remote <VPNサーバ名> 1194

また以下の3行を削除(コメントアウト)します。

ca ca.crt
cert client.crt
key client.key

そしてファイルの最後に以下を追加します。

<ca>
-----BEGIN CERTIFICATE-----
<CA証明書>
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
<クライアント証明書>
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN RSA PRIVATE KEY-----
<クライアント秘密鍵>
-----END RSA PRIVATE KEY-----
</key>

ここで<CA証明書>は”ca.crt”の中身で上記のコメントで囲まれた部分を示し、
<クライアント証明書>は”client-<識別名>.crt”の、
<クライアント秘密鍵>は”client-<識別名>.key”の中身を同様にコピーします。
最後に完成したovpnファイルをメールに添付して自分自身に送ります。
あて先はiPhoneで受信できるアドレスにしてください。

ではデバイス側のセットアップと参りましょう。
iPhoneでOpenVPN Connectをインストールします。
iPadならOpenVPN Connectになります。
ちなみにiOS5な初代iPadでも使えます。
で、メールアプリケーションを開き、先に送ったメールに添付されているovpnファイルを開くのですが、
その際[OpenVPNで開く]ことを選択します。
すると[OpenVPN Connect]アプリケーションが立ち上がり、

New profiles are available...
1 new OpenVPN profile is available for import.

と表示されているはずです。
その直下の[+]アイコンをクリックすることでovpnファイルが取り込まれます。
必要ならパスフレーズを入力しスライドスイッチをオン側にすれば接続処理が始まり、
完了すれば[Connected]の文字が現れます。

この状態でiPhoneでウェブブラウザを立ち上げ、
ServersMan@VPSで立ち上がっているVPNサーバのローカルIPアドレスをURLに入力することで、
VPSで立ち上げているウェブサーバにアクセスできますし、
VPNにつながっている他のクライアントとも通信できます。
自宅のPCなどをVPNにつなげておけば出先からVPN経由でアクセスできて便利です。
できることが増えてホームネットワークの構築が楽しそうですね。

ところで蛇足かもしれませんが、ServersMan@VPSの仕様上の制限により、
VPNからVPSを経由してNATでインターネットに出て行くことはできません。
Proxyを経由させれば可能と思われるので、Squidでも立ち上げておけばいいでしょう。