OpenVPN

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索
OpenVPN
Ovpntech logo-s REVISED.png
開発元 James Yonan
初版 2.3.4 / 2014年5月2日(7か月前) (2014-05-02[1]
プラットフォーム クロスプラットフォーム
種別 VPN
ライセンス GPL
公式サイト openvpn.net
テンプレートを表示

OpenVPN は、サーバ間に暗号化されたトンネルを作成するためのオープンソースVirtual Private Network(VPN)ソフトウェアである。James Yonan が開発し、GNU General Public License でリリースされている。

概要[編集]

OpenVPN は、事前共有しておいた秘密鍵、公開鍵証明書ユーザ名/パスワードを使って Peer to Peer の相互の認証を行う。OpenSSLSSLv3/TLSv1プロトコルを利用する。SolarisLinuxOpenBSDFreeBSDNetBSDMac OS XWindows 2000/XP などで動作する。様々なセキュリティ機能や制御機能を持つ。Webベースの VPN ではなく、IPsec や他の VPN パッケージとは互換性がない。クライアント側もサーバ側も1個のバイナリとオプションの設定ファイルから構成され、使用する認証方式によって、いくつかの鍵ファイルが必要となる。

暗号[編集]

OpenVPN は OpenSSL ライブラリを使って、データチャンネルと制御チャンネルの両方の暗号化を行う。暗号化と認証処理は OpenSSL に任されており、OpenSSL パッケージに含まれる任意の暗号方式を使うことができる。HMAC パケット認証機能を付加的に使用して、コネクション時のセキュリティを強化することもできる(開発者はこれを HMAC Firewall と称している)。さらに、暗号化をハードウェアによって行い、性能を強化することもできる。

認証[編集]

相互の認証は、いくつかの方法がある。OpenVPN が推奨している方法は、事前共有した秘密鍵、公開鍵証明書、ユーザ名/パスワードを使った認証である。事前共有した秘密鍵が最も簡単であり、公開鍵証明書が最も頑健で機能が豊富である。ユーザ名/パスワードを使った方法は新しい機能(バージョン 2.0)であり、クライアント側の認証を不要とすることもできる(サーバ側は必須)。ソースのtarballには、Perl スクリプトによるユーザ名/パスワード検証(PAM)とC言語によるPAMの例が含まれている。

ネットワーク[編集]

OpenVPN は全ての通信を1つのIPポートに多重化する。UDP(デフォルト、推奨)でもTCPでも利用可能である。ほとんどのプロキシサーバを経由しても大丈夫で、ネットワークアドレス変換経由でもファイアウォール経由でも通信可能である。サーバ側からクライアント側に特定のネットワーク設定を送信することもできる(IPアドレス、ルーティングコマンド、その他コネクションオプション)。OpenVPN は、TUN/TAPドライバ経由のネットワーキング方法を2種類提供する。ネットワーク層でのIPトンネルまたはデータリンク層でのイーサネット TAP のどちらかを使うことができ、後者では任意の種類のイーサネットのトラフィックをやりとりできる。また、オプションでLZOデータ圧縮ライブラリで転送データを圧縮することもできる。IANA は、ポート 1194 を公式に OpenVPN に割り当てている。新しいバージョンではデフォルトでそのポートを使用するようになっている。バージョン 2.0 では、1つのプロセスで複数のトンネルを同時に管理できる。従来は、トンネルごとにプロセスが必要だった。

セキュリティ[編集]

OpenVPN はいくつかのセキュリティ機能も内蔵している。完全にユーザ空間で動作するため、カーネルでのIPスタック操作が不要である。OpenVPN は、root 特権の禁止機能、mlockall による重要データのスワップアウト禁止機能、初期化後に chroot によってルートとされたディレクトリ以外にアクセスできなくする機能などがある。

OpenVPN は、PKCSベースの暗号トークンによるICカードサポートも行う。

脚注[編集]

[ヘルプ]
  1. ^ SourceForge.net - OpenVPN: openvpn-announce

関連項目[編集]

  • OpenSSH - ネットワーク層/データリンク層のトンネルベースのVPNを実装している。
  • stunnel - SSL 上の任意のTCPコネクションの暗号化を行う。
  • UDPホールパンチング - ファイアウォールやNATを経由して UDP「コネクション」を確立する技法

外部リンク[編集]