FC2ブログ

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

OpenVPNって何がいいのさ?

OpenVPNって何だ?

 約3年ほど各種OSでOpenVPNを使ってきた経験から、OpenVPNを紹介したいと思います。

 OpenVPNはオープンソースで開発されているVPNソフトウェアです。VPNとしてよく聞くのはIPsecだったりPPTPだったりSSL-VPNだったりします。ここではそのような他のVPN技術とどのように違うのか、メリット・デメリットの説明をします。

OpenVPNの特徴・メリット

1.オープンソースである。
 商用版のOpenVPNも出てきていますが、オープンソース版のライセンスはGPLです。したがって利用するのに費用は不要で、ソースコードも自由に見たり改造(GPLの制限に注意!)できたりします。
 商用のSSL-VPNを使おうとするととんでもない出費を強いられますが、OpenVPNの場合よくあるハードウェアがあれば、あとは0円でVPN環境を構築できます。一番安く上げるには、OpenWrtが動く中古のBuffaloルータかLafoneraがあれば数千円の材料費だけで作れてしまいます。

2.いろんなOSで利用でき、相性問題が出ない。
 オープンソースで開発されているため、各種のOSに移植されています。僕が使った実績があるものだけでもLinux・FreeBSD・Windows・MacOSX・WindowsMobileと幅広いOSに対応しています。特殊なところではルータ向けのLinuxディストリビューションであるOpenWrtや、FreeBSDベースのファイヤーウォールアプライアンスであるpfsense等でも利用できます。設定ファイルもほとんど手直しせずに使えたりします。
 また、IPsecやPPTPでは相性問題で接続できなかったり接続できても不安定だったりすることが多いですが、僕はOpenVPNではそのような相性問題で困ったことが一度もありません。つながらない時はネットワークに問題があったか設定が誤っているなど、OpenVPN自身の問題ではありませんでした。サーバ側に玄箱debian・OpenWrt・pfsense、クライアント側にXP・WindowsMobile・MacOSXという組み合わせで使ってきた実績があります。Vistaではいろいろ工夫が必要らしいです。

3.暗号化はOpenSSLを利用している。
 OpenVPNでは暗号化にOpenSSLを利用しています。したがって、OpenSSLで利用できる暗号方式であれば(DES/AES/BFなど・・・最近はcamelliaも使えるそうです)VPNの暗号化に利用できます。また、ハードウェア暗号化アクセラレータがOpenSSLから利用できるようになっていればその恩恵にあずかることができます。(参考:ハードウェアVPNアクセラレータの魔力

4.認証に証明書を使える。
 VPNに接続するために単純なユーザ名・パスワードではなく証明書を利用できるためなりすましが困難です。(当然証明書を適切な方法で作成・展開しているという前提ですが)

5.TCPやUDPはもちろんのことHTTPSにもカプセリングできる。
 SSL-VPNやSoftEtherではProxy経由でもVPNを張ることができます。OpenVPNでも同様にProxy越えでVPNを張ることができます。したがって社内LANなどの制限された環境から自宅にVPNを張る、と言った荒業もできます・・・が、最近ではセキュリティセキュリティと喧しいのでこんなことをやったら大体大目玉を食らいます。
 GREが必須であるPPTPや、ESP/AHを使うIPsecだとVPNパススルーがなかったり、そもそもTCP/UDP以外がフィルタされていたりするとVPNをつなぐことができません(IPsecの場合はNATトラバーサルと言う逃げ道もありますが)。困ったことに市販のBBルータではGREをうまく扱えないものが結構あります。フレッツ光プレミアムで提供されるCTUでもGREを特定のホストにフォワードしたりする機能がなく、そういった用途ではPPPoEルータを下にぶら下げるしかないようです。

6.OSへの依存が少ない
 OSに依存する部分はTUNデバイスのみです。OpenVPNは独立したデーモンとして稼動しており、このデーモンがTUNデバイスとやり取りしているためOSへの依存がかなり小さいと言えます。ここはOSのカーネルと密接に引っ付いているIPsecとの大きな違いです。

OpenVPNのデメリット
もちろんいいことばかりではありません。デメリットも当然あります。

1.設定ファイルがわかりにくい。
 実際のところ設定ファイルはそんなに複雑ではないのですが、商用ソフトはGUIで設定できるのに比べるとやはりとっつきにくさはあります。ウィザードもないので、試行錯誤しながらがんばるしかありません。企業向けのSSL-VPNのように専用ページにアクセスしたらドライバを自動的にインストール、といった至れり尽くせりな親切さはありません。
 クライアントPCを直接VPNに接続する、といった内容であれば苦労はまだ少ないのですが、LAN間接続のためにOpenVPNを使おうとするとclient-config-dirをうまく使ったりとひと手間かかります。

2.最近あまりアップデートされていない。
 これはよくとらえれば「すでに枯れて安定している」の裏返しではあるんですが・・・。

3.遅い?
 ストリーム暗号の適応によるOpenVPNの高速化と操作性向上についてと言う論文で、OpenVPNの暗号化をブロック暗号からストリーム暗号に変えたら速度が速くなったという結果が発表されています。ただ残念なことに、この成果が開発元にフィードバックされたって情報はないので、ただの研究結果で終わってしまっています。せっかく改善したのなら開発元にフィードバックしろよって思うんですが日本の研究者ってのはなんでこうなんでしょうね?
 また、速度を上げるためのチューニング情報がほとんどありません。2chなどで多少話題になったことはありますが、まとまった情報は皆無のようで環境依存も大きいようです。mssfix、Fragment、MTU関連のパラメータがチューニング対象になるようです。

4.重い?
 VPNソフトウェアの性能評価という論文では、CPUのキャッシュ量がスループットに大きく影響していると結論付けています。それなりの速度を確保しようとすると高性能なCPUが必要ということです。

 個人的にはデメリットの部分はあまり気にならないので、自宅にVPNで接続する時に多用してます。うまく使いこなすことができれば、企業向けのうん百万するようなSSL-VPN機器並みのことができるのはオープンソースの幸せなところですね。

テーマ : Linux
ジャンル : コンピュータ

tag : OpenVPN OpenWrt


OpenVPNのトラブルシューティング

セッションの確立はできるが通信できない場合の対処法。まずはサーバ側・クライアント側双方の設定ファイルに「verb 3」を追加しLogを確認。

ログに「Bad LZO decompression heade」が表示されている場合

とりあえず、設定ファイルから「comp-lzo」をはずしましょう。その他の問題(たとえば下のフラグメントなど)を解消すると、「comp-lzo」設定を復活させてうまく行く場合があります。

ログに「FRAG_IN error」が表示されている場合

サーバ側・クライアント側でフラグメントの設定があっていない可能性があります。
fragment XXXX
の設定が双方で一致しているか確認してみてください。

tag : OpenVPN



カテゴリ


最新記事

月別アーカイブ

最新コメント

最新トラックバック









上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。