OpenVPNは、ルーティング構成またはブリッジ構成において、安全なポイントツーポイント接続またはサイトツーサイト接続を確立し、リモートアクセス機能を提供する技術を実装した仮想プライベートネットワーク(VPN)システムです。クライアントアプリケーションとサーバーアプリケーションの両方を実装しています。
OpenVPNでは、事前共有された秘密鍵、証明書、またはユーザー名/パスワードを使用して、ピア同士が認証を行うことができます。マルチクライアント・サーバー構成で使用する場合、サーバーは署名と認証局を使用して、各クライアントに対して認証証明書を発行できます。
OpenSSL暗号化ライブラリとTLSプロトコルを幅広く使用し、多くのセキュリティおよび制御機能を備えています。鍵交換にSSL/TLSを利用する独自のセキュリティプロトコル[ 11 ]を使用しているため、ネットワークアドレス変換(NAT)やファイアウォールを通過することができます。[ 12 ]
OpenVPNは、いくつかのシステムに移植され、組み込まれています。たとえば、DD-WRTにはOpenVPNサーバー機能があります。マルチプロトコルVPNサーバーであるSoftEther VPNにも、OpenVPNプロトコルの実装があります。[ 13 ]
これはJames Yonanによって書かれたフリーソフトウェアであり、 GNU General Public Licenseバージョン2(GPLv2)の条件に基づいてリリースされています。 [ 14 ]さらに、商用ライセンスも利用可能です。[ 15 ]
OpenVPN はOpenSSLライブラリを使用して、データチャネルと制御チャネルの両方の暗号化を提供します。OpenSSL がすべての暗号化と認証処理を実行するため、OpenVPN は OpenSSL パッケージで使用可能なすべての暗号を使用できます。また、 HMACパケット認証機能を使用して、接続にセキュリティの追加レイヤーを追加することもできます (作成者によって「HMAC ファイアウォール」と呼ばれています)。さらに、ハードウェア アクセラレーションを使用して暗号化のパフォーマンスを向上させることもできます。[ 16 ] [ 17 ] mbed TLSのサポートはバージョン 2.3 から利用可能です。[ 18 ]
OpenVPNには、ピア同士を認証するための複数の方法があります。OpenVPNは、事前共有鍵、証明書ベース、およびユーザー名/パスワードベースの認証を提供しています。事前共有秘密鍵は最も簡単で、証明書ベースは最も堅牢で機能が豊富です。バージョン2.0では、証明書の有無にかかわらず、ユーザー名/パスワード認証を有効にできます。ただし、ユーザー名/パスワード認証を利用するには、OpenVPNはサードパーティ製モジュールに依存します。
OpenVPNは、ユーザーデータグラムプロトコル(UDP)または伝送制御プロトコル(TCP)トランスポート上で動作し、単一のTCP/UDPポート上で作成されたSSLトンネルを多重化します[ 19 ](UDPの場合はRFC 3948)。[ 20 ]
2.3.x シリーズ以降、OpenVPN はトンネル内の仮想ネットワークのプロトコルとして IPv6 を完全にサポートしており、OpenVPN アプリケーションは IPv6 を介して接続を確立することもできます。[ 21 ]ほとんどのプロキシ サーバー( HTTPを含む) を介して動作することができ、ネットワーク アドレス変換(NAT) を介して動作し、ファイアウォールを通過するのに優れています。サーバー構成は、特定のネットワーク構成オプションをクライアントに「プッシュ」できます。これには、IP アドレス、ルーティング コマンド、およびいくつかの接続オプションが含まれます。OpenVPN は、Universal TUN/TAP ドライバを介してネットワークするための 2 種類のインターフェイスを提供します。レイヤ 3 ベースの IP トンネル (TUN) または、あらゆる種類の Ethernet トラフィックを伝送できるレイヤ 2 ベースの Ethernet TAP のいずれかを作成できます。OpenVPN は、オプションでLZO圧縮ライブラリを使用してデータ ストリームを圧縮できます。ポート 1194 は、OpenVPN にIANAによって割り当てられた公式のポート番号です。プログラムの新しいバージョンでは、デフォルトでこのポートが使用されます。バージョン2.0では、1つのプロセスが複数のトンネルを同時に管理できる機能が追加されました。これは、1.xシリーズの元の「プロセスごとに1つのトンネル」という制限とは対照的です。
OpenVPNは一般的なネットワークプロトコル(TCPとUDP)を使用するため、ISPが特定のVPNプロトコルをブロックしてユーザーに高額な「ビジネスグレード」サービスへの加入を強制するような状況では、IPsecの望ましい代替手段となります。たとえば、 Comcastは以前、@Home製品は住宅向けサービスとして指定されており、商用アプリケーションの使用は許可されていないと宣言していました。彼らの主張は、 VPN経由でリモートワークを行うと、通常の住宅向け加入者のネットワークパフォーマンスに悪影響を与える可能性があるというものでした。彼らは、@Home製品よりも高額な@Home Professionalという代替案を提供しました。つまり、VPNを使用したい人は誰でも、より高額なビジネスグレードのサービスに加入しなければなりませんでした。[ 22 ]
OpenVPNが伝送制御プロトコル(TCP)トランスポートを使用してトンネルを確立する場合、トンネル化されていないネットワークリンクに十分な余剰帯域幅があり、トンネル化されたTCPタイマーが期限切れにならないことが保証されている限り、パフォーマンスは許容範囲内になります。[ 23 ]これが成り立たなくなると、 TCPメルトダウン問題によりパフォーマンスが劇的に低下します。[ 24 ] [ 25 ]
OpenVPN はさまざまな内部セキュリティ機能を提供します。OpenSSL ライブラリを介して最大256 ビットの暗号化が可能ですが、一部のサービス プロバイダはより低いレートを提供する場合があり、実質的に消費者が利用できる最速の VPN の一部を提供します。OpenVPN は、一定間隔で暗号化キーを再生成する完全前方秘匿性 (PFS) もサポートしており、1つのキーが侵害された場合でも、過去および将来のデータが安全であることを保証します。さらに、OpenVPN は ChaCha20 や AES-256 などのさまざまな暗号化方式で構成できます。[ 26 ]これは、IP スタック (したがってカーネル) 操作を必要とせず、ユーザー スペースで実行されます。OpenVPN は、 root 権限を放棄し、mlockall を使用して機密データをディスクにスワップしないようにし、初期化後にchroot ジェイルに入り、初期化後にSELinuxコンテキストを適用する機能を備えています。
OpenVPNは、IKE、IPsec、L2TP、 PPTPをサポートするのではなく、SSLとTLSに基づく独自のセキュリティプロトコルを実行します[ 11 ]。
OpenVPNは、PKCS#11ベースの暗号化トークンを介したスマートカードの使用をサポートしています。
OpenVPN は、定義されたエントリ ポイントで呼び出すことができるサードパーティプラグインまたはスクリプトで拡張できます。 [ 27 ] [ 28 ]これは多くの場合、より高度なログ記録、ユーザー名とパスワードによる強化された認証、動的なファイアウォールの更新、 RADIUS統合などで OpenVPN を拡張することを目的としています。プラグインは動的にロード可能なモジュールで、通常はCで記述されていますが、スクリプト インターフェイスは OpenVPN で使用可能な任意のスクリプトまたはバイナリを実行できます。OpenVPN ソース コード[ 29 ]には、 PAM認証プラグインなど、このようなプラグインの例がいくつかあります。LDAP やSQLiteやMySQLなどの SQL データベースに対して認証を行うためのサードパーティ プラグインもいくつか存在します。[ 30 ]
これは、HMAC ベースの認証が有効になっている場合 (OpenVPN の tls-auth オプション) の OpenVPN コントロール チャネル パケットの例です。IP トラフィックを伝送するデータ チャネル パケットは、異なる形式です。[ 31 ]
OpenVPNは、 Solaris、Linux、OpenBSD、FreeBSD、NetBSD、QNX、macOS、Windows XP以降で利用可能です。[ 32 ] OpenVPNは、Maemo、[ 33 ] Windows Mobile 6.5以前、[ 34 ] iOS 3GS +デバイス、[ 35 ]脱獄されたiOS 3.1.2+デバイス、[ 36 ] Android 4.0+デバイス、CyanogenmodアフターマーケットファームウェアがフラッシュされたAndroidデバイス[ 37 ] 、または適切なカーネルモジュールがインストールされているAndroidデバイス[ 38 ]などのモバイルオペレーティングシステムで利用可能です。Palm OSを含む一部の携帯電話OSとは互換性がありません。CitrixやターミナルサービスWebアクセスなどのWebページとして表示される「Webベース」のVPNではありません。このプログラムは、 GUIベースのウィザードではなく、テキストファイルを手動で編集して個別にインストールおよび構成します。OpenVPNは、 L2TPまたはPPTPプロトコル上でIPsecを使用するVPNクライアントとは互換性がありません。パッケージ全体は、クライアント接続とサーバー接続の両方に対応するバイナリファイル1つ、オプションの設定ファイル、および使用する認証方法に応じて1つ以上のキーファイルで構成されています。
OpenVPNは複数のルーターファームウェアパッケージに統合されており、ユーザーはネットワークルーター上でクライアントモードまたはサーバーモードでOpenVPNを実行できます。例えば、クライアントモードでOpenVPNを実行しているルーターでは、ネットワーク上のどのデバイスでもOpenVPNをインストールする必要なくVPNにアクセスできます。
OpenVPNを統合した注目すべきファームウェアパッケージには、以下のようなものがあります。
OpenVPNは、一部のメーカー製ルーターのファームウェアにも実装されている。
OpenVPNは、オープンソースのマルチプロトコルVPNサーバーであるSoftEther VPNに統合され、既存のOpenVPNクライアントからVPNサーバーに接続できるようになりました。
OpenVPNは、 Vyattaソフトウェアルーターから派生したオープンソースのルーティングオペレーティングシステムであるVyosにも統合されています。
OpenVPNには2つのバージョンがあります。
OpenVPN接続は、使用されているプロトコルやポートに関係なく、送信パケットの既知のヘッダーデータに基づいて、ディープパケットインスペクションを使用して簡単に検出できます。 [ 50 ] [ 51 ] [ 52 ]ディープパケットインスペクションでは暗号化されたトンネルの内容を特定することはできませんが、接続をブロックしたり、通信参加者を特定したり、関連データをログに記録したりするために使用できます。これは、暗号化された接続が禁止されている国や、企業ネットワークでネットワークブロックを回避する場合の民事法など、特定の環境でVPN接続の使用が禁止されている場合に特に重要です。[ 53 ] [ 54 ] [ 55 ] [ 56 ] [ 57 ]
{{cite web}}: CS1メンテナンス: アーカイブサービスは非推奨になりました (リンク){{cite book}}: CS1 maint: 数値名: 著者リスト (リンク)