OpenVPNではまる
OpenVPNではまった話を。そもそもの目的はFTPへの接続元を制限したいという単純な話。接続元が動的アドレスの場合にはVPNでも使わせるしかないだろうと。んで、OpenVPNでできるんじゃね? と試しにやってみることにした。ちなみに、接続のイメージはこんなかんじ(下図1)。VPN接続した後はOpenVPNをゲートウェイにしてDMZ上のWebサーバにFTPする。
参考にしたのは「OpenVPN 2.0 HOWTO 日本語訳」。インストール自体はたいした問題もなく、さくっと終了。インターフェイスはTUN(ルーティングVPN)を選択し、設定は基本ほとんどデフォルトのままで問題なく起動。クライアント側にはOpenVPN GUI日本語版を突っ込んで、いざ接続。するっと接続完了。クライアントPCには10.8.0.x のアドレスが振られた。ここまでは順調。Initialization Sequence Completed のメッセージを確認し、HOWTOにも書かれているとおり、まずはサーバに ping を打ってみる。
ping 10.8.0.1
もしpingが成功したらおめでとう! ・・・って、成功しとらんがな(怒)。ここからpingが無事成功するまで、とことんはまりまくったのだが、原因はネットワーク構成にあった。そもそもVPNはVirtual Private Networkという位だから、遠く離れたプライベートなネットワーク同士を接続するための技術。検索に引っかかってくるのは事務所間を繋ぐとか、自宅から会社や大学の研究室のサーバをつつくとかいう事例ばかり(下図2「よくある構成」)。
ま、それが本来の目的だから当たり前か。一方こちらはインターネット上に設置したサーバにFTPするためにVPNを使うという構成。似た事例はほとんどヒットしなかった。
結果的な敗因は前述のHOWTOを忠実になぞってしまったことだ。「はじめてのVPNを起動させテストする」の項目から該当箇所を引用してみる。
もしpingが成功したらおめでとう! あなたが機能するVPNの構築に成功したのである.
トラブル究明
pingが失敗した,またはOpenVPNの初期化が完了できなかった場合,以下のチェックリストに示す症状と解決法をご参照下さい
(中略:トラブルシューティングが5項目ほど)
トラブル究明についてもっと知りたい場合,FAQの情報を読むとよい.
この、「トラブル究明」の項を足がかりに、クライアント側のWindowsの設定を変えてみたり、ログのエラーを頼りにググりまくってudpをtcpに変更してみたり、サーバ側の環境をVMwareからXenServer、物理サーバへと変更してみたり、OSをLinuxからFreeBSDへ変更してみたり。結果、はまりまくり。pingは頑として通らず。
いい加減疲れ果てて(飽きてきたとも言う)、HOWTOをぼけーっと眺めていたら、最初の方に今まで読み飛ばしていたこんな一文が。
そのように素早く最小限な設定でVPNを構築したいなら,静的鍵Mini-HOWTOを参照する.
で、この「静的鍵」で試してみたら無事pingが通ったので、そこから気を取り直して設定を見直し、最終的に当初の目的通りに使えるようになったと。具体的な設定については、そのうち気が向いたらまとめます。
で、教訓。OpenVPNではまったら、最初に「静的鍵」を試せ。