« MyCloudNas | メイン | Hypervisor »

2013年05月03日

OpenVPN

さて,前回はQNAPでOpenVPNを使うために自前の証明局を作って証明書と鍵を発行するところまででしたね.
ということで,今回はいよいよQNAP側に証明書と鍵を導入してサーバとして機能させよう,というお話.

とりあえずQNAPのWeb管理画面からSSHによる接続を許可して,早速SSH接続して設定ファイルを眺めてみます.

/etc/openvpn/server.conf

これがどうやらサーバの設定ファイルのようで,証明書や鍵は

/etc/openvpn/keys -> /etc/config/openvpn/keys/

を参照しているようです.
なので,

/etc/config/openvpn/keys/

に,前回作成した証明書を置き,server.confを編集して参照するようにすれば大丈夫そうです.

編集箇所は,

ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/myserver.crt
key /etc/openvpn/keys/myserver.key
dh /etc/openvpn/keys/dh1024.pem

の辺りで,これを自前のファイルを示すよう書き換えればよさそう.
で,実際に書き換えるわけだけど,データはUbuntuからQNAPのSMB共有フォルダ(/share/以下にある)に置いて,それをコピーしてくることにしました.
さっくりファイルをコピーして,server.confを書き換えたので,OpenVPNのサービスを再起動してみます.

# /etc/init.d/vpn_openvpn.sh restart

としてみると,特にエラーなどなく動作している模様.
念のために,ということで,QNAP自体を再起動して,いよいよクライアント側の設定です.

PCはローカルネットワークで動いているので,外部回線が利用可能なiPhone5から試すことにします.
OpenVPN公式のドキュメントを参考にしながら,iOS側の設定を行います.
まずはAppStoreでOpenVPNをダウンロードします.
ここで一旦PCにLightningケーブルで接続し,iTunesから設定ファイルを転送します.
転送するファイルは以下の4つ.

設定ファイル:openvpn.ovpn
認証局証明書:ca.crt
クライアント証明書:iphone5.crt
クライアント秘密鍵:iphone5.key

証明書と鍵は前回作成した物です.
また設定ファイルについては,QNAPの管理画面からダウンロードできるひな形をベースに,

cert iphone5.crt
key iphone5.key

を追記しています.
OpenVPN公式ドキュメントでは,設定ファイル内に証明書や鍵を埋め込む方法を紹介していたりしますが,わざわざ埋め込まなくても大丈夫そうなので,独立したファイルにしています.
正直埋め込むことでどれ程手順が簡略化されるか分からないですが・・・.

閑話休題.
さっそくiPhone5の無線LANをオフにして接続実験をしてみます.
OpenVPNアプリを起動するとiTunesから転送したファイルが認識されるので,そのまま接続をしてみます.
・・・が,上手く接続されません.
ログを見るとQNAPのOpenVPNサーバとの会話はできているようですが,証明書が違うといわれて,接続できていないようです.
おっかしいなぁ?と思いながら,SSHから確認してみると,サーバの設定ファイル(server.conf)が初期化されてしまっています.
しかし,自分で転送した証明書などは,ちゃんと/etc/config/openvpn/keys/以下に残っています.
不審に思いながらも調べてみると,QNAPは/etc/config/以下にあるものは消えないけど,それ以外の設定ファイルは(トラブル防止のために)初期化されるようなのです.
いろいろ手はあるみたいなんだけど,ここは手軽に,ということで・・・.

ca.crt -> myca.crt
ca.key -> myca.key
dh1024.pem -> dh2048.pem
myserver.crt -> myqnap.crt
myserver.csr -> myqnap.csr
myserver.key -> myqnap.key

になるように,設定ファイルにあわせてシンボリックリンクを作成してお茶を濁したのでした(笑)
QNAPを再起動してもこのシンボリックリンクは消えないようなので,目的は果たせそうです.

さて,これでいよいよ,ということでiPhone5から再度接続を試みてみます.
すると,先ほど上手くいかなかった認証が上手くいくようになりました.
が,やっぱりうまくつながらない.
サーバから設定を読み出している間にタイムアウトしてしまうようです.
これもいろいろ調べると,クライアント側の設定ファイル(openvpn.ovpn)に,以下を記述するといいようです.

reneg-sec 3600

早速記述して再度トライすると,やっと3G経由で自室のQNAPに接続されました.
QNAPのWeb管理画面からもOpenVPNユーザとして接続されていることが分かります.
いやー,無事つながって良かったよかった(汗)
ずいぶん手間取っちゃいました(笑)

投稿者 chimaki : 2013年05月03日 01:30

トラックバック

このエントリーのトラックバックURL:
http://blog.projectmd.com/cgi-bin/mt/mt-tb.cgi/699

このリストは、次のエントリーを参照しています: OpenVPN:

» L2じゃないとだめ? from ちまちまでぃず.
さて,相変わらず月一連載の体を成してしまって申し訳ないです(汗) 引っ越したり,... [続きを読む]

トラックバック時刻: 2013年12月02日 02:25