(57)【要約】プライベートネットワークへのリモートアクセスを安全にするための方法であって、データリンク層から、プライベートネットワーク上の第一のシステムに送信予定の第一の複数のパケットの中のパケットを傍受するステップを含む。第二のネットワーク上のシステムに送信予定のプライベートネットワーク上の第二のシステムから送信された第二の複数のパケットの中のパケットは、データリンク層から傍受される。ネットワークアドレス変換は、少なくとも1つの傍受したパケットに対し実行され、少なくとも1つの傍受したパケットは、傍受したパケットに対するポリシーの適用に応答して、送信先に送信される。傍受したパケットは、ポリシーのアプリケーションに応答して、送信先システムに送信するために、フィルタリングテーブルまたは変更されたルーティングテーブルに応答して、クライアントアプリケーションに送信され得る。
2008507929.tif 000002
【特許請求の範囲】
【請求項１】
パケットをルーティングするための装置であって、
データリンク層から、プライベートネットワーク上の第一のシステムに送信される予定の第一の複数のパケットの中のパケットを傍受する受信機と、
該データリンク層から、第二のネットワーク上のシステムに送信される予定の、該プライベートネットワーク上の第二のシステムから伝送される第二の複数のパケットの中のパケットを傍受するフィルタと、
該受信機および該フィルタと通信し、少なくとも１つの傍受したパケットに対しネットワークアドレス変換を実行するとともに、該少なくとも１つの傍受したパケットを送信先へ送信する送信機と
を備える、装置。
【請求項２】
パブリックＩＰアドレスを有するシステムにプライベートＩＰアドレスを関連付けるアドレス指定要素をさらに備える、請求項１に記載の装置。
【請求項３】
前記フィルタおよび前記受信機と通信し、傍受したパケットにポリシーを適用するポリシーエンジンをさらに備える、請求項１に記載の装置。
【請求項４】
前記フィルタおよび前記受信機と通信し、傍受したパケットにアクセス制御リストを適用するポリシーエンジンをさらに備える、請求項１に記載の装置。
【請求項５】
前記送信機は、前記少なくとも１つの傍受したパケットを、通信トンネルを介して前記第二のネットワーク上の前記システムに送信する、請求項１に記載の装置。
【請求項６】
前記送信機は、前記少なくとも１つの傍受したパケットを、セキュアな伝送制御プロトコル（ＴＣＰ）を介して前記第二のネットワーク上の前記システムに送信する、請求項１に記載の装置。
【請求項７】
前記送信機は、前記少なくとも１つの傍受したパケットに対しリバースネットワークアドレス変換を実行する、請求項１に記載の装置。
【請求項８】
前記送信機は、リモートプロセスを前記第二のネットワーク上の前記システムに送信する、請求項１に記載の装置。
【請求項９】
前記受信機は、前記データリンク層から、プライベートネットワーク上の第一のシステムに送信される予定の第一の複数のリアルタイムパケットの中のリアルタイムパケットを傍受することをさらに含む、請求項１に記載の装置。
【請求項１０】
前記フィルタは、前記データリンク層から、第二のネットワーク上のシステムに送信される予定の、前記プライベートネットワーク上の第二のシステムから送信される第二の複数のリアルタイムパケットの中のリアルタイムパケットを傍受することをさらに含む、請求項１に記載の装置。
【請求項１１】
前記受信機は、前記データリンク層から、プライベートネットワーク上の第一のシステムに送信される予定の第一の複数のユーザーデータグラムプロトコル（ＵＤＰ）パケットの中のユーザーデータグラムプロトコル（ＵＤＰ）パケットを傍受することをさらに含む、請求項１に記載の装置。
【請求項１２】
前記フィルタは、前記データリンク層から、第二のネットワーク上のシステムに送信される予定の、前記プライベートネットワーク上の第二のシステムから送信される第二の複数のユーザーデータグラムプロトコル（ＵＤＰ）パケットの中のユーザーデータグラムプロトコル（ＵＤＰ）パケットを傍受することをさらに含む、請求項１に記載の装置。
【請求項１３】
パケットをルーティングするための方法であって、
（ａ）データリンク層から、プライベートネットワーク上の第一のシステムに送信される予定の第一の複数のパケットの中のパケットを傍受するステップと、
（ｂ）該データリンク層から、第二のネットワーク上のシステムに送信される予定の、該プライベートネットワーク上の第二のシステムから送信される第二の複数のパケットの中のパケットを傍受するステップと、
（ｃ）少なくとも１つの傍受したパケットに対しネットワークアドレス変換を実行するステップと、
（ｄ）該少なくとも１つの傍受したパケットを送信先へ送信するステップと
を含む、方法。
【請求項１４】
パブリックＩＰアドレスを有するシステムにプライベートＩＰアドレスを関連付けるステップをさらに含む、請求項１３に記載の方法。
【請求項１５】
傍受したパケットにポリシーを適用するステップをさらに含む、請求項１３に記載の方法。
【請求項１６】
傍受したパケットにアクセス制御リストを適用するステップをさらに含む、請求項１３に記載の方法。
【請求項１７】
ステップ（ｄ）は、前記少なくとも１つの傍受したパケットを、通信トンネルを介して前記第二のネットワーク上の前記システムに送信するステップをさらに含む、請求項１３に記載の方法。
【請求項１８】
ステップ（ｄ）は、前記少なくとも１つの傍受したパケットをセキュアな伝送制御プロトコル（ＴＣＰ）を介して、前記第二のネットワーク上の前記システムに送信するステップをさらに含む、請求項１３に記載の方法。
【請求項１９】
ステップ（ｄ）は、前記少なくとも１つの傍受したパケットに対しリバースネットワークアドレス変換を実行するステップをさらに含む、請求項１３に記載の方法。
【請求項２０】
ステップ（ｄ）は、前記第二のネットワーク上の前記システムにリモートプロセスを送信するステップをさらに含む、請求項１３に記載の方法。
【請求項２１】
ステップ（ａ）は、前記データリンク層から、プライベートネットワーク上の第一のシステムに送信される予定の第一の複数のリアルタイムパケットの中のリアルタイムパケットを傍受するステップをさらに含む、請求項１３に記載の方法。
【請求項２２】
ステップ（ｂ）は、前記データリンク層から、第二のネットワーク上のシステムに送信される予定の、前記プライベートネットワーク上の第二のシステムから送信される第二の複数のリアルタイムパケットの中のリアルタイムパケットを傍受するステップをさらに含む、請求項１３に記載の方法。
【請求項２３】
ステップ（ａ）は、前記データリンク層から、プライベートネットワーク上の第一のシステムに送信される予定の第一の複数のユーザーデータグラムプロトコル（ＵＤＰ）パケットの中のユーザーデータグラムプロトコル（ＵＤＰ）パケットを傍受するステップをさらに含む、請求項１３に記載の方法。
【請求項２４】
ステップ（ｂ）は、前記データリンク層から、第二のネットワーク上のシステムに送信される予定の、前記プライベートネットワーク上の第二のシステムから送信される第二の複数のユーザーデータグラムプロトコル（ＵＤＰ）パケットの中のユーザーデータグラムプロトコル（ＵＤＰ）パケットを傍受するステップをさらに含む、請求項１３に記載の方法。
【請求項２５】
パケットをゲートウェイからエンドポイントにルーティングするための方法であって、該方法は、
（ａ）パブリックＩＰアドレスを有するエンドポイントにプライベートインターネットプロトコル（ＩＰ）アドレスを関連付けるステップと、
（ｂ）該エンドポイントの該プライベートＩＰアドレスにアドレス指定されたパケットをキャプチャするステップと、
（ｃ）該パケットにポリシーを適用するステップと、
（ｄ）該パケットへの該ポリシーの適用に応答して、該パケットを該エンドポイントの該パブリックＩＰアドレスに送信するステップと
を含む、方法。
【請求項２６】
ステップ（ｂ）は、前記ゲートウェイ上のドライバにより、前記エンドポイントの前記プライベートＩＰアドレスにアドレス指定されたパケットをキャプチャするステップをさらに含む、請求項２５に記載の方法。
【請求項２７】
前記ドライバは、ネットワークドライバインターフェイス仕様（ＮＤＩＳ）に適合する、請求項２６に記載の方法。
【請求項２８】
ステップ（ｂ）は、前記エンドポイントにアドレス指定されたすべてのイーサネット（登録商標）トラフィックをキャプチャするステップをさらに含む、請求項２５に記載の方法。
【請求項２９】
ステップ（ｂ）は、前記パケットを前記エンドポイントにルーティングする前に、前記エンドポイントの前記プライベートＩＰアドレスにアドレス指定されたパケットをキャプチャするステップをさらに含む、請求項２５に記載の方法。
【請求項３０】
ステップ（ｃ）は、前記パケットを前記エンドポイントにルーティングする前に、前記パケットにポリシーを適用するステップをさらに含む、請求項２５に記載の方法。
【請求項３１】
ステップ（ｃ）は、前記パケットにアクセス制御リストを適用するステップをさらに含む、請求項２５に記載の方法。
【請求項３２】
ステップ（ｄ）は、前記エンドポイントの前記プライベートＩＰアドレスを前記エンドポイントの前記パブリックＩＰアドレスに変換するネットワークアドレス変換を実行するステップをさらに含む、請求項２５に記載の方法。
【請求項３３】
ゲートウェイからエンドポイントまでパケットをルーティングするための装置であって、該装置は、
パブリックＩＰアドレスを有するエンドポイントにプライベートＩＰアドレスを関連付けるアドレス指定要素と、
該アドレス指定要素と通信し、該エンドポイントの該プライベートＩＰアドレスに送信される予定のパケットを傍受する受信機と、
該受信機と通信し、該パケットに適用されるポリシーに応答して、該パケットを受信および該パケットを該エンドポイントに送信するポリシーエンジンと、
該受信機、該ポリシーエンジン、および該アドレス指定要素と通信し、該パケットに対しネットワークアドレス変換を実行するとともに、該パケットを該エンドポイントに送信する送信機と
を備える、装置。
【請求項３４】
前記受信機はドライバを備える、請求項３３に記載の装置。
【請求項３５】
前記受信機は、ネットワークドライバインターフェイス仕様（ＮＤＩＳ）に適合するドライバを備える、請求項３３に記載の装置。
【請求項３６】
前記受信機は、前記エンドポイントにアドレス指定されたイーサネット（登録商標）トラフィックを傍受する、請求項３３に記載の装置。
【請求項３７】
前記受信機は、前記傍受したパケットを前記ポリシーエンジンに転送する、請求項３３に記載の装置。
【請求項３８】
前記受信機はプロセスである、請求項３３に記載の装置。
【請求項３９】
前記受信機のプロセスはカーネルモードで実行される、請求項３８に記載の装置。
【請求項４０】
前記ポリシーエンジンはプロセスである、請求項３３に記載の装置。
【請求項４１】
前記ポリシーエンジンのプロセスはユーザーモードで実行される、請求項４０に記載の装置。
【請求項４２】
前記ポリシーエンジンは、前記パケットにアクセス制御リストを適用する、請求項３３に記載の装置。
【請求項４３】
前記送信機は、前記パケットのプライベートインターネットプロトコル（ＩＰ）アドレスを前記エンドポイントに関連付けられたパブリックＩＰアドレスに変換するステップをさらに含む、請求項３３に記載の装置。
【請求項４４】
前記送信機は、前記パケットをセキュアソケットレイヤ（ＳＳＬ）トンネルを介してエンドポイントに送信する、請求項３３に記載の装置。
【請求項４５】
前記送信機はプロセスである、請求項３３に記載の装置。
【請求項４６】
前記送信機のプロセスはカーネルモードで実行される、請求項４５に記載の装置。
【請求項４７】
パケットをゲートウェイからエンドポイントにルーティングするためのシステムであって、
カーネルとアプリケーションスペースを含むゲートウェイと、
該ゲートウェイと通信するデバイスと
を備え、該デバイスは、
パブリックＩＰアドレスを有するエンドポイントにプライベートＩＰアドレスを関連付けるアドレス指定要素と、
該アドレス指定要素と通信し、該エンドポイントの該プライベートＩＰアドレスにアドレス指定されたパケットを傍受する受信機と、
該受信機と通信し、該パケットに適用されるポリシーに応答して、該パケットを受信および該パケットを送信するポリシーエンジンと、
該受信機、該ポリシーエンジン、および該アドレス指定要素と通信し、該パケットに対しネットワークアドレス変換を実行するとともに、該パケットを該エンドポイントに送信する送信機と
を備える、システム。
【請求項４８】
前記受信機はドライバを備える、請求項４７に記載のシステム。
【請求項４９】
前記受信機は、ネットワークドライバインターフェイス仕様（ＮＤＩＳ）に適合するドライバを備える、請求項４７に記載のシステム。
【請求項５０】
前記受信機は、前記エンドポイントにアドレス指定されたイーサネット（登録商標）トラフィックを傍受する、請求項４７に記載のシステム。
【請求項５１】
前記受信機は、前記傍受したパケットを前記ポリシーエンジンに転送する、請求項４７に記載のシステム。
【請求項５２】
前記受信機はプロセスである、請求項４７に記載のシステム。
【請求項５３】
前記受信機のプロセスはカーネルモードで実行される、請求項５２に記載のシステム。
【請求項５４】
前記ポリシーエンジンはプロセスである、請求項４７に記載のシステム。
【請求項５５】
前記ポリシーエンジンのプロセスはユーザーモードで実行される、請求項５４に記載のシステム。
【請求項５６】
前記ポリシーエンジンは、前記パケットにアクセス制御リストを適用する、請求項４７に記載のシステム。
【請求項５７】
前記送信機は、前記パケットのプライベートインターネットプロトコル（ＩＰ）アドレスを前記エンドポイントに関連付けられたパブリックＩＰアドレスに変換するステップをさらに含む、請求項４７に記載のシステム。
【請求項５８】
前記送信機は、前記パケットをセキュアソケットレイヤ（ＳＳＬ）トンネルを介してエンドポイントに送信する、請求項４７に記載のシステム。
【請求項５９】
前記送信機はプロセスである、請求項４７に記載のシステム。
【請求項６０】
前記送信機のプロセスはカーネルモードで実行される、請求項４７に記載のシステム。
【請求項６１】
パケットをエンドポイントからゲートウェイにルーティングするための方法であって、該方法は、
（ａ）フィルタリングテーブルを受信するステップと、
（ｂ）外部送信パケットを傍受するステップと、
（ｃ）該フィルタリングテーブルに応答して、該外部送信パケットをクライアントアプリケーションに送信するステップと、
（ｄ）該クライアントアプリケーションにより、該外部送信パケットに適用されるポリシーに応答して、該外部送信パケットをゲートウェイへ送信するステップと
を備える、方法。
【請求項６２】
ステップ（ａ）は、前記フィルタリングテーブルをクライアントアプリケーションから受信するステップをさらに含む、請求項６１に記載の方法。
【請求項６３】
ステップ（ｃ）は、前記外部送信パケットに関する情報を前記クライアントアプリケーションに送信するステップをさらに含む、請求項６１に記載の方法。
【請求項６４】
ステップ（ｃ）は、ルーティングテーブルに応答して、前記外部送信パケットを前記クライアントアプリケーションに送信するステップをさらに含む、請求項６１に記載の方法。
【請求項６５】
ステップ（ｃ）は、前記外部送信パケットを前記クライアントアプリケーションにより監視されるポートへ送信するステップをさらに含む、請求項６１に記載の方法。
【請求項６６】
ステップ（ｄ）は、前記クライアントアプリケーションにより、前記ゲートウェイへの前記エンドポイントの認証をさらに含む、請求項６１に記載の方法。
【請求項６７】
ステップ（ｄ）は、前記クライアントアプリケーションにより、前記外部送信パケットを暗号化するステップをさらに含む、請求項６１に記載の方法。
【請求項６８】
ステップ（ｄ）は、前記クライアントアプリケーションにより、前記ゲートウェイへのセキュアソケットレイヤ（ＳＳＬ）トンネルを確立するステップをさらに含む、請求項６１に記載の方法。
【請求項６９】
暗号化された外部送信パケットを、ゲートウェイへのＳＳＬトンネルを経由して、前記ゲートウェイに送信するステップをさらに含む、請求項６１に記載の方法。
【請求項７０】
パケットをゲートウェイにルーティングするための装置であって、該装置は、
フィルタテーブルに応答して、外部送信パケットを傍受し、該外部送信パケットを送信するフィルタと、
該フィルタと通信し、該外部送信パケットを受信するとともに、該外部送信パケットへのポリシーの適用に応答して、該外部送信パケットをゲートウェイに送信することを決定するクライアントアプリケーションと
を備える、装置。
【請求項７１】
前記フィルタはドライバを備える、請求項７０に記載の装置。
【請求項７２】
前記ドライバは、ネットワークドライバインターフェイス仕様（ＮＤＩＳ）に適合する、請求項７１に記載の装置。
【請求項７３】
前記フィルタは、ルーティングテーブルに応答して、前記外部送信パケットを前記クライアントアプリケーションに送信する、請求項７０に記載の装置。
【請求項７４】
前記フィルタおよび前記クライアントアプリケーションはコンピュータシステム上にある、請求項７０に記載の装置。
【請求項７５】
前記フィルタはプロセスである、請求項７０に記載の装置。
【請求項７６】
前記フィルタのプロセスはカーネルモードで実行される、請求項７５に記載の装置。
【請求項７７】
前記クライアントアプリケーションはプロセスである、請求項７０に記載の装置。
【請求項７８】
前記クライアントアプリケーションのプロセスはユーザーモードで実行される、請求項７７に記載の装置。
【請求項７９】
パケットをゲートウェイにルーティングするためのシステムであって、該システムは、
カーネルとアプリケーションスペースを備えるコンピュータシステムであって、少なくとも１つの外部送信パケットを受信する、コンピュータシステムと、
該コンピュータシステムと通信するデバイスと
を備え、該デバイスは、
フィルタテーブルに応答して、外部送信パケットを傍受し、該外部送信パケットを送信するフィルタと、
該フィルタと通信し、該外部送信パケットを受信するとともに、該外部送信パケットにポリシーを適用するステップに応答して、該外部送信パケットをゲートウェイに送信することを決定するクライアントアプリケーションと
を備える、システム。
【請求項８０】
前記フィルタはドライバを備える、請求項７９に記載のシステム。
【請求項８１】
前記ドライバは、ネットワークドライバインターフェイス仕様（ＮＤＩＳ）に適合する、請求項８０に記載のシステム。
【請求項８２】
前記フィルタは、ルーティングテーブルに応答して、前記外部送信パケットを前記クライアントアプリケーションに送信する、請求項７９に記載のシステム。
【請求項８３】
前記フィルタおよび前記クライアントアプリケーションはコンピュータシステム上にある請求項７９に記載のシステム。
【請求項８４】
前記フィルタはプロセスである、請求項７９に記載のシステム。
【請求項８５】
前記フィルタのプロセスはカーネルモードで実行される、請求項８４に記載のシステム。
【請求項８６】
前記クライアントアプリケーションはプロセスである、請求項７９に記載のシステム。
【請求項８７】
前記クライアントアプリケーションのプロセスはユーザーモードで実行される、請求項８６に記載のシステム。
【請求項８８】
パケットを周辺機器から仮想プライベートネットワーク（ＶＰＮ）ゲートウェイにルーティングするための方法であって、該方法は、
（ａ）周辺機器により、ルーティングテーブルに変更を実施するステップと、
（ｂ）該周辺機器により、外部送信パケットを受信するステップと、
（ｃ）該周辺機器により、外部送信パケットに関する情報を周辺機器にあるＶＰＮクライアントアプリケーションに送信するステップと、
（ｄ）該周辺機器により、外部送信パケット上のアドレス情報を書き換えるステップと、
（ｅ）該周辺機器により、該変更した外部送信パケットを前記ＶＰＮクライアントアプリケーションへ送信するステップと
を含む、方法。
【請求項８９】
ステップ（ａ）は、前記ルーティングテーブルに行う複数の変更をＶＰＮゲートウェイから検索するステップをさらに含む、請求項８８に記載の方法。
【請求項９０】
ステップ（ａ）は、前記ＶＰＮゲートウェイに対する前記周辺機器の認証をさらに含む、請求項８９に記載の方法。
【請求項９１】
前記ＶＰＮクライアントアプリケーションにより、前記変更された外部送信パケットを暗号化するステップをさらに含む、請求項８８に記載の方法。
【請求項９２】
ステップ（ａ）は、前記周辺機器により、外部送信パケットを前記周辺機器に送信するように前記ルーティングテーブルに命令するステップをさらに含む、請求項８８に記載の方法。
【請求項９３】
ステップ（ａ）は、コンピュータシステムにより、ルーティングテーブルの変更に応答して、外部送信パケットを前記周辺機器に送信するステップをさらに含む、請求項８８に記載の方法。
【請求項９４】
ステップ（ａ）は、前記周辺機器上に、前記ルーティングテーブルに行われる複数の変更を格納するステップをさらに含む、請求項８８に記載の方法。
【請求項９５】
ステップ（ｃ）は、前記周辺機器により、前記ＶＰＮクライアントアプリケーションへの固有のソースポートを含む情報を送信するステップをさらに含む、請求項８８に記載の方法。
【請求項９６】
ステップ（ｄ）は、前記周辺機器により、前記外部送信パケット上の送信先アドレスを、前記ＶＰＮクライアントアプリケーションと関連付けられた送信先アドレスと送信先ポートで書き換えるステップをさらに含む、請求項８８に記載の方法。
【請求項９７】
ステップ（ｄ）は、前記周辺機器により、前記外部送信パケット上のソースポートを、固有のソースポートで書き換えるステップをさらに含む、請求項８８に記載の方法。
【請求項９８】
ステップ（ｅ）は、前記周辺機器により、前記変更された外部送信パケットを前記ＶＰＮクライアントアプリケーションにより監視されるポートに送信するステップをさらに含む、請求項８８に記載の方法。
【請求項９９】
前記周辺機器により、ＶＰＮゲートウェイへのＳＳＬトンネルを確立するステップをさらに含む、請求項８８に記載の方法。
【請求項１００】
前記ＶＰＮクライアントアプリケーションにより、前記外部送信パケットに関する受信した前記情報に応答して、暗号化された外部送信パケットを送信するステップをさらに含む、請求項８８に記載の方法。
【請求項１０１】
前記ＶＰＮクライアントアプリケーションにより、前記周辺機器から受信した前記外部送信パケットに関連付けられた送信先アドレスに応答して、ＶＰＮゲートウェイへのＳＳＬトンネルを確立するステップをさらに含む、請求項８８に記載の方法。
【請求項１０２】
前記暗号化された外部送信パケットを、ＳＳＬトンネルを介してＶＰＮゲートウェイへ送信するステップをさらに含む、請求項８８に記載の方法。
【請求項１０３】
パケットをＶＰＮゲートウェイにルーティングするための装置であって、該装置は、
コンピュータシステム上に格納されたルーティングテーブルに変更を実施するルーティング要素と、
該コンピュータシステムから外部送信パケットを受信する受信機と、
該受信機と通信して、該外部送信パケットに関する情報をＶＰＮクライアントアプリケーションへ送信する送信機と、
該受信機と該送信機と通信するパケット変換機であって、該外部送信パケットのアドレス情報を書き換えるパケット変換機と
を備える、装置。
【請求項１０４】
前記装置上にあり、前記コンピュータシステム上で稼動するＶＰＮクライアントアプリケーションをさらに含む、請求項１０３に記載の装置。
【請求項１０５】
前記送信機は、前記書き換えられた外部送信パケットを前記ＶＰＮクライアントアプリケーションに送信することをさらに含む、請求項１０３に記載の装置。
【請求項１０６】
前記パケット変換機は、マッピングテーブルを生成することをさらに含み、該マッピングテーブルは、前記外部送信パケットの情報を前記変更された外部送信パケットの情報に関連付ける、請求項１０３に記載の装置。
【請求項１０７】
前記パケット変換機は、前記外部送信パケット上のソースポートを置換するための固有のソースポートを生成するステップをさらに含む、請求項１０３に記載の装置。
【請求項１０８】
前記パケット変換機は、前記外部送信パケット上の送信先アドレスと送信先ポートを、前記ＶＰＮクライアントアプリケーションに関連付けられた送信先アドレスと送信先ポートで置換するステップをさらに備える、請求項１０３に記載の装置。
【請求項１０９】
パケットをＶＰＮゲートウェイにルーティングするためのシステムであって、
少なくとも１つの外部送信パケットを受信し、ルーティングテーブルを格納するコンピュータシステムと、
該コンピュータシステムと通信する周辺機器と
を備え、該周辺機器は、
該ルーティングテーブルに変更を実施するルーティング要素と、
該コンピュータシステムから、少なくとも１つの外部送信パケットを受信する受信機と、
該少なくとも１つの外部送信パケットに関する情報をＶＰＮクライアントアプリケーションに送信する送信機と、
該受信機および該送信機と通信するパケット変換機であって、該外部送信パケット上のアドレス情報を、該ＶＰＮクライアントアプリケーションに関連付けられた送信先アドレスと送信先ポートで置換するパケット変換機と
を備える、システム。
【請求項１１０】
前記ＶＰＮクライアントアプリケーションは前記周辺機器上にある、請求項１０９に記載のシステム。
【請求項１１１】
前記ＶＰＮクライアントアプリケーションは前記コンピュータシステム上で稼働する、請求項１０９に記載のシステム。
【請求項１１２】
前記周辺装置は、ＵＳＢキーストレージデバイスを備える、請求項１０９に記載のシステム。
【請求項１１３】
前記周辺機器は、レポート実行要素をさらに備え、該レポート実行要素は、前記コンピュータシステムの周辺機器を大容量ストレージデバイスとして特定する、請求項１０９に記載のシステム。
【請求項１１４】
前記周辺機器は、レポート実行要素をさらに備え、該レポート実行要素は、前記コンピュータシステムの周辺機器をネットワークデバイスとして特定する、請求項１０９に記載のシステム。
【請求項１１５】
前記コンピュータシステムは、デバイスドライバをさらに備え、該デバイスドライバは、前記周辺機器との通信を可能にする、請求項１０９に記載のシステム。
【請求項１１６】
前記デバイスドライバは、ＵＳＢ装置のためのリモートネットワークドライバインターフェイス仕様のドライバを備える、請求項１０９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願）
本発明は、２００４年７月２３日に出願され、「Ａｄ  Ｈｏｃ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｎｅｔｗｏｒｋｓ  Ａｎｄ  Ｒｅｍｏｔｅ  Ａｃｃｅｓｓ  Ａｒｃｈｉｔｅｃｔｕｒｅ」と題された、米国仮特許出願第６０／５９０，８３７号、および、２００４年８月１３日に出願され、「Ｓｙｓｔｅｍ  ａｎｄ  Ｍｅｔｈｏｄ  Ｆｏｒ  Ａｓｓｕｒｉｎｇ  Ｒｅｄｕｎｄａｎｃｙ  Ｉｎ  Ｒｅｍｏｔｅ  Ａｃｃｅｓｓ  Ｓｏｌｕｔｉｏｎｓ」と題された、米国仮特許出願６０／６０１，４３１号、および、２００４年９月３日に出願され、「Ｖｉｒｔｕａｌ  Ｎｅｔｗｏｒｋ  Ｂｒｉｄｇｉｎｇ」と題された、米国仮特許出願第６０／６０７，４２０号、および、２００４年１２月７日に出願され、［Ｓｅｃｕｒｉｎｇ  Ａｃｃｅｓｓ  ｔｏ  Ｐｒｉｖａｔｅ  Ｎｅｔｗｏｒｋｓ  ｆｒｏｍ  Ｅｎｄ  Ｐｏｉｎｔｓ  Ｂａｓｅｄ  ｏｎ  Ｅｎｃｒｙｐｔｉｏｎ  ａｎｄ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｔｅｃｈｎｏｌｏｇｙ  Ｂｕｉｌｔ  ｉｎｔｏ  ｔｈｅ  ＵＳＢ  ｏｒ  Ｏｔｈｅｒ  Ｐｅｒｉｐｈｅｒａｌ  Ｄｅｖｉｃｅｓ  Ｗｉｔｈｏｕｔ  ｔｈｅ  Ｎｅｅｄ  ｆｏｒ  Ａｄｄｉｔｉｏｎａｌ  Ｓｏｆｔｗａｒｅ  ｏｎ  ｔｈｅ  Ｈｏｓｔ  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ」と題された、米国仮特許出願第６０／６３４，３７９号の優先権を主張し、それらの全体は、参照することにより、本明細書に援用される。
【０００２】
（技術分野）
本発明は、遠隔地からプライベートネットワークに安全にアクセスするための方法およびシステムに関連する。
【背景技術】
【０００３】
組織は、一般的に、従業員および取引先組織にプライベートネットワークへのリモートアクセスを提供するという課題を抱えている。移動中の社員または遠隔地の取引先とリモートアクセスのリンクを確立することにより、企業はコストを削減しながら生産性を高めることができる。さらに、このようなリンクは、企業間（Ｂ２Ｂ）取引を促進し、発展させることができる。
【０００４】
しかしながら、別のプライベートまたはパブリックネットワークからリモートで情報にアクセスしようとする従業員や取引先は、通常は、組織のネットワークへのアクセスを防ぐその他のセキュリティおよびファイアウォール機器の後ろに存在する可能性がある。この問題に対応する特別な解決策がないと、従業員および取引先の組織は、例えば、組織のネットワーク上のネットワークアドレスを取得することにより物理的に接続するなどのように、組織のプライベートネットワークに物理的に接続しなければ、情報にアクセスできない。
【０００５】
組織は、信頼する人や組織にリモートアクセスを提供するために、この課題を解決したいと考えており、このようなユーザーに組織のネットワークへのアクセスを許可する前に、ユーザーを認証するメカニズムを求めている。さらに、情報は、組織のプライベートでセキュアかつトラストされたネットワークから、パブリックまたはサードパーティのネットワークに送信されるので、このようなアクセスを提供する組織は、重要な情報が他人に公開されるのを防ぐために、この情報を暗号化することから利益を得る。
【０００６】
この課題を解決する１つのアプローチは、ＩＰＳｅｃ、ＰＰＴＰまたはＬ２ＴＰネットワーク（一般的に「ＩＰＳｅｃ  ＶＰＮ」と呼ばれる）のようなＶＰＮ（仮想プライベートネットワーク）を作成することである。ＩＰＳｅｃ  ＶＰＮは、ネットワークからネットワークへの通信を提供するので、リモートユーザーには「社内にいるような」作業体験が実現され、さらに、プロトコルに依存しない。つまり、トランスポートレベルではなく、ネットワークレベルで機能する。これらのアーキテクチャは、典型的には、リモートエンドポイントとＶＰＮゲートウェイの間にポイントツーポイントのネットワーク層トンネルを作成することにより、レイヤー２のネットワークアクセスを提供する。この層でアクセスを提供することにより、エンドポイントまたはゲートウェイから発生するネットワークトラフィックをルーティングするためのサポートが実現される。エンドポイントは、内部のネットワークアドレス表現を受信して、ＶＰＮゲートウェイに接続すると、エンドポイントは仮想内部リソースとして処理される。
【０００７】
残念ながら、ＶＰＮは、典型的にはファイアウォールを通しては働かない。従って、移動中のユーザーは、顧客または取引先ではファイアウォールの後ろにいるので、自分の企業リソースに接続できない。さらに、ＩＰＳｅｃ  ＶＰＮは、主に、複数のマシン上でＶＰＮクライアントのインストールおよびアップデートによる、集中的なサポートと構成を必要とするため、配備、保守および管理が困難である。典型的には、クライアントコンピュータ上にＶＰＮクライアントアプリケーションを配備する場合、システム管理者は、各クライアントコンピュータ上にソフトウェアインターフェイスをインストールする。これらのソフトウェアインターフェイスのインストールは、通常、クライアントコンピュータ上のシステム管理権限を必要とする上に、クライアントコンピュータへの物理的アクセスを必要とすることがある。このようなインストールは、情報技術のシステム管理者にとって、管理および配備が面倒な場合がある。さらに、ＩＰＳｅｃ  ＶＰＮに関連する短所は、セキュアなクライアントがプライベートネットワーク上のルート可能なＩＰアドレスを取得するので、アクセスしたネットワークにクライアント側のＩＰアドレスがわかってしまうことであり、これにより、ＩＰＳｅｃ  ＶＰＮは、コンピュータウィルスが広がる主な通り道となってしまう。
【０００８】
さらに、これらのソリューションの典型的な実装により、ユーザーには、最大の機能を備えたエンドポイントが提供されるが、プライベートネットワークとゲートウェイの後ろにある保護されたリソースへのセキュリティが犠牲になる。従来の方法の実装によるセキュリティリスクの１つは、ＶＰＮゲートウェイの後ろにあるプライベートネットワークへの接続を反映するようにエンドポイント上のルーティングテーブルを変更する場合の典型的な要件により発生する。ルーティングテーブルの変更により、エンドポイントには、コンピュータワーム−ウィルスのハイブリッド型のトロイの馬や、保護されたリソースへの悪質で未許可のアクセスを促進するように変更される可能性がある、プライベートネットワークに関する情報が提供される。
【０００９】
ＶＰＮゲートウェイの従来の実装により、低レベルのカーネル層での機能が提供される。しかしながら、カーネル層は、典型的には、どのアプリケーションがネットワークパケットを生成したかに関する情報にアクセスすることや、特定されたアプリケーションに基づいてセキュリティポリシーをパケットに適用することによってセキュリティを強化する能力に欠ける。さらに、従来のＶＰＮエンドポイントは、セキュリティリスクを招くパケットを特定するアンセキュアなカーネルルーティングプロセスに依存しており、悪質なデータや増大するネットワークレベルの潜伏を特定する二次的または三次的なパケット検査に依存する可能性がある。
【００１０】
従来のＶＰＮゲートウェイは、リモートエンドポイント上に仮想ネットワークインターフェイスを作成する。このインターフェイスは、論理的なハードウェアインターフェイスであり、ネットワークトラフィックの運搬を可能にするために、エンドポイント上のネットワークのカーネルスペース内にネットワークのルーティングテーブルエントリを作成するために使用される場合がある。従来の実装では、ネットワークのルーティングテーブルエントリやプライベートネットワークに関してエンドポイントに提供される情報は、プライベートネットワークへのセキュリティリスクを増大させる。さらに、検査のためにパケットをルーティング中、パケットは、第三者のソフトウェアまたは悪質なユーザーにより改ざんまたは誤使用されやすい。エンドポイントのルーティングテーブルを変更せずに、または、仮想ネットワークを作成せずに、ゲートウェイとエンドポイント間で信頼される双方向の通信を可能にするＶＰＮソリューションを提供する方法が望まれる。
【００１１】
ＶＰＮゲートウェイを使用して、クライアントコンピュータからプライベートネットワークにパケットをルーティングする従来の方法には、パケット傍受および再ルーティングの方法が含まれる。一部の方法では、システム管理者は、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステムに提供されているネットワークドライバインターフェイス仕様（ＮＤＩＳ）ネットワークアブストラクション層のような、ネットワークアブストラクション層を使用する。システム管理者は、ルーティングインターフェイスをＷｉｎｄｏｗｓ（登録商標）またはＮＤＩＳ中間ドライバに公開する仮想アダプタを作成するためにＮＤＩＳを実装する場合がある。これらの仮想アダプタ（ＮＤＩＳシムとも呼ばれる）は、ルーティングインターフェイスから送信されたパケットトラフィックをキャプチャする。あるいは、システム管理者は、パケットを傍受するダイヤラータイプのインターフェイスを実装する場合がある。ダイヤラータイプのインターフェイスは、仮想ポイントツーポイントネットワークデバイスや仮想イーサネット（登録商標）ネットワークデバイスを有効にするＴＵＮ／ＴＡＰインターフェイスのようなインターフェイスを含むことがある。
【００１２】
これらのソフトウェアインターフェイスは、典型的に、物理層の上位にある論理ソフトウェア層であり、パケットが物理インターフェイスから送信されると、オペレーティングシステムネットワークスタックからパケットを傍受する。ソフトウェアインターフェイスは、傍受したパケットを暗号化して、パケットを解読し、本来の送信先へ再ルーティングする役目を持つ仮想プライベートネットワークゲートウェイに送信する場合がある。
【００１３】
典型的には、クライアントコンピュータ上にＶＰＮクライアントアプリケーションを配備する場合、システム管理者は、各クライアントコンピュータ上にソフトウェアインターフェイスをインストールする。これらのソフトウェアインターフェイスのインストールは、典型的には、クライアントコンピュータ上でシステム管理権限を必要とする上に、クライアントコンピュータへの物理的アクセスを必要とすることがある。このようなインストールは、情報技術のシステム管理者にとって、管理および配備が面倒なことがある。プライベートネットワークにセキュアなアクセスを提供し、ＶＰＮゲートウェイに送信する前にパケットの認証を有効にするとともに、容易なインストールを提供する柔軟な方法が望まれる。
【００１４】
リモートの社員や取引先にセキュアなアクセスを提供する一方で、ＩＰＳｅｃ  ＶＰＮに付随する問題を解決しようとして開発された、この問題を解決する別のアプローチが、ＳＳＬ  ＶＰＮである。ＳＳＬ  ＶＰＮは、主に、ＨＴＴＰＳ接続によるＷｅｂアプリケーションで機能する。ＳＳＬ  ＶＰＮは、すべてのＷｅｂナビゲーションパスがクライアントコンピュータからルート可能であることを確認するために、実行時にウェブページを解析する。ＳＳＬ  ＶＰＮは、企業または組織のネットワーク内部のアプリケーションにアクセスするためにクライアントを必要としない方法を提供するので、ＩＰＳｅｃＶＰＮよりも、配備が容易でサポート問題が少ない。さらに、ＳＳＬ  ＶＰＮは、クライアント側のＩＰアドレスをアクセスしたネットワークに公開しない。
【００１５】
しかしながら、カスタムコネクタのないクライアントサーバーアプリケーションサポートがないこと、Ｊａｖａ（登録商標）アプレットやＡｃｔｉｖｅＸのようなバイナリオブジェクトテクノロジーを使用するビジネスアプリケーションとは機能しないこと、また、ソフトフォンのようなピアツーピアアプリケーションとは機能しないことなど、ＳＳＬ  ＶＰＮの使用に付随する短所は多い。
【発明の開示】
【発明が解決しようとする課題】
【００１６】
両方のタイプのソリューションを配備し、異なる環境においてそれぞれのタイプを使用しようとしても、組み合わされたソリューションには、それぞれのテクノロジーから継承された問題が残ることから、成功が限定される。必要とされるのは、ＩＰＳｅｃ  ＶＰＮとＳＳＬ  ＶＰＮ両方の欠点ではなく、利点を組み合わせたソリューションである。
【課題を解決するための手段】
【００１７】
（本発明の要約）
本発明は、ＩＰＳｅｃＶＰＮ（ネットワーク層のアクセス制御）とＳＳＬ  ＶＰＮ（アプリケーション層のアクセス制御）の利点を組み合わせて、ＩＴセキュリティ管理者のサポート諸経費およびセキュリティリスクを顕著に削減する一方で、エンドユーザー体験を著しく向上させる。本発明は、組織のネットワークおよびアプリケーションへのリモートネットワークレベルのアクセスがＳＳＬ／ＴＬＳからセキュアに提供されるので、（１）組織のネットワークにリモートからアクセスしている従業員、（２）Ｂ２Ｂアクセスおよびトランザクション、および（３）ワイヤレスネットワークのような制限されたＬＡＮからのイントラネットアクセスに適当である。また、本発明により、企業や組織は、２つの別のＶＰＮインフラストラクチャを維持する重荷から開放される。
【００１８】
本発明のゲートウェイデバイスは、認証、暗号セッションの終了、許可ベースのアクセス制御、およびデータトラフィックリレーを実行する。ある側面では、本発明は、ユーザーがシステムに認証された後にアクセス可能になるセキュアなウェブＵＲＬを公開する。セッションあたりのリモートプロセスはユーザーのコンピュータサービスへ送信される。リモートプロセスは、セッションが終了するまで、ユーザーのコンピュータ装置のメモリに保存される。リモートプロセスは、起動し、軽量のパケットコンセントレータとして機能する。つまり、リモートプロセスは、リバースネットワークアドレス変換（ＮＡＴ）テーブルを使用して、アプリケーション接続をマッピングする。セッションの間、リモートプロセスは、ネットワークレイヤー２（イーサネット（登録商標）とＩＰの間）で組織のネットワークに送信されるすべてのネットワークトラフィックを暗号化しながら機能して、ユーザー信用証明とともに、ＨＴＴＰＳセッションからゲートウェイへパケットを転送する。従って、全てのデータトラフィックは、ポートに関係なく暗号化される。つまり、潜在的に、暗号化されたデータを転送するために、ポート４４３だけでなく、任意のポートが使用されることがある。また、ゲートウェイは、パフォーマンスのロスを最小限に抑えながら、音声（ＲＴＰ／ＳＩＰ）のようなリアルタイムトラフィックも処理できる。
【００１９】
ゲートウェイは、外部ネットワークと内部ネットワーク両方のアクセスを持つ組織のＤＭＺに存在することがある。あるいは、ゲートウェイは、ワイヤ／ワイヤレスとデータ／音声ネットワーク間のアクセスの制御とセキュリティを目的として、組織のローカルエリアネットワークを内部でパーティションできる。
【００２０】
ある側面では、本発明は、受信機、フィルタ、送信機など、パケットをルーティングするための装置に関連する。受信機は、データリンク層から、プライベートネットワーク上の第一のシステムに送信される予定の第一の複数のパケットの中のパケットを傍受する。フィルタは、データリンク層から、第二のネットワーク上のシステムに送信される予定の、プライベートネットワーク上の第二のシステムから伝送される第二の複数のパケットの中のパケットを傍受する。送信機は、受信機とフィルタと通信し、少なくとも１つの傍受したパケットに対しアドレス変換を実行するとともに、少なくとも１つの傍受したパケットを送信先へ送信する。
【００２１】
ある実施例では、装置は、パブリックＩＰアドレスを有するシステムにプライベートＩＰアドレスを関連付けるアドレス指定要素を含む。別の実施例では、装置は、フィルタと受信機と通信し、傍受したパケットにポリシーを適用するポリシーエンジンを含む。また別の実施例では、送信機は少なくとも１つの傍受したパケットを、通信トンネルを介して前記第二のネットワーク上の前記システムに送信する。さらに別の実施例では、送信機は、少なくとも１つの傍受したパケットに対しリバースネットワークアドレス変換を実行する。一部の実施例では、送信機は、リモートプロセスを第二のネットワーク上のシステムへ転送する。
【００２２】
別の側面では、本発明は、データリンク層から、プライベートネットワーク上の第一のシステムに送信される予定の第一の複数のパケットの中のパケットを傍受するステップを含む、パケットをルーティングするための方法に関係する。プライベートネットワーク上の第二のシステムから送信されて、第二のネットワーク上のシステムに送信される予定の第二の複数のパケットの中のパケットは、データリンク層から傍受される。ネットワークアドレス変換（ＮＡＴ）が、少なくとも１つの傍受したパケットに対し実行される。少なくとも１つの傍受したパケットは送信先へ送信される。
【００２３】
ある実施例では、方法は、プライベートＩＰアドレスを、パブリックＩＰアドレスを有するシステムに関連付けるステップを含む。別の実施例では、方法は、傍受したパケットにポリシーを適用するステップを含む。また別の実施例では、方法は少なくとも１つの傍受したパケットを、通信トンネルを介して第二のネットワーク上のシステムに送信するステップを含む。さらに別の実施例では、方法は、少なくとも１つの傍受したパケットに対しリバースネットワークアドレス変換を実行するステップを含む。一部の実施例では、方法は、リモートプロセスを第二のネットワーク上のシステムへ転送するステップを含む。
【００２４】
また別の側面では、本発明は、プライベートインターネットプロトコル（ＩＰ）アドレスを、パブリックＩＰアドレスを有するエンドポイントに関連付けるステップを含む、ゲートウェイからエンドポイントへパケットをルーティングするための方法に関連する。エンドポイントのプライベートＩＰアドレスにアドレス指定されたパケットがキャプチャされる。パケットにポリシーが適用される。パケットは、パケットへのポリシー適用に応答して、エンドポイントのパブリックＩＰアドレスに転送される。
【００２５】
ある実施例では、ゲートウェイ上のドライバが、エンドポイントのプライベートＩＰアドレスにアドレス指定されたパケットをキャプチャする。別の実施例では、ドライバは、ネットワークドライバインターフェイス仕様（ＮＤＩＳ）に準拠する。また別の実施例では、パケットをエンドポイントにルーティングする前に、パケットにポリシーが適用される。さらに別の実施例では、ネットワークアドレス変換は、エンドポイントのプライベートＩＰアドレスをエンドポイントのパブリックＩＰアドレスに変換するために実行される。
【００２６】
別の側面では、本発明は、パケットをゲートウェイからエンドポイントにルーティングするための装置に関連する。装置は、アドレス指定要素、受信機、ポリシーエンジンおよび送信機を含む。アドレス指定要素は、プライベートＩＰアドレスを、パブリックＩＰアドレスを有するエンドポイントに関連付ける。受信機は、アドレス指定要素と通信し、エンドポイントのプライベートＩＰアドレスに送信されるパケットを傍受する。ポリシーエンジンは、受信機と通信し、パケットに適用されるポリシーに応答して、パケットを受信およびパケットをエンドポイントに送信する。送信機は、受信機、ポリシーエンジンおよびアドレス指定要素と通信し、パケットに対しネットワークアドレス変換を実行するとともに、パケットをエンドポイントに送信する。
【００２７】
ある実施例では、受信機は、ＮＤＩＳに準拠するドライバを備える。別の実施例では、受信機は、カーネルモードで稼働するプロセスである。まだ別の実施例では、受信機は、傍受したパケットをポリシーエンジンへ転送する。ある実施例では、ポリシーエンジンはユーザーモードで稼働する。別の実施例では、ポリシーエンジンは、パケットにアクセス制御を適用する。ある実施例では、送信機は、パケットのプライベートＩＰアドレスをエンドポイントに関連付けられたパブリックＩＰアドレスに変換する。別の実施例では、送信機は、カーネルモードで稼働するプロセスである。
【００２８】
別の側面では、本発明は、ゲートウェイや装置など、パケットをゲートウェイからエンドポイントにルーティングするためのシステムに関連する。ゲートウェイは、カーネルとアプリケーションスペースを含む。装置は、ゲートウェイと通信し、アドレス指定要素、受信機、ポリシーエンジンおよび送信機を含む。アドレス指定要素は、プライベートＩＰアドレスを、パブリックＩＰアドレスを有するエンドポイントに関連付ける。受信機は、アドレス指定要素と通信し、エンドポイントのプライベートＩＰアドレスにアドレスが指定されたパケットを傍受する。ポリシーエンジンは、受信機と通信し、パケットに適用されるポリシーに応答して、パケットを受信およびパケットを送信する。送信機は、受信機、ポリシーエンジンおよびアドレス指定要素と通信し、パケットに対しネットワークアドレス変換を実行するとともに、パケットをエンドポイントに送信する。
【００２９】
ある実施例では、受信機は、ＮＤＩＳに準拠するドライバを備える。別の実施例では、受信機は、カーネルモードで実行するプロセスである。また別の実施例では、受信機は、傍受したパケットをポリシーエンジンへ転送する。ある実施例では、ポリシーエンジンはユーザーモードで稼働する。別の実施例では、ポリシーエンジンは、パケットにアクセス制御を適用する。ある実施例では、送信機は、パケットのプライベートＩＰアドレスをエンドポイントに関連付けられたパブリックＩＰアドレスに変換する。別の実施例では、送信機は、カーネルモードで稼働するプロセスである。
【００３０】
さらに別の側面では、本発明は、フィルタリングテーブルを受信するステップを含む、パケットをエンドポイントからゲートウェイにルーティングするための方法に関係する。外部送信パケットが傍受される。外部送信パケットは、フィルタリングテーブルに応答して、クライアントアプリケーションに送信される。クライアントアプリケーションは、外部送信パケットへのポリシーの適用に応答して、外部送信パケットをゲートウェイへ送信する。
【００３１】
ある実施例では、フィルタリングテーブルはクライアントアプリケーションから受信される。別の実施例では、外部送信パケットに関する情報が、クライアントアプリケーションへ送信される。また別の実施例では、クライアントアプリケーションはゲートウェイへのエンドポイントを認証する。さらに別の実施例では、クライアントアプリケーションは、外部送信パケットをゲートウェイに送信する前に、外部送信パケットを暗号化する。
【００３２】
別の側面では、本発明は、パケットをゲートウェイへルーティングするための装置に関連する。装置は、フィルタとクライアントアプリケーションを含む。フィルタは、フィルタテーブルに応答して、外部送信パケットを傍受し、前記外部送信パケットを送信する。クライアントアプリケーションは、フィルタと通信し、外部送信パケットを受信するとともに、外部送信パケットにポリシーを適用するステップに応答して、外部送信パケットをゲートウェイに送信することを決定する。
【００３３】
ある実施例では、フィルタは、ネットワークドライバインターフェイス仕様（ＮＤＩＳ）に準拠するドライバを備える。別の実施例では、フィルタは、コンピュータシステム上においてカーネルモードで稼働するプロセスである。まだ別の実施例では、クライアントアプリケーションは、コンピュータシステム上においてユーザーモードで稼働するプロセスである。
【００３４】
別の側面では、本発明は、コンピュータシステムや装置など、パケットをゲートウェイへルーティングするためのシステムに関連する。コンピュータシステムは、カーネルとアプリケーションスペースを備え、少なくとも１つの外部送信パケットを受信する。装置は、コンピュータシステムと通信し、フィルタとクライアントアプリケーションを含む。フィルタは、フィルタテーブルに応答して、外部送信パケットを傍受して、外部送信パケットを送信する。クライアントアプリケーションは、外部送信パケットにポリシーを適用するステップに応答して、外部送信パケットを受信するとともに、外部送信パケットをゲートウェイに送信することを決定する。
【００３５】
ある実施例では、フィルタは、ＮＤＩＳに準拠するドライバを備える。別の実施例では、フィルタは、コンピュータシステム上においてカーネルモードで稼働するプロセスである。また別の実施例では、クライアントアプリケーションは、コンピュータシステム上においてユーザーモードで稼働するプロセスである。
【００３６】
さらに、本発明は、周辺機器に内蔵された暗号化および認証技術を使用して、プライベートネットワークへのアクセスをセキュアにするための方法およびシステムに関連する。ある実施例では、本発明は、クライアントシステム上のＶＰＮクライアントアプリケーションの稼働を可能にするためにリモートＮＤＩＳ（Ｒ−ＮＤＩＳ）として知られるＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステム拡張を利用する。ユニバーサルシリアルバス（ＵＳＢ）デバイスは、クライアントシステムに対して、大容量のストレージデバイスとＲ−ＮＤＩＳの周辺機器側を実装するネットワークカテゴリＵＳＢデバイスの両方として、特定される場合がある。Ｒ−ＮＤＩＳは、ＵＳＢ周辺機器からＤＨＣＰアドレスを交渉して、クライアントシステムがＩＰパケットをＵＳＢデバイスへ送信し得るように、クライアントシステム上のローカルのルーティングテーブルを変更する。従って、ＵＳＢデバイスは、受信したパケットを、暗号化およびＶＰＮゲートウェイに転送するために、ＶＰＮクライアントアプリケーションに送信する場合がある。このような混合型のＵＳＢデバイスを使用することにより、クライアントシステムにアクセスする必要やクライアントシステム上にソフトウェアをインストールする必要なく、ＶＰＮゲートウェイを越えて、クライアントシステムからプライベートネットワークへ暗号化されたＩＰパケットを安全にルーティングすることが可能になる。
【００３７】
ある側面では、本発明は、パケットを周辺機器から仮想プライベートネットワーク（ＶＰＮ）ゲートウェイへルーティングするための方法に関連する。周辺機器は、ルーティングテーブルに変更を実施する。周辺機器は外部送信パケットを受信する。周辺機器は、外部送信パケットに関する情報をＶＰＮクライアントアプリケーションに送信する。周辺機器は、外部送信パケット上のアドレス情報を書き換える。周辺機器は、変更した外部送信パケットをＶＰＮクライアントアプリケーションに送信する。
【００３８】
ある実施例では、周辺機器は、ルーティングテーブルに実施された変更に応答して、外部送信パケットを受信する。別の実施例では、周辺機器は外部送信パケット上の送信先アドレスと送信先ポートを書き換え、アドレス情報をＶＰＮクライアントアプリケーションに関連付けられた送信先アドレスと送信先ポートに置換する。一部の実施例では、ＶＰＮクライアントアプリケーションは外部送信パケットをＶＰＮゲートウェイへ転送する。これらの実施例の一例では、ＶＰＮクライアントアプリケーションは、周辺機器から受信した外部送信パケットに関する情報に応答して、外部送信パケットを転送する場合がある。ある実施例では、周辺機器は、ユニバーサルシリアルバスストレージデバイスを備える。
【００３９】
別の側面では、本発明は、パケットをＶＰＮゲートウェイへルーティングするための装置に関連する。装置は、ルーティング要素、受信機、送信機およびパケット変換機を備える。ルーティング要素は、ルーティングテーブルに変更を実施する。受信機は、外部送信パケットを受信する。送信機は、外部送信パケットに関する情報をＶＰＮクライアントアプリケーションへ送信する。パケット変換機は、外部送信パケット上のアドレス情報を書き換える。
【００４０】
一部の実施例では、パケット変換機は、外部送信パケット上の送信先アドレスを、ＶＰＮクライアントアプリケーションに関連付けられた送信先アドレスと送信先ポートに置換する。ある実施例では、送信機は、書き換えた外部送信パケットをＶＰＮクライアントアプリケーションへ送信する。別の実施例では、パケット変換機は、外部送信パケットの情報を変更された外部送信パケットの情報に関連付けるマッピングテーブルを生成する。また別の実施例では、ＶＰＮクライアントアプリケーションは外部送信パケットをＶＰＮゲートウェイへ転送する。
【００４１】
さらに別の側面では、本発明は、パケットをＶＰＮゲートウェイへルーティングするためのシステムに関連する。システムはコンピュータシステムと周辺機器を備える。コンピュータシステムは、少なくとも１つの外部送信パケットを受信し、ルーティングテーブルを格納する。周辺機器は、コンピュータシステムと通信し、ルーティング要素、受信機、送信機およびパケット変換機を備える。ルーティング要素は、ルーティングテーブルに変更を実施する。受信機は、コンピュータシステムから少なくとも１つの外部送信パケットを受信する。送信機は、外部送信パケットに関する情報をＶＰＮクライアントアプリケーションへ送信する。パケット変換機は、受信機および送信機と通信し、外部送信パケット上の送信先アドレスを、仮想プライベートネットワークのクライアントアプリケーションに関連付けられた送信先アドレスと送信先ポートに置換する。
【００４２】
ある実施例では、周辺機器は、ユニバーサルシリアルバスストレージデバイスを備える。別の実施例では、周辺機器は、周辺機器をコンピュータシステムに対して大容量ストレージデバイスおよびネットワークデバイスとして特定するレポート実行要素を含む。また別の実施例では、コンピュータシステムは、コンピュータシステムと周辺機器の間の通信を可能にするデバイスドライバを含む。
【発明を実施するための最良の形態】
【００４３】
本発明のこれらおよびその他の側面は、以下の詳細な説明および添付の図面により十分に明らかにされるが、それらは本発明を図示することを目的としており、本発明を限定するものではない。
【００４４】
図１を参照すると、システムのブロック図では、クライアントコンピュータ装置１１０は、第一のネットワーク１５０を介して、ゲートウェイコンピュータ装置１２０にアクセスする。一部の実施例では、クライアントコンピュータ装置１１０は、破線で示されるファイアウォール１３０を通過してゲートウェイコンピュータ装置１２０にアクセスする。同様に、ゲートウェイコンピュータ装置１２０は、第二のネットワーク１８０からターゲットのコンピュータ装置１４０に通信する。図１には、１つのゲートウェイコンピュータ装置１２０とそれぞれ１種類のクライアントコンピュータ装置１１０とターゲットコンピュータ装置１４０しか示されていないが、これらの装置はいくつでも存在する場合があることを理解する。
【００４５】
図１に示されているように、クライアントコンピュータ装置１１０は、パーソナルコンピュータ１１２、コンピュータキオスク１１４、携帯情報端末（ＰＤＡ）１１６または携帯電話１１８を含むことがある。一部の実施例では、コンピュータキオスク１１４は、典型的には公共の場所で通常は無料で、複数のユーザーによりアクセス可能なように構成されているパーソナルコンピュータである。
【００４６】
図２Ａと図２Ｂは、クライアントコンピュータ装置１１０がパーソナルコンピュータ１１２である実施例や、キオスクコンピュータ装置１１４が、カリフォルニア州、Ｐａｌｏ  Ａｌｔｏのヒューレットパッカード社またはテキサス州Ｒｏｕｎｄ  Ｒｏｃｋのデル社により製造されているようなパーソナルコンピュータとして提供される実施例で有用である典型的なコンピュータ２００のブロック図を表す。図２Ａと図２Ｂに示されているように、コンピュータ２００は、それぞれ、中央演算処理装置２０２と主記憶装置２０４を含む。コンピュータ２００は、それぞれ、１つまたは複数の入力／出力装置２３０ａ−２３０ｎ（一般的に参照番号２３０を使用して参照される）のようなその他の光学部品、および、中央演算処理２０２と通信するキャッシュメモリ２４０を含んでもよい。
【００４７】
中央演算処理装置２０２は、主記憶装置２０４に応答および主記憶装置２０４から取得した命令を処理する任意の論理回路である。多数の実施例では、中央演算処理装置は、以下のようなマイクロプロセッサ装置により提供される。８０８８、８０２８６、８０３８６、８０４８６、Ｐｅｎｔｉｕｍ（登録商標）、Ｐｅｎｔｉｕｍ（登録商標）  Ｐｒｏ、Ｐｅｎｔｉｕｍ（登録商標）  ＩＩ、ＣｅｌｅｒｏｎまたはＸｅｏｎプロセッサ（すべて、カリフォルニア州Ｍｏｕｎｔａｉｎ  Ｖｉｅｗのインテル社製）、６８０００、６８０１０、６８０２０、６８０３０、６８０４０、ＰｏｗｅｒＰＣ  ６０１、ＰｏｗｅｒＰＣ６０４、ＰｏｗｅｒＰＣ６０４ｅ、ＭＰＣ６０３ｅ、ＭＰＣ６０３ｅｉ、ＭＰＣ６０３ｅｖ、ＭＰＣ６０３ｒ、ＭＰＣ６０３ｐ、ＭＰＣ７４０、ＭＰＣ７４５、ＭＰＣ７５０、ＭＰＣ７５５、ＭＰＣ７４００、ＭＰＣ７４１０、ＭＰＣ７４４１、ＭＰＣ７４４５、ＭＰＣ７４４７、ＭＰＣ７４５０、ＭＰＣ７４５１、ＭＰＣ７４５５、ＭＰＣ７４５７プロセッサ（すべてイリノイ州Ｓｃｈａｕｍｂｕｒｇのモトローラ社製）、Ｃｒｕｓｏｅ  ＴＭ５８００、Ｃｒｕｓｏｅ  ＴＭ５６００、Ｃｒｕｓｏｅ  ＴＭ５５００、Ｃｒｕｓｏｅ  ＴＭ５４００、Ｅｆｆｉｃｅｏｎ  ＴＭ８６００、Ｅｆｆｉｃｅｏｎ  ＴＭ８３００またはＥｆｆｉｃｅｏｎ  ＴＭ８６２０プロセッサ（カリフォルニア州サンタクララのＴｒａｎｓｍｅｔａ  Ｃｏｒｐｏｒａｔｉｏｎ）、ＲＳ／６０００プロセッサ、ＲＳ６４、ＲＳ  ６４  ＩＩ、Ｐ２ＳＣ、ＰＯＷＥＲ３、ＲＳ６４  ＩＩＩ、ＰＯＷＥＲ３−ＩＩ、ＲＳ  ６４  ＩＶ、ＰＯＷＥＲ４、ＰＯＷＥＲ４＋、ＰＯＷＥＲ５、ＰＯＷＥＲ６プロセッサ（すべてニューヨーク州Ｗｈｉｔｅ  ＰｌａｉｎｓのＩｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ製）、ＡＭＤ  Ｏｐｔｅｒｏｎ、ＡＭＤ  Ａｔｈｌｏｎ  ６４  ＦＸ、ＡＭＤ  ＡｔｈｌｏｎまたはＡＭＤ  Ｄｕｒｏｎプロセッサ（カリフォルニア州ＳｕｎｎｙｖａｌｅのＡｄｖａｎｃｅｄ  Ｍｉｃｒｏ  Ｄｅｖｉｃｅｓ製）。
【００４８】
主記憶装置２０４は、スタティックランダムアクセスメモリ（ＳＲＡＭ）、Ｂｕｒｓｔ  ＳＲＡＭまたはＳｙｎｃｈＢｕｒｓｔ  ＳＲＡＭ  （ＢＳＲＡＭ）、ＤＲＡＭ、Ｆａｓｔ  Ｐａｇｅ  Ｍｏｄｅ  ＤＲＡＭ  （ＦＰＭ  ＤＲＡＭ）、Ｅｎｈａｎｃｅｄ  ＤＲＡＭ  （ＥＤＲＡＭ）、Ｅｘｔｅｎｄｅｄ  Ｄａｔａ  Ｏｕｔｐｕｔ  ＲＡＭ  （ＥＤＯ  ＲＡＭ）、Ｅｘｔｅｎｄｅｄ  Ｄａｔａ  Ｏｕｔｐｕｔ  ＤＲＡＭ  （ＥＤＯ  ＤＲＡＭ）、Ｂｕｒｓｔ  Ｅｘｔｅｎｄｅｄ  Ｄａｔａ  Ｏｕｔｐｕｔ  ＤＲＡＭ  （ＢＥＤＯ  ＤＲＡＭ）、Ｅｎｈａｎｃｅｄ  ＤＲＡＭ  （ＥＤＲＡＭ）、同期ＤＲＡＭ  （ＳＤＲＡＭ）、ＪＥＤＥＣ  ＳＲＡＭ、ＰＣ１００  ＳＤＲＡＭ、Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ  ＳＤＲＡＭ  （ＤＤＲ  ＳＤＲＡＭ）。Ｅｎｈａｎｃｅｄ  ＳＤＲＡＭ  （ＥＳＤＲＡＭ）、ＳｙｎｃＬｉｎｋ  ＤＲＡＭ  （ＳＬＤＲＡＭ）、Ｄｉｒｅｃｔ  Ｒａｍｂｕｓ  ＤＲＡＭ  （ＤＲＤＲＡＭ）または  Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  ＲＡＭ  （ＦＲＡＭ）のような、データを格納し、マイクロプロセッサ２０２による任意の格納場所への直接的なアクセスを許可する能力のある１つまたは複数のメモリチップのことがある。
【００４９】
図２Ａの実施例では、プロセッサ２０２は、システムバス２２０を経由してメインメモリ２０４と通信する（詳細は以下に記載）。図２Ｂは、プロセッサがメモリポートを経由してメインメモリ２０４と直接通信するコンピュータ２００の実施例を表す。例えば、図２Ｂでは、メインメモリ２０４はＤＲＤＲＡＭのことがある。
【００５０】
図２Ａと図２Ｂは、メインプロセッサ２０２が、「バックサイド」バスとも呼ばれる第二のバスを経由してキャッシュメモリ２４０と直接通信する実施例を表す。その他の実施例では、メインプロセッサ２０２は、システムバス２２０を使用して、キャッシュメモリ２４０と通信する。キャッシュメモリ２４０は、典型的には、メインメモリ２０４よりも応答時間が速く、典型的には、ＳＲＡＭ、ＢＳＲＡＭまたはＥＤＲＡＭにより提供される。
【００５１】
図２Ａに示された実施例では、プロセッサ２０２は、ローカルシステムバス２２０を経由して、さまざまなＩ／Ｏデバイス２３０と通信する。中央演算処理装置２０２をＩ／Ｏデバイス２３０に接続するために、ＶＥＳＡ  ＶＬバス、ＩＳＡバス、ＥＩＳＡバス、ＭｉｃｒｏＣｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ  （ＭＣＡ）バス、ＰＣＩバス、ＰＣＩ−Ｘバス、ＰＣＩ−ＥｘｐｒｅｓｓバスまたはＮｕＢｕｓのようなさまざまなバスが使用されることがある。Ｉ／Ｏデバイスがビデオディスプレイである実施例では、プロセッサ２０２は、ディスプレイと通信するために、ＡＧＰ（Ａｄｖａｎｃｅｄ  Ｇｒａｐｈｉｃ  Ｐｏｒｔ）を使用することがある。図２Ｂは、メインプロセッサ２０２がＨｙｐｅｒＴｒａｎｓｐｏｒｔ、Ｒａｐｉｄ  Ｉ／ＯまたはＩｎｆｉｎｉＢａｎｄを経由して、Ｉ／Ｏデバイス２３０ｂと直接通信するコンピュータ２００の実施例を表す。また、図２Ｂは、ローカルバスと直接通信が混合された実施例も表す。プロセッサ２０２は、Ｉ／Ｏデバイス１３０ｂと直接通信する一方で、ローカル相互接続バスを使用して、Ｉ／Ｏデバイス２３０ａと通信する。
【００５２】
多種多様なＩ／Ｏデバイス２３０がコンピュータ２００に存在することもある。入力装置は、キーボード、マウス、トラックパッド、トラックボール、マイク、描画タブレットを含む。出力装置は、ビデオディスプレイ、スピーカー、インクジェットプリンタ、レーザープリンタおよび昇華型プリンタを含む。
【００５３】
さらなる実施例では、Ｉ／Ｏデバイス２３０は、ＵＳＢバス、Ａｐｐｌｅ  Ｄｅｓｋｔｏｐ  Ｂｕｓ、ＲＳ−２３２シリアル接続、ＳＣＳＩバス、ＦｉｒｅＷｉｒｅバス、ＦｉｒｅＷｉｒｅ  ８００バス、Ｅｔｈｅｒｎｅｔ（登録商標）バス、ＡｐｐｌｅＴａｌｋバス、Ｇｉｇａｂｉｔ  Ｅｔｈｅｒｎｅｔ（登録商標）バス、Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｔｒａｎｓｆｅｒ  Ｍｏｄｅバス、ＨＩＰＰＩバス、Ｓｕｐｅｒ  ＨＩＰＰＩバス、ＳｅｒｉａｌＰｌｕｓバス、ＳＣＩ／ＬＡＭＰバス、ＦｉｂｒｅＣｈａｎｎｅｌバス、Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ小型コンピュータシステムインターフェイスバスのように、システムバス１２０と外部通信バスのブリッジのことがある。
【００５４】
図２Ａおよび図２Ｂで示されたような汎用目的のデスクトップ型コンピュータは、典型的に、タスクのスケジュールやシステムリソースへのアクセスを制御するオペレーティングシステムの制御の下で操作する。典型的なオペレーティングシステムは、ＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳ（登録商標）（ワシントン州ＲｅｄｍｏｎｄのＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐ製）、ＭａｃＯＳ（カリフォルニア州ＣｕｐｅｒｔｉｎｏのＡｐｐｌｅ  Ｃｏｍｐｕｔｅｒ製）、ＯＳ／２（ニューヨーク州ＡｒｍｏｎｋのＩｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ製）、Ｌｉｎｕｘ（ユタ州Ｓａｌｔ  Ｌａｋｅ  ＣｉｔｙのＣａｌｄｅｒａ  Ｃｏｒｐなどにより配布される無償に利用可能なオペレーティングシステム）などがある。
【００５５】
また、コンピュータ２００は、任意のパーソナルコンピュータ（例えば、２８６ベース、３８６ベース、４８６ベース、Ｐｅｎｔｉｕｍ（登録商標）ベース、Ｐｅｎｔｉｕｍ（登録商標）  ＩＩベース、Ｐｅｎｔｉｕｍ（登録商標）  ＩＩＩベース、Ｐｅｎｔｉｕｍ（登録商標）  ４−ベース、Ｐｅｎｔｉｕｍ（登録商標）  Ｍ−ベースまたはＭａｃｉｎｔｏｓｈのコンピュータ）、Ｗｉｎｄｏｗｓ（登録商標）ベースの端末、ネットワークコンピュータ、ワイヤレスデバイス、情報機器、ＲＩＳＣ  Ｐｏｗｅｒ  ＰＣ、Ｘデバイス、ワークステーション、ミニコンピュータ、メインフレームコンピュータ、ＰＤＡ、またはその他のコンピュータ装置であってもよい。コンピュータ２００によりサポートされるＷｉｎｄｏｗｓ（登録商標）型プラットフォームは、これらに限定されないが、ＷＩＮＤＯＷＳ（登録商標）  ３．ｘ、ＷＩＮＤＯＷＳ（登録商標）  ９５、ＷＩＮＤＯＷＳ（登録商標）  ９８、ＷＩＮＤＯＷＳ（登録商標）  ＮＴ  ３．５１、ＷＩＮＤＯＷＳ（登録商標）  ＮＴ  ４．０、ＷＩＮＤＯＷＳ（登録商標）  ２０００、ＷＩＮＤＯＷＳ（登録商標）  ＣＥ、ＷＩＮＤＯＷＳ（登録商標）  ＭＥ、ＷＩＮＤＯＷＳ（登録商標）  ＸＰ、ＷＩＮＤＯＷＳ（登録商標）  Ｌｏｎｇｈｏｒｎ、ＭＡＣ／ＯＳ、Ｊａｖａ（登録商標）およびＵＮＩＸ（登録商標）を含むことができる。コンピュータ２００は、ビジュアルディスプレイデバイス（例えばコンピュータモニタ）、データ入力装置（例えばキーボード）、ダウンロードしたアプリケーションプログラムを格納するための持続性または揮発性のストレージ（例えばコンピュータのメモリ）、プロセッサおよびマウスを含むことができる。通信プログラムの実行により、システム２００は、分散型コンピュータシステムモデルに参加できる。
【００５６】
クライアントコンピュータ装置１１０が移動型装置である実施例では、装置は、ｉ５５ｓｒ、ｉ５８ｓｒ、ｉ８５ｓまたはｉ８８ｓ（イリノイ州Ｓｃｈａｕｍｂｕｒｇのモトローラ社製）、６０３５または７１３５（日本の京都の京セラ社製）、ｉ３００またはｉ３３０（韓国ソウルのＳａｍｓｕｎｇ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｃｏ．，  Ｌｔｄ製）のようなＪＡＶＡ（登録商標）が使用可能な携帯電話のことがある。典型的なモバイル装置は、プロセッサ２０２およびメインメモリ２０４など、図２Ａおよび２Ｂで説明された要素の多数を備えてもよい。
【００５７】
クライアントコンピュータ装置１１０が移動型であるその他の実施例では、Ｔｕｎｇｓｔｅｎ  Ｗ、ＶＩＩ、ＶＩＩｘ、ｉ７０５（カリフォルニア州ＭｉｌｐｉｔａｓのｐａｌｍＯｎｅ，  Ｉｎｃ．製）のような、ＰａｌｍＯＳオペレーティングシステムの制御下の携帯型情報端末（ＰＤＡ）であってもよい。さらなる実施例では、コンピュータ１００は、ｉＰＡＱ  ４１５５、ｉＰＡＱ  ５５５５、ｉＰＡＱ  １９４５、ｉＰＡＱ  ２２１５およびｉＰＡＱ  ４２５５（カリフォルニア州Ｐａｌｏ  ＡｌｔｏのＨｅｗｌｅｔｔ−Ｐａｃｋａｒｄ  Ｃｏｒｐｏｒａｔｉｏｎ製）ＶｉｅｗＳｏｎｉｃ  Ｖ３６（カリフォルニア州ＷａｌｎｕｔのＶｉｅｗＳｏｎｉｃ製）またはＴｏｓｈｉｂａ  ＰｏｃｋｅｔＰＣ  ｅ４０５（ニューヨーク州ニューヨークのＴｏｓｈｉｂａ  Ａｍｅｒｉｃａ，  Ｉｎｃ．製）のような、ＰｏｃｋｅｔＰＣオペレーティングシステムに制御下で操作する携帯情報端末（ＰＤＡ）であってもよい。まだ別の実施例では、コンピュータ１００は、Ｔｒｅｏ  １８０、Ｔｒｅｏ  ２７０、Ｔｒｅｏ  ６００またはＴｒｅｏ  ６５０のような（カリフォルニア州ＭｉｌｐｉｔａｓのｐａｌｍＯｎｅ製）、ＰＤＡ／電話の混合型装置である。まださらなる実施例では、クライアントコンピュータ装置１１０は、ＭＰｘ２００（モトローラ社製）のような、ＰｏｃｋｅｔＰＣオペレーティングシステムの制御の下で操作する携帯電話である。典型的なＰＤＡ／電話を組み合わせた装置は、プロセッサ２０２およびメインメモリ２０４など、図２Ａと２Ｂで説明された要素の多数を備えてもよい。
【００５８】
図１に戻ると、ゲートウェイコンピュータ装置１２０は、上記のようなコンピュータであってよい。一部の実施例では、ゲートウェイコンピュータ装置は、ブレードサーバー、またはマルチプロセッサコンピュータサーバーとして、物理的に構成される。まだその他の実施例では、ゲートウェイコンピュータ装置は、マルチプロセッサシステムの１つのプロセッサを操作する仮想サーバーであってもよい。
【００５９】
クライアントコンピュータ装置１１０は、第一のネットワーク１５０からゲートウェイコンピュータ装置１２０と通信する。一部の実施例では、クライアントコンピュータ装置１１０は、ネットワーク接続から通信する。ネットワークは、ローカルエリアネットワーク（ＬＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）またはインターネットのようなワイドエリアネットワーク（ＷＡＮ）であり得る。クライアントコンピュータ装置１１０およびゲートウェイコンピュータ装置１２０は、標準の電話線、ＬＡＮまたはＷＡＮリンク（例えば、Ｔ１、Ｔ３、５６ｋｂ、Ｘ．２５）、ブロードバンド接続（ＩＳＤＮ、Ｆｒａｍｅ  Ｒｅｌａｙ、ＡＴＭ）およびワイヤレス接続など、さまざまな接続からネットワークに接続することがある。クライアントコンピュータ装置１１０とゲートウェイコンピュータ装置１２０の間の接続は、さまざまなデータリンク層接続プロトコル（例えば、ＴＣＰ／ＩＰ、ＩＰＸ、ＳＰＸ、ＮｅｔＢＩＯＳ、ＮｅｔＢＥＵＩ、ＳＭＢ、Ｅｔｈｅｒｎｅｔ（登録商標）、ＡＲＣＮＥＴ、Ｆｉｂｅｒ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｄａｔａ  Ｉｎｔｅｒｆａｃｅ  （ＦＤＤＩ）、ＲＳ２３２、ＩＥＥＥ  ８０２．１１、ＩＥＥＥ  ８０２．１１ａ、ＩＥＥ  ８０２．１１ｂ、ＩＥＥＥ  ８０２．１１ｇおよび直接非同期接続）を使用することがある。
【００６０】
引き続き図１を参照すると、ターゲットコンピュータシステム１４０は、ファイルサーバー１４２、シンクライアントアプリケーションサーバー１４４、メディアサーバー１４６、ＩＰ電話アプリケーション１４８、および、従来の「ファットクライアント」のクライアント−サーバー型アプリケーションを提供するサーバー１４９を実行用に含むことがある。ゲートウェイコンピュータ装置１２０は、第二のネットワーク１８０を経由して、ターゲットコンピュータ装置１４０と通信する。第二のネットワーク１８０は、第一のネットワーク１５０と接続している上記のプロトコルおよび通信メカニズムのいずれを使用してもよい。
【００６１】
ここで図３を参照すると、クライアントコンピュータ装置１１０とゲートウェイコンピュータ装置１２０の間のセキュアな接続を確立するために取られるステップの１つの実施例が示される。簡単に要約すると、クライアントコンピュータ装置１１０は、ゲートウェアィコンピュータ装置ＵＲＬにアクセスする（ステップ３０２）。ゲートウェイコンピュータ装置１２０は、クライアントコンピュータ装置１１０のユーザーを認証して（ステップ３０４）、ポータルページをクライアントコンピュータ装置１１０に送信して、ユーザーに表示する（ステップ３０６）。クライアントコンピュータ装置１１０は、ゲートウェイコンピュータ装置１２０に接続するリクエストを送信する（ステップ３０８）。ゲートウェイコンピュータ装置１２０は、リモートプロセスをクライアントコンピュータ装置１１０に送信する（ステップ３１０）。クライアントコンピュータ装置１１０は、リモートプロセスを起動する（ステップ３１２）。起動すると、リモートプロセスは、ゲートウェイコンピュータ装置１２０にセキュアな通信トンネルを確立する（ステップ３１４）。
【００６２】
まだ図３を参照して、詳細を述べると、クライアントコンピュータ装置１１０は、ゲートウェイコンピュータ装置のＵＲＬにアクセスする（ステップ３０２）。一部の実施例では、ゲートウェイコンピュータ装置のＵＲＬは、任意のブラウザアプリケーションにアクセス可能な公開ＵＲＬである。ゲートウェイコンピュータ装置１２０は、クライアントコンピュータ装置のユーザーに認証情報を問い合わせるページをクライアントコンピュータ装置１１０に送信することにより、ゲートウェイコンピュータ装置のＵＲＬのリクエストに応答する。
【００６３】
ゲートウェイコンピュータ装置１２０は、クライアントコンピュータ装置１１０のユーザーを認証する（ステップ３０４）。一部の実施例では、ゲートウェイコンピュータ装置１２０は、ＨＴＴＰ４０１  Ｂａｓｉｃ、ＤｉｇｅｓｔまたはＮＴＬＭを使用して、認証の信用証明をユーザーに問い合わせる。信用証明をユーザーから受信すると、ＬＤＡＰ、ＲＡＤＩＵＳ、二要素認証技術、認証証明書または生体認証技術を使用して、認証が発生することがある。例えば、ユーザーは、ＳｅｃｕｒＩＤトークン（マサチューセッツ州ＢｅｄｆｏｒｄのＲＳＡ  Ｓｅｃｕｒｉｔｙ  Ｉｎｃ製造販売）、またはＳａｆｅＷｏｒｄトークン（カリフォルニア州Ｓａｎ  ＪｏｓｅのＳｅｃｕｒｅ  Ｃｏｍｐｕｔｉｎｇ製造）のようなトークンベースの二要素認証技術を使用して認証することがある。
【００６４】
ゲートウェイコンピュータ装置１２０は、ポータルページをクライアントコンピュータ装置１１０に送信して、ユーザーに表示する（ステップ３０６）。一部の実施例では、ポータルページは、ユーザーの場所、クライアントコンピュータ装置１１０の機能、または、ユーザーがクライアントコンピュータ装置１１０を所有しているかどうかなど、ユーザーから追加情報をリクエストする。その他の実施例では、ポータルページにより、ユーザーは、ユーザーがアクセスしたい特定のネットワークリソースを指定できる。まだその他の実施例では、ポータルページは、ユーザーに、確立する接続を選択するボタンを提供する。
【００６５】
クライアントコンピュータ装置１１０は、ゲートウェイ装置１２０に接続するリクエストを送信する（ステップ３０８）。ある実施例では、クライアントコンピュータ装置１１０は、ユーザーがアクセスするネットワークリソースを選択すると、リクエストを自動的に送信する。その他の実施例では、クライアントコンピュータ装置１１０は、ユーザーがポータルページでリクエストされた情報を送信後、リクエストを自動的に送信する。
【００６６】
ゲートウェイコンピュータ装置１２０は、リモートプロセスをクライアントコンピュータ装置１１０に送信する（ステップ３１０）。ある実施例では、リモートプロセスはクライアントアプリケーションを含む。クライアントアプリケーションは、パケットを受信し、パケットにポリシーを適用し、パケットをゲートウェイコンピュータ装置１１０に送信するかどうかを決定する機能を含んでもよい。
【００６７】
一部の実施例では、リモートプロセスはドライバを含む。ドライバは、パケットをキャプチャし、クライアントアプリケーションから受信したフィルタテーブルに応答して、パケットをクライアントアプリケーションに転送することを決定する機能を備えていてもよい。これらのある実施例では、リモートプロセスは、ネットワークドライバインターフェイス仕様（ＮＤＩＳ）に準拠して構築されたドライバを備える。これらの別の実施例では、ドライバはミニフィルタを備える。これらのさらに別の実施例では、ドライバは、クライアントコンピュータ装置１１０上のカーネルスペースで実行する。これらのまだ別の実施例では、ドライバは、クライアントコンピュータ装置１１０上のアプリケーションスペースで実行する。これらのさらに別の実施例では、ドライバは、リモートプロセスとは別に、クライアントコンピュータ装置１２０に送信される。これらのまだ別の実施例では、ゲートウェイコンピュータ装置１２０が、クライアントコンピュータ装置１１０が既にＮＤＩＳドライバを備えること、および、ＮＤＩＳドライバのクライアントコンピュータ装置１１０への送信が必要でないことを決定する。
【００６８】
クライアントコンピュータ装置１１０は、リモートプロセスを起動する（ステップ３１２）。クライアントコンピュータ装置１１０は、インストール時に、リモートプロセスを自動的に起動することがある。その他の実施例では、クライアントコンピュータ装置１１０は、クライアントコンピュータ装置１１０のユーザーが、ターゲットコンピュータ装置１４０へのアクセスをリクエストするときに、リモートプロセスを自動的に起動することがある。また別の実施例では、クライアントコンピュータ装置１１０のユーザーは、ターゲットコンピュータ装置１４０へのアクセスをリクエストするまえに、リモートプロセスを自動的に起動することができる。
【００６９】
起動すると、リモートプロセスは、ゲートウェイコンピュータ装置１２０にセキュアな通信トンネルを確立する（ステップ３１４）。リモートプロセスがアプリケーションスペースで実行されるクライアントアプリケーションである実施例では、クライアントアプリケーションは、ゲートウェイコンピュータ装置１２０へのセキュアな通信トンネルを確立する。ある実施例では、セキュアな通信トンネルは、ＴＬＳまたはＳＳＬ暗号を使用して、ポート４４２、または、ゲートウェイコンピュータ装置１２０上のその他任意の設定ポートのようなＨＴＴＰＳポートを介して確立される。別の実施例では、セキュアな通信トンネルは、ＨＴＴＰＳ、Ｐｒｏｘｙ  ＨＴＴＰおよびＳＯＣＫＳのような、業界標準の接続確立技術を使用して確立されることができる。これらの技術を使用することにより、ファイアウォール１３０が実装される実施例で、本発明の使用が可能になる。一部の実施例では、中間プロキシを経由して接続される。これらのある実施例では、クライアントコンピュータ装置１１０は、中間プロキシによりリクエストされたクライアントコンピュータ装置１１０の信用証明をユーザーから取得する。
【００７０】
一部の実施例では、セキュアな通信トンネルは、ＳＳＬおよびＴＬＳのような業界標準の技術を使用して暗号化される。セキュアな通信トンネルが確立されると、セッションのペイロードが暗号化されて、キャプチャされたＩＰパケットが、ゲートウェイコンピュータ装置１２０に安全に送信されることができる。セキュアな通信トンネルから送信されるパケットおよびパケットのヘッダー情報は暗号化される。セキュアな通信トンネルは、１９６ビット暗号、さらにこれより高いビットも低いビットもサポートすることができる。ある実施例では、セキュアな通信トンネルは、ＣＡＳＴ、ＣＡＳＴ５、ＤＥＳ、Ｔｒｉｐｌｅ−ＤＥＳ、ＩＤＥＡ、ＲＣ２、ＲＣ４およびＲＣ５など、すべてのＯｐｅｎＳＳＬ暗号をサポートする。
【００７１】
一部の実施例では、ゲートウェイコンピュータ装置１２０は、構成情報をリモートプロセスに送信する。構成情報は、リモートプロセスに、ネットワーク１８０のようなセキュアになっているネットワークに関する詳細情報を提供することができる。また、構成情報は、１つまたは複数のネットワーク上のクライアントコンピュータ装置１１０が認知できるために必要なＩＰアドレスも含むことができる。構成情報は、さらに、リモートプロセスが通信トンネルを正常に確立したことを確認するために必要な情報を含むことができる。この情報により、リモートプロセスは、直接、または、クライアントコンピュータ装置１１０に実行するように構成することにより、クライアント側の証明書をテストして確認できるようになる。また、情報は、リモートプロセスが、トンネルが確立したことを確認できるようにする、認証情報も含むことができる。
【００７２】
一部の実施例では、リモートプロセスを起動すると、リモートプロセスは、ネットワーク１８０のようなプライベートのセキュアなネットワークに送信される予定のすべてのネットワークトラフィックをキャプチャする。これらのある実施例では、リモートプロセスは、確立されたセキュアな通信トンネルを介してキャプチャされたネットワークトラフィックを、ゲートウェイコンピュータ装置１２０に出力先を変更する。すべてのネットワークトラフィックがキャプチャされて、セキュアなリンクを介して送信される実施例では、本発明は、ＩＰＳｅｃソリューションにより提供されるのと同等な機能を提供する。
【００７３】
これらのある実施例では、ＴＣＰ接続は、クライアントコンピュータ装置１１０で稼働しているアプリケーションにより開始され、ＩＰパケットをターゲットコンピュータ装置１４０へ送信される。リモートプロセスは、アプリケーションにより生成されたＩＰパケットをキャプチャする。リモートプロセスは、ＴＣＰ確認パケットをアプリケーションに送信して、アプリケーションにより開始されたＴＣＰ接続を終了することがある。その後、リモートプロセスは、ゲートウェイコンピュータ装置１２０への第二のＴＣＰ接続を作成して、セキュアな通信トンネルを介し、ゲートウェイコンピュータ装置１２０へキャプチャしたＩＰパケットを送信する。一部の実施例では、リモートプロセスは、キャプチャしたＩＰパケットをバッファに格納することがある。これらの実施例では、リモートプロセスは、格納したＩＰパケットをゲートウェイコンピュータ装置１２０に送信することがある。キャプチャしたＩＰパケットをバッファに格納することにより、ゲートウェイコンピュータ装置１２０とクライアントコンピュータ装置１１０の間のセキュアな通信トンネルが切断された場合に、パケットの保存が可能になる。
【００７４】
これらの別の実施例では、キャプチャしたＩＰパケットを受信すると、ゲートウェイコンピュータ装置１２０は、ゲートウェイコンピュータ装置１２０とターゲットコンピュータ装置１４０の間の第三のＴＣＰ接続を作成することがある。ゲートウェイコンピュータ装置１２０は、ゲートウェイコンピュータ装置１２０が、ターゲットコンピュータ装置１４０からの応答パケットを、クライアントコンピュータ装置１１０上にＩＰパケットを最初に生成したアプリケーションにより監視されるポートに送信できるように、ポートがマップされたネットワークアドレス変換（ＮＡＴ）テーブルを維持することがある。
【００７５】
クライアントコンピュータ装置１１０は、ゲートウェイコンピュータ装置１２０のパブリックネットワークアドレスとだけ通信するので、クライアントコンピュータ装置１１０は、ターゲットコンピュータ装置１４０のネットワークアドレスを知らないので、ターゲットコンピュータデバイス１４０が存在するネットワークに対するセキュリティが強化される。同様に、ゲートウェイコンピュータ装置１２０は、ターゲットコンピュータ装置１４０へのＴＣＰ接続を開始するので、ターゲットコンピュータ装置１４０はクライアントコンピュータ装置１１０のアドレス情報を受信せず、クライアントコンピュータ装置と、その装置が存在するネットワークを保護する。さらに、ゲートウェイコンピュータ装置１２０はＩＰパケットを受信するので、ゲートウェイコンピュータ装置１２０は、ポリシーまたはセキュリティチェックに応答して、ＩＰパケットをターゲットコンピュータ装置１４０に送信するかどうかを決定し、ターゲットコンピュータ装置１４０が存在するネットワークに対する保護をさらに高める。
【００７６】
一部の実施例では、ゲートウェイコンピュータ装置１２０がクライアントコンピュータ装置１１０への接続を作成できる機能が必要である。機能は、クライアントコンピュータ装置１１０がリアルタイム音声アプリケーションにより必要なプロトコルを使用できるために必要なことがある。これらのある実施例では、リモートプロセスは、クライアントコンピュータ装置１１０をネットワーク１８０上のネットワークアドレスに関連付ける。これらの別の実施例では、ゲートウェイコンピュータ装置１２０上でのリモートプロセスの実行は、クライアントコンピュータ装置１１０をネットワーク１８０上のネットワークアドレスに関連付ける。その他の実施例では、ゲートウェイコンピュータ装置１２０上でのリモートプロセスの実行は、リバースＮＡＴテーブルを維持する。
【００７７】
ある実施例では、本発明は、ゲートウェイ１２０の後ろにあるプライベートのセキュアなネットワーク１８０から外部ネットワーク１５０上のクライアントコンピュータ装置１１０に送信されるパケットをセキュアにするための方法を提供する。本発明では、ゲートウェイ上にネットワークアドレス変換（ＮＡＴ）機能を提供することにより、クライアントコンピュータ装置を、プライベートネットワークから分離することが可能になる。ＮＡＴを使用するＶＰＮゲートウェイは、プライベートネットワークをクライアントコンピュータ装置による直接層２のアクセスから阻止するために、クライアントコンピュータ装置のＩＰアドレスのマスク化を提供する。
【００７８】
ここで図４を参照すると、フロー図は、クライアントコンピュータ装置からゲートウェイへパケットをルーティングするための方法において取られるステップのある実施例を表す。簡単に要約すると、フィルタリングテーブルが受信される（ステップ４０２）。外部送信パケットが傍受される（ステップ４０４）。外部送信パケットは、フィルタリングテーブルに応答して、クライアントアプリケーションに送信される（ステップ４０６）。クライアントアプリケーションは、外部送信パケットへのポリシーの適用に応答して、外部送信パケットをゲートウェイコンピュータ装置へ送信する（ステップ４０８）。
【００７９】
フィルタリングテーブルが受信される（ステップ４０２）。一部の実施例では、フィルタリングテーブルはプライベートネットワークに関する情報を含む。その他の実施例では、クライアントコンピュータ装置上のフィルタはフィルタリングテーブルを受信する。これらのある実施例では、フィルタは、クライアントコンピュータ装置上のクライアントアプリケーションからフィルタリングテーブルを受信する。これらの別の実施例では、フィルタは、クライアントアプリケーションから構成設定を受信して、構成設定をフィルタリングテーブルに格納する。
【００８０】
外部送信パケットが傍受される（ステップ４０４）。一部の実施例では、クライアントコンピュータ装置上のフィルタは外部送信パケットを傍受する。これらのある実施例では、フィルタはすべての外部送信パケットを傍受する。これらの別の実施例では、フィルタは傍受された外部送信パケットを検査する。これらのまだ別の実施例では、フィルタは、外部送信パケットがルーティングされる前に、傍受した外部送信パケットを検査する。別の実施例では、フィルタは、外部送信パケットが、外部送信パケットがルーティングのための準備を行うデータリンク層に到達する前に、傍受した外部送信パケットを検査する。
【００８１】
外部送信パケットは、フィルタリングテーブルに応答して、クライアントアプリケーションに送信される（ステップ４０６）。一部の実施例では、フィルタは、フィルタリングテーブルに応答して、外部送信パケットをクライアントアプリケーションに送信する。これらのある実施例では、フィルタが外部送信パケットを検査すると、フィルタは、外部送信パケットのデータとフィルタリングテーブルのデータとを比較する。ある実施例では、フィルタリングテーブルは、外部送信パケットが、ゲートウェイコンピュータ装置の後ろ側のプライベートネットワークのような特定の送信先にアドレス指定されている場合は、外部送信パケットはクライアントアプリケーションに送信されるべきであることを示す。別の実施例では、フィルタリングテーブルは、外部送信パケットが、例えば、音声またはビデオデータのように、リアルタイムデータを含むパケットのような特定の種類のパケットである場合、外部送信パケットはクライアントアプリケーションに送信されるべきであることを示す。まだ別の実施例では、フィルタリングテーブルは、外部送信パケットの送信に特定のプロトコルタイプが必要であれば、パケットはクライアントアプリケーションに送信されるべきであることを示す。ある実施例では、フィルタは、ルーティングテーブルに応答して、外部送信パケットをクライアントアプリケーションに送信する。別の実施例では、フィルタは、外部送信パケットをクライアントアプリケーションにより監視されるポートへ送信する。一部の実施例では、フィルタは、パケットの送信先アドレスや送信先ポートを書き換える。これらのある実施例では、フィルタは、配信用のオペレーティングシステムのネットワークスタックをバックアップする書き換えられたパケットを、クライアントアプリケーションに送信する。これらの別の実施例では、フィルタは、送信先アドレスおよび送信先ポートを書き換える前に、外部送信パケットに関する情報をクライアントアプリケーションに送信する。送信される情報は、本来の送信先アドレスおよび送信先ポートを含むことがある。
【００８２】
クライアントアプリケーションは、外部送信パケットへのポリシーの適用に応答して、外部送信パケットをゲートウェイコンピュータ装置へ送信するかどうかを決定する（ステップ４０８）。ある実施例では、フィルタリングテーブルは、フィルタに、外部送信パケットがクライアントアプリケーションに送信されるベキかどうかを示す。一部の実施例では、フィルタから外部送信パケットを受信すると、クライアントアプリケーションは外部送信パケットにポリシーを適用する。これらのある実施例では、クライアントアプリケーションは、ポリシーの適用に応答して、外部送信パケットをゲートウェイコンピュータ装置に送信するかどうかを決定する。ある実施例では、外部送信パケットをゲートウェイコンピュータ装置に送信するかどうかの決定は、外部送信パケットを生成したアプリケーションのタイプに基づき得る。別の実施例では、外部送信パケットをゲートウェイコンピュータ装置に送信するかどうかの決定は、外部送信パケット内のデータのタイプを基づき得る。まだ別の実施例では、外部送信パケットをゲートウェイコンピュータ装置に送信するかどうかの決定は、外部送信パケットがアドレス指定されている送信先ネットワークの特徴を基づき得る。
【００８３】
ある実施例では、クライアントアプリケーションは、外部へ出力されるパケットの送信前に、ゲートウェイコンピュータ装置へのクライアントコンピュータ装置を認証する。別の実施例では、クライアントアプリケーションは、外部送信パケットをゲートウェイコンピュータ装置に送信する前に、外部送信パケットを暗号化する。まだ別の実施例では、クライアントアプリケーションは、ゲートウェイコンピュータ装置へのセキュアソケットレイヤ（ＳＳＬ）トンネルを確立する。さらに別の実施例では、クライアントアプリケーションは、暗号化された外部送信パケットを、ゲートウェイコンピュータ装置へのＳＳＬトンネルを経由して、ゲートウェイコンピュータ装置へ送信する。
【００８４】
ここで図５を参照すると、ブロック図は、クライアントコンピュータ装置からゲートウェイコンピュータ装置へとパケットをルーティングするためのシステムの一実施形態を示している。簡単に要約すると、システムは、クライアントコンピュータ装置５２０およびゲートウェイコンピュータ装置５４０を含む。クライアントコンピュータ装置５２０は、アプリケーションスペース５３２とカーネル５３４を含む。アプリケーションスペース５３２は、クライアントアプリケーション５２６を含む。カーネルスペース５３４は、フィルタ５２２とパケット５２８を含む。ある実施例では、フィルタ５２２とクライアントアプリケーション５２６は、ゲートウェイコンピュータ装置へパケットをルーティングするための装置を形成する。
【００８５】
カーネル５３４は、フィルタ５２２と外部送信パケット５２８を含むことがある。フィルタ５２２は、パケットキャプチャモジュール５６５を含むことがある。パケットキャプチャモジュール５６５は、ＮＤＩＳに準拠する。パケットキャプチャモジュール５６５はカーネルモードで操作することがある。パケットキャプチャモジュール５６５は、外部送信パケットトラフィックを傍受することがある。パケットキャプチャモジュール５６５は、パケットを、アプリケーション５２６のフレームモニタへ転送することがある。
【００８６】
一部の実施例では、フィルタ５２２は、非同期Ｉ／Ｏ制御メッセージを経由して、クライアントアプリケーション５２６と通信する。これらのある実施例では、パケットキャプチャモジュール５６５は、非同期Ｉ／Ｏ制御メッセージを経由して、ゲートウェイコンピュータ装置５４０の後ろ側のプライベートネットワークアドレス指定されたパケットを転送することがある。別の実施例では、フィルタ５２２は、ＵＤＰパケットを経由して、アプリケーションスペース５３４で稼働しているクライアントアプリケーション５２６と通信する。ある実施例では、フィルタ５２２は、非同期Ｉ／Ｏ制御メッセージを経由して、クライアントアプリケーション５２６から構成設定を受信する。構成設定は、どのネットワーク、プロトコルまたはパケットのタイプをフィルタするかに関する情報を含む。ある実施例では、フィルタ５２２は、フィルタリングテーブルに構成設定を格納する。別の実施例では、フィルタ５２２は、構成設定を含むフィルタリングテーブルを受信する。
【００８７】
ある実施例では、フィルタ５２２は、検査のために、すべての外部送信パケット５２８を傍受する。パケット５２８が、フィルタリングテーブルにリストされた条件を満たせば、フィルタ５２２は、パケット５２８を、パケット５２８の本来の送信先ではなく、クライアントアプリケーション５２６に送信することがある。フィルタ５２２は、パケット５２８をクライアントアプリケーション５２６に転送するために、非同期Ｉ／Ｏ制御メッセージを使用することがある。フィルタ５２２は、ルーティングテーブルに応答して、パケット５２８をクライアントアプリケーション５２６に送信することがある。
【００８８】
クライアントコンピュータ装置５２０のカーネル５３４は、ＮＤＩＳインターフェイスを含むことがある。一部の実施例では、ＮＤＩＳインターフェイスは、複数の中間フィルタを含む。一部の実施例では、パケット５２８はＮＤＩＳインターフェイスを通過し、複数の中間フィルタにより検査されることがある。フィルタ５２２はＮＤＩＳドライバとして提供されることがある。また、フィルタ５２２は、カーネル５３４上で稼働するプロセスの場合もある。
【００８９】
アプリケーションスペース５３２は、クライアントアプリケーション５２６を含む。ある実施例では、アプリケーションスペース５３２は、パケット５２８を生成することがあるアプリケーション５３８を含むことがある。一部の実施例では、アプリケーションスペース５３２で稼働しているアプリケーション５３８は、クライアントコンピュータ装置５２０により送信されるパケット５２８を生成する。アプリケーション５３８は、任意の種類および／または形式のウェブブラウザ、ウェブベースのクライアント、クライアント−サーバーアプリケーション、シンクライアントコンピュータクライアント、ＡｃｔｉｖｅＸコントロールまたはＪａｖａ（登録商標）アプレット、または、クライアントコンピュータ装置１１０またはネットワーク経由の通信上で実行可能なその他任意の種類および／または形式の実行可能な命令のような、任意の種類および／または形式のアプリケーションにできる。アプリケーション５３８は、任意の種類のプロトコルを使用することができ、例えば、ＨＴＴＰクライアント、ＦＴＰクライアント、ＯｓｃａｒクライアントまたはＴｅｌｎｅｔクライアントにできる。一部の実施例では、アプリケーション５３８は、リモートディスプレイまたはプレゼンテーションレベルのプロトコルを使用する。ある実施例では、アプリケーション５３８は、フロリダ州Ｆｏｒｔ  ＬａｕｄｅｒｄａｌｅのＣｉｔｒｉｘ  Ｓｙｓｔｅｍｓ，  Ｉｎｃ．により開発されたＩＣＡクライアントである。その他の実施例では、アプリケーション５３８は、ワシントン州ＲｅｄｍｏｎｄのＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎにより開発されたＲＤＰ（Ｒｅｍｏｔｅ  Ｄｅｓｋｔｏｐ）クライアントを含む。その他の実施例では、アプリケーション５３８は、ソフトＩＰ電話のような、ボイスオーバーアイピー（ＶｏＩＰ）通信に関連する任意の種類のソフトウェアを備える。さらなる実施例では、アプリケーション５３８は、ストリーミングビデオおよび／またはオーディオのアプリケーションのような、リアルタイムデータ通信に関連する任意のアプリケーションを含む。
【００９０】
クライアントアプリケーション５２６は、クライアントコンピュータ装置５２０上のアプリケーションスペース５３２に存在することがある。一部の実施例では、クライアントアプリケーション５２６は、フィルタ５２２からパケットを受信するための機能を提供する。その他の実施例では、クライアントアプリケーション５２６は、受信したパケット５２８にポリシーを適用するための機能を提供する。まだその他の実施例では、クライアントアプリケーション５２６は、ゲートウェイコンピュータ装置５４０へのＳＳＬトンネルを管理するための機能を提供する。さらにその他の実施例では、クライアントアプリケーション５２６は、パケット５２８を暗号化して、ゲートウェイコンピュータ装置５４０に送信するための機能を提供する。
【００９１】
クライアントアプリケーション５２６は、フレームモニタ５６０を含むことがある。フレームモニタ５６０は、ポリシーや、受信したパケットにポリシーを適用するためのロジックを含むことがある。フレームモニタ５６０は、受信したパケット５２８にポリシーを適用することがある。クライアントアプリケーション５２６は、フレームモニタ５６０により行われるポリシーベースの決定に応答して、パケットをゲートウェイコンピュータ装置５４０に送信することがある。
【００９２】
一部の実施例では、フレームモニタ５６０は、パケットの送信時にクライアントコンピュータ装置５２０の状態を決定するために、ポリシーを適用することがある。一部の実施例では、適用されたポリシーは、状態を満たすことが必要な場合がある。これらのある実施例では、ポリシーは、条件を満たすために、クライアントコンピュータ装置５２０が特定のオペレーティングシステムを実行することを要求することがある。一部の実施例では、ポリシーは、条件を満たすために、クライアントコンピュータ装置５２０が特定のオペレーティングシステムパッチを実行することを要求することがある。まだその他の実施例では、ポリシーは、条件を満たすために、クライアントコンピュータ装置５２０が各インストールされたネットワークカードにＭＡＣアドレスを提供することを要求する場合がある。一部の実施例では、ポリシーは、条件を満たすために、クライアントコンピュータ装置５２０が特定のＡｃｔｉｖｅ  Ｄｉｒｅｃｔｏｒｙのメンバーシップを示すことを要求することがある。別の実施例では、ポリシーは、条件を満たすために、クライアントコンピュータ装置５２０がウィルススキャナを実行することを要求することがある。その他の実施例では、ポリシーは、条件を満たすために、クライアントコンピュータ装置５２０がパーソナルファイアウォールを実行することを要求することがある。一部の実施例では、ポリシーは、条件を満たすために、クライアントコンピュータ装置５２０が特定のデバイスタイプを備えることを要求することがある。その他の実施例では、ポリシーは、条件を満たすために、クライアントコンピュータ装置５２０が特定のタイプのネットワーク接続を確立することを要求することがある。
【００９３】
その他の実施例では、フレームモニタ５６０は、パケット５２８を生成したアプリケーション５３８を指定することがある。これらのある実施例ではフレームモニタ５６０は、指定されたアプリケーション５３８に応答して、パケット５２８をゲートウェイコンピュータ装置５４０に送信することをポリシーベースで決定することがある。これらの別の実施例では、フレームモニタ５６０は、指定されたアプリケーションが実際にパケット５２８を生成したことを確認するために、パケットに対しチェックサムを実施することがある。
【００９４】
ある実施例では、ゲートウェイコンピュータ装置５４０はリモートアクセスサーバーである。ゲートウェイコンピュータ装置５４０は、クライアントコンピュータ装置５２０から受信したパケットを解読することがある。ゲートウェイコンピュータ装置５４０はプライベートネットワークを保護することがある。一部の実施例では、ゲートウェイコンピュータ装置５４０は、クライアントコンピュータ装置５２０をプライベートＩＰアドレスに関連付ける。これらのある実施例では、ゲートウェイコンピュータ装置５４０がクライアントコンピュータ装置５２０からパケットを受信すると、ゲートウェイコンピュータ装置５４０は、パケットのＩＰアドレスをクライアントコンピュータ装置５２０に関連付けられたＩＰアドレスに変換する。ゲートウェイコンピュータ装置５４０は、パケットを最終送信先にルーティングする前に、アクセス制御ポリシーを受信したパケットに適用することがある。図１１のゲートウェイコンピュータ装置５４０は、以下で詳細が説明される。
【００９５】
フレームがＳＳＬトンネルを経由してゲートウェイコンピュータ装置５４０に入ると、パケットとそのペイロードは、コールバックを経由して、ＳＳＬ解読の機能を提供する、ユーザーモードで稼働しているハンドラにディスパッチされる。ある実施例では、ＯｐｅｎＳＳＬが使用される。別の実施例では、ハードウェアアクセラレータが使用される。パケットが解読されると、ヘッダーが組み立てられるＨＴＴＰスタックに注入されて、リモートアクセスブレードに渡される。
【００９６】
リモートアクセスブレードでは、パケットは、パケット内に含まれているデータの種類により分類される。ある実施例では、パケットはログインと登録を要求しているＨＴＴＰヘッダーを含む。別の実施例では、パケットは、ＴＣＰ／ＵＤＰ／ＲＡＷ／ＯＴＨＥＲ接続確立を検索する。また別の実施例では、パケットは接続特定のデータを含む。さらに別の実施例では、パケットは、その他のユーザーとのコラボレーション、ユーザーディレクトリおよび存在の取得や、会議およびウェブキャストのようなテレフォニー機能の要求のような特定機能のリクエストを含む。リモートアクセスモジュールは、対応するサブハンドラーに応じてパケットをディスパッチする。例えば、クライアントコンピュータ装置は、ゲートウェイコンピュータ装置の後ろ側にあるプライベートネットワーク上の特定のマシンに設定される接続を要求することがある。リモートアクセスモジュールは、アクセス制御モジュールに相談することがあり、肯定的な反応が返ってくれば、リモートアクセスモジュールはリクエストを許可することがある。一部の実施例では、リモートアクセスモジュールは、受信するフレームにクライアントコンピュータ装置に対応するＳＳＬトンネルを関係付けるために、ＮＡＴ／ＰＡＴを利用するモジュールを転送するフレームを使用して、プライベートネットワーク上に次のフレームを注入することにより、リクエストを許可することがある。
【００９７】
ここで図６を参照すると、ブロック図は、パケットにポリシーを適用するステップに応答して、パケットをゲートウェイへ送信するクライアントアプリケーションのある実施例を表す。
【００９８】
アプリケーションスペース５３２のクライアントアプリケーション５２６はパケットを受信する。ある実施例では、クライアントアプリケーション５２６は、フィルタ５２２からパケットを受信する。一部の実施例では、クライアントアプリケーション５２６上のインターフェイス６０２がパケットを受信する。これらのある実施例では、インターフェイス６０２は、Ｉ／Ｏ制御ウィンドウズ（登録商標）マネージメントインターフェイス（ＷＭＩ）を備えた、全二重の直接Ｉ／ＯベースのＩＲＰ処理インターフェイスである。
【００９９】
クライアントアプリケーション５２６はパケットを検査する。ある実施例では、クライアントアプリケーション５２６上のポリシーとホストセキュリティエンジンＡＰＩ６２０がパケットを検査する。ある実施例では、ポリシーとホストセキュリティエンジンＡＰＩ６２０が、パケットにポリシーを適用する。ポリシーは、企業ネットワークにアクセスするホストおよびプロセスの要件を含むことがある。
【０１００】
一部の実施例では、ポリシーおよびホストセキュリティエンジンＡＰＩ６２０は、パケットを生成したアプリケーション５３８を指定する。アプリケーション５３８は、同じ名前の悪質なアプリケーションがパケットを生成しなかったことを確認するために、引き続きチェックサムを確認されることがある。ポリシーとホストセキュリティエンジンＡＰＩ６２０が、現在の条件とマシンの履歴がアプリケーションノポリシーを満足すると決定すれば、クライアントアプリケーション５２６はパケットをゲートウェイコンピュータ装置５４０へ送信する。
【０１０１】
一部の実施例では、クライアントアプリケーション３２６上のパケット／フレーム転送およびＳＳＬトンネル管理ＡＰＩ６１０は、パケットをゲートウェイコンピュータ装置５４０に送信する。ＡＰＩ６１０は、ＳＳＬトンネルを介し、パケットをゲートウェイコンピュータ装置５４０に送信することがある。
【０１０２】
ある実施例では、クライアントアプリケーション５２６は、ゲートウェイコンピュータ装置５４０上のポリシーモジュールと通信するために、非同期保守トンネルを確立する。クライアントアプリケーション５２６は、クライアントイベント（ファイアウォールおよびアンチウィルスプログラムのステータスなど）に関して、ゲートウェイコンピュータ装置５４０と通信するためにトンネルを使用することがある。また、クライアントアプリケーション５２６は、ゲートウェイコンピュータ装置から新しいポリシーを受信するためにトンネルを使用することがある。
【０１０３】
一部の実施例では、クライアントアプリケーション５２６は、Ａｐｐｌｉｃａｔｉｏｎ  ＨｏｏｋおよびＴＤＩ分析ＡＰＩ６３０を含む。ＡＰＩ５３０は、ＧＵＩメッセージをクライアントコンピュータ装置５２０のエンドユーザーに注入するために、Ｗｉｎｄｏｗｓ（登録商標）メニューフックおよびトレイポップフックを使用することがある。ある実施例では、ＧＵＩメッセージは、エンドユーザーにさまざまなシステムイベント、システム管理者の通知を警告し、ユーザー信認を収集する。
【０１０４】
その他の実施例では、クライアントアプリケーション５２６は、オーディオ／ビデオおよびメッセージ統合ＡＰＩ６４０を含む。ＡＰＩ６４０は、既存のユーザーアプリケーション（ＭＳＮメッセンジャーまたはインストールされたソフトフォン）と相互接続するためにオーディオ、ビデオ、ＩＭメッセージフックを使用することがある。
【０１０５】
ここで図７を参照すると、ブロック図は、フィルタ５２２のある実施例を表す。ある実施例では、フィルタ５２２は、プロトコルエッジドライバ７１０およびミニポートエッジ７２０を含む。プロトコルエッジドライバ７１０は、プロトコル層を基底のネットワークドライバに公開する。ミニポートエッジ７２０は、ミニポートインターフェイスを上部の層のプロトコルドライバに公開する。
【０１０６】
受信パス上でプロトコルエッジドライバ７１０に入るパケットは、クライアントコンピュータ装置５２０をゲートウェイコンピュータ装置として使用しているその他のクライアントコンピュータ装置から到着している。
【０１０７】
ミニポートエッジ７２０に入っているパケットは、外部送信パケットをゲートウェイコンピュータ装置５４０の後ろ側のプライベートネットワークへ送信しているクライアントコンピュータ装置５２０上で稼働しているアプリケーション５３８から到着している。Ｉ／Ｏフィルタ７１２は、各パケット上にフィルタリングロジックを適用して、フィルタリングテーブルと比較する。Ｉ／Ｏフィルタ７１２がパケットをフィルタすると、Ｉ／Ｏフィルタ７１２は、パケットを、クライアントアプリケーション５２６にパケットを転送するリクエストとともに、ＩＯＣＴＬディスパッチエンジン７１４に渡す。そうでなければ、Ｉ／Ｏフィルタ７１２は、パケットを本来の方向、ネットワークの上下へ適切に送信する。
【０１０８】
一部の実施例では、クライアントアプリケーション３２６は、クライアントコンピュータ装置３２０に存在しない。これらのある実施例では、周辺機器がクライアントアプリケーション３２６を含む。
【０１０９】
ここで図８を参照すると、フロー図は、パケットをクライアントコンピュータ装置からゲートウェイへルーティングするための方法において取られるステップのある実施例を表す。簡単に要約すると、方法は、周辺機器により、変更をルーティングテーブルに実施するステップを含む（ステップ８０２）。周辺機器は外部送信パケットを受信する（ステップ８０４）。周辺機器は、外部送信パケットに関する情報を、周辺機器にあるクライアントアプリケーションへ送信する（ステップ８０６）。周辺機器は、外部送信パケットのアドレス情報を、クライアントアプリケーションに関連付けられた送信先アドレスと送信先ポートに置換する（ステップ８０８）。周辺機器は、変更した外部送信パケットをＶＰＮクライアントアプリケーションに送信する（ステップ８１０）。
【０１１０】
ここで図８を参照し、詳細を説明すると、周辺機器は変更をルーティングテーブルに実施する（ステップ８０２）。一部の実施例では、周辺機器はルーティングテーブルに行う複数の変更を検索する。これらのある実施例では、周辺機器は、ＶＰＮゲートウェイコンピュータ装置から変更を検索することがある。これらの別の実施例では、ＶＰＮゲートウェイコンピュータ装置は、ルーティングテーブルの変更を検索する前に、周辺機器の認証を要求することがある。
【０１１１】
ある実施例では、周辺機器はＶＰＮアプリケーションを格納する。コンピュータシステムに接続すると、周辺機器は、クライアントコンピュータ装置に対して、大容量のストレージデバイスとして認識され、クライアントコンピュータ装置でＶＰＮアプリケーションを実行する。一部の実施例では、ＶＰＮアプリケーションは、周辺機器をＶＰＮゲートウェイコンピュータ装置に対して認証する。これらのある実施例では、認証後、ＶＰＮアプリケーションは、ＶＰＮゲートウェイコンピュータ装置からルーティングテーブルの変更を検索する。これらの別の実施例では、ＶＰＮアプリケーションは、周辺機器上に、検索したルーティングテーブルの変更を格納するファイルを作成する。これらのさらに別の実施例では、ＶＰＮアプリケーションは、周辺機器により使用されるデータを検索する。データは、ＶＰＮゲートウェイコンピュータ装置の送信先アドレス、クライアントコンピュータ装置のＩＰアドレス、および、ＶＰＮアプリケーションがモニタする少なくとも１つのポートアドレスを含むことがある。
【０１１２】
一部の実施例では、周辺機器でファイルの作成後、周辺機器は、クライアントコンピュータ装置に対してネットワークデバイスとして認識される。これらのある実施例では、周辺機器は、クライアントコンピュータ装置に、作成したファイルに格納された複数のルーティングテーブルの変更を転送する。これらの別の実施例では、周辺機器は、転送されたルーティングテーブルの変更から、コンピュータに、外部へ送信するパケットを周辺機器に送信するように命令する。これらのさらに別の実施例では、ルーティングテーブルへの変更は、クライアントコンピュータ装置に対して、ＶＰＮアプリケーションに送信されない外部送信パケットは、すべて、周辺機器に送信されるように示す。一部の実施例では、外部送信パケットは、ルーティングテーブルの変更に応答して、クライアントコンピュータ装置により、周辺機器に送信される。
【０１１３】
周辺機器は外部送信パケットを受信する（ステップ８０４）。ある実施例では、周辺機器は、ルーティングテーブルに行われた変更に応答して、外部送信パケットを受信する。ある実施例では、周辺機器は、Ｒ−ＮＤＩＳの周辺側と双方向に通信することにより、外部送信パケットを受信し、外部送信パケットを受容し、Ｒ−ＮＤＩＳに、パケットが届いたことを示す。
【０１１４】
ある実施例では、周辺機器が外部送信パケットを受信すると、外部送信パケットは、一連のアドレス情報を格納するＩＰヘッダーを含む。一部の実施例では、周辺機器は、一連のアドレス情報は固有であると決定する。これらのある実施例では、周辺機器が固有なセットのアドレス情報を受信すると、周辺機器は、固有なセットのアドレス情報を固有なソースポートにマッピングする。周辺機器は、固有なソースポートを作成するランダム数を生成することがある。周辺機器は、メモリに、固有なセット名アドレス情報から固有なソースポートへのマッピングを格納することがある。
【０１１５】
一部の実施例では、周辺機器は、第二のパケットを生成する。これらのある実施例では、周辺機器は、第二のパケットのデータセクションの制御フレームの内側にデータ構造を作成する。これらの別の実施例では、データ構造は固有なソースポートを含む。これらのさらに別の実施例では、データ構造はクライアントコンピュータ装置のＩＰアドレスを格納する。これらのさらに別の実施例では、データ構造は、ＶＰＮアプリケーションにより監視される複数のわかっている送信先ポートの１つを格納する。一部の実施例では、データ構造は、ＶＰＮゲートウェイコンピュータ装置から検索された既知の送信先ポートと送信先アドレスを格納する。
【０１１６】
周辺機器は、外部送信パケットに関する情報をクライアントアプリケーションに送信する（ステップ８０６）。一部の実施例では、周辺機器は、生成した第二のパケットをＶＰＮアプリケーションに送信する。これらの実施例の一つでは、生成された第二のパケットは、クライアントコンピュータ装置のＩＰアドレスおよびＶＰＮアプリケーションにより監視される送信先ポートを含む。生成した第二のパケットにこの情報を含めることにより、周辺機器は生成した第二のパケットを送信できるとともに、生成した第二のパケットをＶＰＮアプリケーションにより監視されるポート上のＶＰＮアプリケーションに配信することができる。これらの別の実施例では、生成した第二のパケットは、周辺機器により生成された固有のソースポートを含む。これらのさらに別の実施例では、周辺機器は、クライアントコンピュータ装置に対して、生成した第二のパケットが、新しく受信したパケットであることを示し、第二のパケットをクライアントコンピュータ装置に送信する。クライアントコンピュータ装置は、第二のパケットを受信して、それをＶＰＮアプリケーションに配信する。
【０１１７】
周辺機器は、外部送信パケットのアドレス情報を、クライアントアプリケーションに関連付けられた送信先アドレスと送信先ポートに置換する（ステップ８０８）。アドレス情報を書き換えることにより、周辺機器は、外部送信パケットをＶＰＮアプリケーションに転送できる。ある実施例では、周辺機器は、外部送信パケット上の送信先アドレスを、ＶＰＮアプリケーションが稼働するクライアントコンピュータ装置のＩＰアドレスに置換する。別の実施例では、周辺機器は、外部送信パケット上の送信先ポートを、ＶＰＮアプリケーションにより監視される送信先ポートに置換する。また別の実施例では、周辺機器は、外部送信パケット上のソースポートを、上記の生成した固有のソースポートで置換する。
【０１１８】
周辺機器は、変更した外部送信パケットをＶＰＮアプリケーションに送信する（ステップ８１０）。一部の実施例では、周辺機器は、クライアントコンピュータ装置に対して、変更した外部送信パケットが新しく受信したパケットであることを示す。これらのある実施例では、クライアントコンピュータ装置は、変更した外部送信パケットを受信し、送信先ポートをＶＰＮアプリケーションにより監視されるポートとして識別して、変更した外部送信パケットをＶＰＮアプリケーションへ送信する。
【０１１９】
周辺機器は、固有のソースポートとともにＶＰＮアプリケーションに提供する第二のパケットを生成する。ＶＰＮアプリケーションが固有のソースポートを受信すると、ＶＰＮアプリケーションは、その他のパケットに関連付けられた本来の送信先アドレスを特定するために、固有のソースポートを使用することがある。ある実施例では、ＶＰＮアプリケーションが、ソースポートを含む新しい変更された外部送信パケットを受信すると、ＶＰＮアプリケーションは、固有のソースポートを使用して、周辺機器上に格納されたマッピングから、外部送信パケットの本来の送信先アドレスを検索する。
【０１２０】
一部の実施例では、ＶＰＮアプリケーションは、外部送信パケットをＶＰＮゲートウェイコンピュータ装置へ送信する。これらのある実施例では、ＶＰＮアプリケーションは変更した外部送信パケットを暗号化する。これらの別の実施例では、ＶＰＮアプリケーションは、外部送信パケットを、周辺機器から受信した外部送信パケットに関する情報に応答して、ＶＰＮゲートウェイコンピュータ装置へ送信する。これらのさらに別の実施例では、ＶＰＮアプリケーションは、受信した固有のソースポートを採用して、周辺機器から、未変更の外部送信パケットに関連付けられた送信先ポートと送信先アドレスを検索する。その後、ＶＰＮアプリケーションは、受信したアドレス情報を、変更した外部送信パケットとともに、ＶＰＮゲートウェイコンピュータ装置へ送信する。一部の実施例では、ＶＰＮアプリケーションは、本来の送信先アドレスに接続して、パケットを送信先へ送信する。
【０１２１】
ある実施例では、ＶＰＮアプリケーションは、ＶＰＮゲートウェイコンピュータ装置へのＳＳＬトンネルを確立する。ＶＰＮアプリケーションは、外部へ送信するパケットを、ＳＳＬトンネルを介してＶＰＮゲートウェイコンピュータ装置へ送信することがある。この実施例では、ＶＰＮアプリケーションは、周辺機器から受信した外部送信パケットに関連付けられた送信先アドレスに応答して、ＳＳＬトンネルを確立することがある。
【０１２２】
一部の実施例では、デバイス上のファームウェアにより、数種類の機能が有効になる。これらのある実施例では、ファームウェアは、デバイスの種類を、複合型ＵＳＢ大容量のストレージおよびネットワークデバイスを組み合わせたデバイスとして、報告する。これらの別の実施例では、ファームウェアは、アプリケーションを格納して、起動する。これらのアプリケーションは、暗号化およびトンネル管理ロジックおよびユーザーアプリケーション（電子メールまたはソフトフォンなど）、エンドユーザー識別（信用証明またはトークン）、アプリケーションが自動的に起動されるａｕｔｏｒｕｎ．ｉｎｆファイル、および、エンドユーザーアプリケーションデータ（電子メールのｐｓｔファイル）を含むが、これらに限定されない。さらに別の実施例では、ファームウェアは、周辺機器へ送信される外部へ送信されるＩＰパケットが、クライアントコンピュータに対して、受信ＩＰパケットとして識別され、ホストオペレーティングシステムへ、別のポートへ送り戻されるようなＲ−ＮＤＩＳループバックを実装する。外部送信パケットを受信パケットとしてマークすることにより、周辺機器は、パケットをＶＰＮアプリケーションに送信することができ、パケットが暗号化されずにコンピュータから出て行くことを防止する。パケットをＶＰＮアプリケーションに強制的に送信することは、パケットをＶＰＮゲートウェイコンピュータ装置に送信して、パケットの本来の送信先へ送信することになり、パケットが安全なやり方で本来の送信先へ送信されることを確実にする。
【０１２３】
別の実施例では、周辺機器のファームウェアは、固有なトークンが認証しているＶＰＮゲートウェイコンピュータ装置と同期して、タイムリーに生成されるようなトークンソフトウェアを実装する。周辺機器は、ＶＰＮゲートウェイコンピュータ装置との認証トンネルを確立することがある。ＶＰＮゲートウェイコンピュータ装置は、周辺機器の大容量ストレージに格納されたファイルからトークンを読み出すことができる。ホストＶＰＮトンネルロジックは、トークンを呼び出して、認証要素として、ＶＰＮゲートウェイコンピュータ装置にトークンを送信することがある。
【０１２４】
ここで図９を参照すると、ブロック図は、パケットをゲートウェイコンピュータ装置にルーティングするためのシステムのある実施例を表す。システムは、装置９００とクライアントコンピュータ装置９２０を含む。簡単に要約すると、装置９００は、ルーティング要素９０２、受信機９０４、送信機９０６、パケット変換機９０８、ＶＰＮアプリケーション９１０、ポート転送アプリケーション９１２およびストレージ要素９１４を含む。クライアントコンピュータ装置９２０は、カーネル９３２、ルーティングテーブル９３０、パケット９２８、物理的ネットワークインターフェイスカード（ＮＩＣ）９３６、および、リモートＮＤＩＳ（Ｒ−ＮＤＩＳ）ドライバ９３８を含む。
【０１２５】
クライアントコンピュータ装置９２０は、ルーティングテーブル９３０、パケット９２８、物理的ＮＩＣ９３６、およびリモートＮＤＩＳドライバ９３８を備える。一部の実施例では、クライアントコンピュータ装置９２０は、さらに、クライアントコンピュータ装置９２０と装置９００の間の通信を可能にするデバイスドライバを備える。これらのある実施例では、デバイスドライバは、ＵＳＢ（ユニバーサルシリアルバス）装置のリモートＮＤＩＳドライバを備えることがある。
【０１２６】
ある実施例では、装置９００は、クライアントコンピュータ装置９２０上の物理的ＮＩＣ９３６に接続する。物理的ＮＩＣ９３６はＵＳＢカードのことがある。その他の実施例では、物理的ＮＩＣ９３６は、ファイアウォールカードのような、高速のデータ転送をサポートし、ＩＥＥＥ１３９４標準に準拠する外部バスである。その他の実施例では、物理的ＮＩＣ９３６は、小型のコンピュータシステムインターフェイス（ＳＣＳＩ）カードである。
【０１２７】
まだ図９を参照すると、装置９００は、クライアントコンピュータ装置９２０と通信し、ルーティング要素９０２、受信機９０４、送信機９０６、パケット変換機９０８、ＶＰＮアプリケーション９１０およびストレージ要素９１４を備える。ある実施例では、装置９００は周辺機器である。一部の実施例では、装置９００は、大容量ストレージデバイスおよびネットワークデバイスとして機能するユニバーサルシリアルバス複合型デバイスである。これらのある実施例では、装置９００はストレージ要素９１４を含むので、装置９００は大容量のストレージデバイスとして機能する。ストレージ要素９１４は、ＶＰＮアプリケーション９１０のようなクライアントコンピュータ装置９２０上で稼働するアプリケーションを格納することがある。
【０１２８】
本発明のある実施例では、装置９００は、ＵＳＢ周辺機器の場合があり、大容量のストレージの機能のあるデバイスとして認識される複合型ＵＳＢデバイスとして操作する。図９の影として表示されているレポート実行要素９１６は、装置９００に含まれることがあり、装置９００は、ＳＣＳＩ問い合わせコマンドに応答して、ＳＣＳＩ応答データ内に含まれるフラッグのような、取り外し可能な媒体装置設定を変更することにより、クライアントコンピュータ装置９２０に対して、大容量ストレージデバイスまたはネットワークデバイスとして識別されることがある。バイト１（０からインデックスされる）のビット７は、取り外し可能な媒体ビット（ＲＭＢ；Ｒｅｍｏｖａｂｌｅ  Ｍｅｄｉａ  Ｂｉｔ）である。ゼロに設定されたＲＭＢは、デバイスは取り外し可能な媒体装置ではないことを示す。１つのＲＭＢは、装置は取り外し可能な媒体装置であることを示す。ストレージ要素９１４のような装置９００の大容量ストレージセクションは、クライアントコンピュータ装置９２０上にインストールしなくても、ホストオペレーティングシステムのメモリスペース内で起動して実行するリモートアクセスソフトウェアのホスト側に必要なファイルを含むことがある。装置９００は、クライアントコンピュータ装置９２０上のファイルの実行を開始するオペレーティングシステムを特定するａｕｔｏｒｕｎ．ｉｎｆのようなファイルを使用して、ソフトウェアを配備することがある。
【０１２９】
装置９００が複合型特徴を持つ実施例では、装置９００は、最初は、取り外し可能な媒体の大容量ストレージ機能として見えることがあり、ＶＰＮアプリケーション９１０のポート転送アプリケーション９１２を起動するａｕｔｏｓｔａｒｔ．iｎｆを使用することがある。ポート転送アプリケーション９１２は、クライアントコンピュータ装置９２０のユーザーにログインダイアログを表示することがあり、ユーザー信用証明を収集する。ある実施例では、ポート転送アプリケーション９１２は、ＶＰＮゲートウェイコンピュータ装置９４０とＳＳＬトンネルを確立することがあり、ＶＰＮゲートウェイコンピュータ装置９４０に、装置９００上の大容量のストレージセクションから読み出されることがある、認証の信用証明、証明またはトークンを提示する。
【０１３０】
ＶＰＮゲートウェイコンピュータ装置９４０があるネットワークに送信されるパケットに対して、装置９００は、固有のソースポート番号を生成して、固有のソースポート番号をパケット９２８の送信先アドレスにマッピングする。その後、装置９００は、パケット９２８を書き換えて、パケット９２８をクライアントコンピュータ装置９２０の送信先アドレスとポート転送アプリケーション９１２により監視されるクライアントコンピュータ装置９２０上のポートに向かわせる。また、書き換えられたパケット９２８の固有なソースポート番号を含む。装置９００は、書き換えられたパケット９２８をクライアントコンピュータ装置９２０に送信することがある。クライアントコンピュータ装置９２０は、書き換えられたパケット９２８を、ＶＰＮアプリケーション９１０により監視されるポートに転送する。
【０１３１】
装置９００は、電子メールアプリケーションのような、クライアントコンピュータ装置９２０上で実行されるアプリケーションをストレージ要素９１４に格納することがある。一部の実施例では、本発明はサンドボクシングを有効にする。これらのある実施例では、装置９００はクライアントコンピュータ装置９２０上の大容量ストレージが生成されて、ＶＰＮセッション中に使用されるデータのストレージに安全でなければ、装置９００はアプリケーションデータをホストする。これらの別の実施例では、本発明は、装置９００を任意のクライアントコンピュータ装置９２０を繋ぎ、セッションデータが自動的に利用可能になるメカニズムを提供する。さらに、装置９００上のアプリケーションおよび実行データの格納は、ユーザーが安全ではないクライアントコンピュータ装置９２０上に機密データを残すことを防止することがある。
【０１３２】
その他の実施例では、装置９００がクライアントコンピュータ装置９２０が安全ではなく、ＶＰＮゲートウェイコンピュータ装置９４０が存在するネットワークへのアクセスを受信すべきではないと決定すれば、装置９００は、リモートアクセスを獲得する操作のリモートフレームバッファ（またはシンクライアント）モードを起動するためのプラットフォームとして機能する場合がある。これらのある実施例では、リモートアクセスのセッション状態は、装置９００上に保存でき、その他の場所から再開できる。さらに別の実施例では、装置９００は、オーディオ装置として機能することがあり、テレフォニーロジックがポート転送アプリケーションで実行し、装置がＩ／Ｏメカニズムとして簡単に機能する場合、ソフトフォン機能をクライアントコンピュータ装置に提供することもある。
【０１３３】
ルーティング要素９０２は、クライアントコンピュータ装置９２０上のルーティングテーブル９３０に変更を実施する。ある実施例では、ルーティング要素９０２は、クライアントコンピュータ装置９２０がすべての外部送信パケットを装置９００に再ルーティングするように、ルーティングテーブルを変更する。別の実施例では、ルーティング要素９０２は、図９で影に表示されているレポート実行要素９１６が装置９００をクライアントコンピュータ装置９２０に対してネットワーク装置として識別した後、検索した変更をクライアントコンピュータ装置へ送信することにより、変更を実施する。
【０１３４】
一部の実施例では、ルーティング要素９０２は、ルーティングテーブル９３０に行う複数の変更を検索する。これらのある実施例では、ルーティング要素９０２は、ＶＰＮゲートウェイコンピュータ装置９４０から変更を検索することがある。これらの別の実施例では、ＶＰＮアプリケーション９１０は、ＶＰＮゲートウェイコンピュータ装置９４０から変更を検索することがある。これらのさらに別の実施例では、ＶＰＮゲートウェイコンピュータ装置９４０は、ルーティングテーブルの変更を検索する前に、装置９００に対する認証を要求することがある。
【０１３５】
一部の実施例では、ルーティング要素９０２は、変更をストレージ要素９１４から検索する。これらのある実施例では、ＶＰＮアプリケーション９１０が変更をストレージ要素９１４上に格納した後、ルーティング要素９０２は変更を検索する。
【０１３６】
装置９００がレポーティング要素９１６を含む実施例では、レポート実行要素９１６は、クライアントコンピュータ装置９２０と通信して、装置９００をクライアントコンピュータ装置９２０に識別することがある。一部の実施例では、レポーティング要素９１６は、Ｒ−ＮＤＩＳドライバ９３８と通信する。ある実施例では、レポーティング要素９１６は、装置９００を大容量ストレージデバイスとして識別する。レポート実行要素９１６は、装置９００がクライアントコンピュータ装置にまず接続すると、この識別を行うことがある。
【０１３７】
一部の実施例では、レポート実行要素９１６は、装置９００をネットワークデバイスとして識別する。これらのある実施例では、レポート実行要素９１６は、ルーティングテーブル９３０への変更が検索され、ストレージ要素９１４に格納された後、識別を行う。これらの別の実施例では、ルーティング要素９０２は、レポーティング要素９１６が、クライアントコンピュータ装置９２０に対して、ネットワークデバイスとして装置９００を識別した後、クライアントコンピュータ装置９２０に、検索したルーティングテーブルに送信する。さらに別の実施例では、クライアントコンピュータ装置９２０は、装置９００が従来のネットワーク装置であるように、ルーティングテーブルの変更を実装する。
【０１３８】
受信機９０４は、クライアントコンピュータ装置９２０からパケットを受信する。ある実施例では、受信機９０４は、ルーティング要素９０２により、ルーティングテーブル９３０に行われた変更に応答して、外部送信パケットを受信する。
【０１３９】
送信機９０６は、受信機９０４とパケット変換機９０８と通信し、外部送信パケットに関する情報をＶＰＮアプリケーション９１０に送信する。ある実施例では、情報は、パケット変換機９０８により生成され、外部送信パケット９２０に関連付けられた固有のポートを備える。別の実施例では、情報は、外部送信パケットの固有のソースと外部送信パケットの送信先アドレスとの間のマッピングを備える。さらに別の実施例では、送信機９０６は、書き換えた外部送信パケットをＶＰＮアプリケーション９１０に送信する。さらに別の実施例では、送信機９０６は、周辺機により生成された第二のパケットを、ＶＰＮアプリケーション９１０により監視されるポートに配信するために、クライアントコンピュータ装置９２０に送信する。
【０１４０】
パケット変換機９０８は、受信機９０４と送信機９０６と通信し、外部送信パケット９２８上のアドレス情報を書き換える。一部の実施例では、パケット変換機９０８は、外部送信パケット９２８上の送信先アドレスを、ＶＰＮアプリケーション９１０に関連付けられた送信先アドレスと送信先ポートに書き換える。ある実施例では、送信先アドレスと送信先ポートを書き換えることにより、外部送信パケットをＶＰＮアプリケーション９１０に送信できる。一部の実施例では、パケット変換機９０８は、外部送信パケット９２８の情報を、変更した外部送信パケット９２８の情報に関連付けるマッピングテーブルを生成する。ある実施例では、マッピングテーブルは、外部送信パケット９２８の送信先アドレスと送信先ポートを、変更された外部送信パケット９２８に格納された固有のソースポートを関連付ける。これらの別の実施例では、マッピングテーブルは、本来のソースアドレス、本来のソースポート、本来の送信先アドレス、本来の送信先ポート、書き換えられたパケット上のソースポートして使用される固有のマッピングキーなどの情報を含むことがある。
【０１４１】
ある実施例では、パケット変換機９０８は、受信機９０４と送信機９０６と通信し、図８の上記の第二のパケットを生成する。別の実施例では、パケット変換機９０８は、図８で上記された固有のソースポートを生成する。
【０１４２】
パケット変換機９０８は、外部送信パケット９２０上の送信先アドレスと送信先ポートを、ＶＰＮアプリケーション９１０に関連付けられた送信先アドレスと送信先ポートに置換する。ある実施例では、パケット変換機９０８は、外部送信パケット９２８上の送信先アドレスを、ＶＰＮアプリケーション９１０が実行するクライアントコンピュータ装置９２０のＩＰアドレスで書き換える。別の実施例では、パケット変換機９０８は、外部送信パケット９２８上の送信先ポートを、ＶＰＮアプリケーション９１０により監視される送信先ポートで書き換える。
【０１４３】
一部の実施例では、装置９００は、ＶＰＮアプリケーション９１０を含む。ＶＰＮアプリケーションは、ポート転送アプリケーション９１２を含むことがある。これらのある実施例では、ＶＰＮアプリケーション９１０は、ストレージ要素９１４に格納される。これらの別の実施例では、ＶＰＮアプリケーション４１０は装置９００上に格納されているが、クライアントコンピュータ装置９２０上で稼働する。この実施例では、ＶＰＮアプリケーション９１０は、クライアントコンピュータ装置９２０上にソフトウェアをインストールする必要なく、パケット９２８の安全な送信を提供する。
【０１４４】
一部の実施例では、ＶＰＮアプリケーション９１０は、クライアントコンピュータ装置９２０から、書き換えられた外部送信パケット９２８を受信する。これらのある実施例では、ＶＰＮアプリケーション９１０は、本来の送信先アドレスを取得するために、書き換えられた外部送信パケット９２８上で固有のソースアドレスを使用する。ＶＰＮアプリケーション９１０は、外部送信パケット９２８上の固有なソースアドレスを本来の送信先アドレスに関連させるために、装置９００上のストレージ要素９１４に格納されたマッピングテーブルに相談することがある。これらの別の実施例では、ＶＰＮアプリケーション９１０は、外部送信パケット９２８と本来の送信先アドレスを、ＶＰＮゲートウェイコンピュータ装置９４０に送信する。さらに別の実施例では、ＶＰＮゲートウェイコンピュータ装置９４０は、外部送信パケット９２８と本来の送信先アドレスを、ＶＰＮアプリケーション９１０から受信し、外部送信パケット９２０を本来の送信先アドレスへ転送する。
【０１４５】
一部の実施例では、ポート転送アプリケーション９１２が、ＶＰＮアプリケーション９１０の機能を提供する。これらのある実施例では、ポート転送アプリケーション９１２が、ＶＰＮゲートウェイコンピュータ装置９４０から、ルーティングテーブル９３０への変更を検索する。これらの別の実施例では、ポート転送アプリケーション９１２が、装置９００をＶＰＮゲートウェイコンピュータ装置９４０に対する認証する。さらに別の実施例では、ポート転送アプリケーション９１２は、ルーティングテーブル９３０への変更をストレージ要素９１４に格納する。さらに別の実施例では、ポート転送アプリケーション９１２は、固有のソースポートを使用して、外部送信パケット９２８の本来の送信先を決定し、本来の送信先アドレスと書き換えた外部送信パケット９２８をＶＰＮゲートウェイコンピュータ装置９４０に転送する。
【０１４６】
ある実施例では、ポート転送アプリケーション９１２は、ＶＰＮゲートウェイコンピュータ装置９４０に認証の信用証明を提示後に、ルーティングルールを取得する。装置９００は、ポート転送アプリケーション９１２からルーティングルールを取得する。一部の実施例では、ポート転送アプリケーション９１２は、ルーティングテーブルをストレージ要素９１４上に格納する。
【０１４７】
ＶＰＮトンネルが確立され、ＶＰＮゲートウェイコンピュータ装置９４０があるネットワークのルーティング情報がＶＰＮゲートウェイコンピュータ装置９４０から検索されると、ＶＰＮアプリケーション９１０は、大容量媒体装置のストレージ要素９１４上にファイルを作成することがある。ある実施例では、ファイルは検索したルーティング情報を含む。ファイルの作成は、レポート実行要素９１６に、装置９００をクライアントコンピュータ装置９２０に対して、クライアントコンピュータ装置９２０に接続されたＲ−ＮＤＩＳ機能を備えたＵＳＢ装置として識別されなければならないことを示すことがある。この時点で、クライアントコンピュータ装置９２０のオペレーティングシステムは、装置９００からのＤＨＣＰ  ＩＰアドレスを（Ｒ−ＮＤＩＳ経由で）交渉し、装置９００から与えられた情報を基本にしてそのルーティングテーブルを調整するが、この情報は、ポート転送アプリケーション９１２により作成されたファイルから派生することがある。
【０１４８】
装置９００は、Ｒ−ＮＤＩＳにカプセル化されたＩＰパケットを使用して、ＶＰＮアプリケーション９１０上のポート転送アプリケーション９１２と通信することがある。また、装置９００は、ステータスパケットをポート転送アプリケーション９１２に送信することもある。これらのステータスパケットは、装置９００により格納された状態やデータ構造に関する情報を伝達することがある。
【０１４９】
一部の実施例では、ポート転送アプリケーション９１２と通信するために、装置９００は、ポートを、ポート転送プリケーション９１２に関連付けられた制御ポートと固有のＩＰアドレスに送信する。これらのある実施例では、装置９００は、固有のソースポートを含むパケットを送信し、ポート転送アプリケーション９１２に、装置９００が固有の送信先アドレスのあるパケットを受信したことと、装置９００が固有の送信先アドレスにマッピングする固有のソースポートを生成したことを示す。これらの別の実施例では、装置９００は、装置９００が固有のソースポートと固有の送信先アドレスの間のマッピングを削除したことを示すパケットをポート転送アプリケーション９１２に転送する。さらに別の実施例では、装置９００は、アドレス解決プロトコルリクエストのようなリクエストに応答するための命令をポート転送アプリケーション９１２からリクエストするパケットを転送する。
【０１５０】
その他の実施例では、ポート転送アプリケーション９１２は、通信パケットを装置９００に転送する。これらのある実施例では、ポート転送アプリケーション９１２は、装置９００に、ポート転送アプリケーション９１２がＶＰＮゲートウェイコンピュータ装置９４０への接続を正常に開いたことを示すパケットを送信する。これらの別の実施例では、ポート転送アプリケーション９１２は、装置９００に、ポート転送アプリケーション９１２がＶＰＮゲートウェイコンピュータ装置９４０への接続を開くことに失敗したことを示すパケットを送信する。
【０１５１】
一部の実施例では、ポート転送アプリケーション９１２は、以下の複数のポート上のパケットをリッスンする。ＵＤＰ  Ｔｒａｆｆｉｃ  Ｐｏｒｔ、ＴＣＰ  Ｔｒａｆｆｉｃ  Ｐｏｒｔ、ＩＣＭＰ  Ｔｒａｆｆｉｃ  ＰｏｒｔおよびＣｏｎｔｒｏｌ  Ｐｏｒｔ。ポート転送アプリケーション９１２が、ＵＤＰトラフィックポートまたはＴＣＰトラフィックポートのようなトラフィックポートからパケットを受信すると、ポート転送アプリケーション９１２は、書き換えられたパケット９２８の固有のソースポート番号を使用して、本来の送信先アドレスを識別する。その後、ポート転送アプリケーション９１２が、本来の送信先とともに書き換えられたパケット９２８をＶＰＮゲートウェイコンピュータ装置９４０に送信することがある。ある実施例では、ポート転送アプリケーション９１２は、本来の送信先とともに書き換えられたパケット９２８をＳＳＬ  ＶＰＮトンネルを介してＶＰＮゲートウェイコンピュータ装置９４０に送信する。別の実施例では、ポート転送アプリケーション９１２は、送信前に、書き換えられたパケット９２８を暗号化する。
【０１５２】
一部の実施例では、ポート転送アプリケーション９１２が、ＶＰＮゲートウェイコンピュータ装置９４０からパケットを受信する。これらのある実施例では、ポート転送アプリケーションは、装置９００により監視されるポートにパケットを送信する。装置９００は、パケットをユーザーアプリケーションにルーティングするために、受信したパケットをクライアントコンピュータ装置９２０に送信することがある。
【０１５３】
一部の実施例では、ゲートウェイコンピュータ装置は、プライベートネットワークからプライベートネットワークにリモートでアクセスしているクライアントコンピュータ装置に転送されるパケットをセキュアにすることにより、プライベートネットワークを保護する。プライベートネットワークに対するセキュリティの脅威を最小限に抑えるために、ゲートウェイコンピュータ装置は、プライベートネットワーク上の保護されたシステムからクライアントコンピュータ装置に送信されるパケットを傍受し、検査し、セキュアにすることがある。これらのある実施例では、ゲートウェイコンピュータ装置は、保護されたシステムおよびプライベートネットワークのＩＰアドレスをマスク化するために、ＮＡＴを使用する仮想ＶＰＮゲートウェイコンピュータである。ＮＡＴが有効なＶＰＮゲートウェイコンピュータ装置は、プライベートネットワークからクライアントコンピュータ装置上の動的ポートへのトラフィックの送信をよりセキュアにするパケットトラフィックを監視およびセキュアにすることがある。ＶＰＮゲートウェイコンピュータ装置は、セキュアなリソースから発信されて、クライアントコンピュータ装置にアドレス指定されているパケットトラフィックのためにネットワークトラフィックを監視することがある。このＶＰＮゲートウェイコンピュータ装置がこのトラフィックを識別すると、ＶＰＮゲートウェイコンピュータ装置は、クライアントコンピュータ装置への送信のためにパケットをセキュアにすることがある。
【０１５４】
ここで図１０を参照すると、フロー図は、ゲートウェイコンピュータ装置からクライアントコンピュータ装置へパケットをルーティングするための方法において取られるステップのある実施例を表す。簡単に要約すると、プラベートＩＰアドレスは、パブリックＩＰアドレスを有するクライアントコンピュータ装置に関連付けられる（ステップ１００２）。クライアントコンピュータ装置のプライベートＩＰアドレスにアドレス指定されたパケットがキャプチャされる（ステップ１００４）。パケットにポリシーが適用される（ステップ１００６）。パケットは、パケットへのポリシー適用に応答して、クライアントコンピュータ装置のパブリックＩＰアドレスに転送される（ステップ１００８）。
【０１５５】
プラベートＩＰアドレスは、パブリックＩＰアドレスを有するクライアントコンピュータ装置に関連付けられる（ステップ１００２）。一部の実施例では、それぞれの接続しているクライアントコンピュータ装置は、プライベートＩＰアドレスに割り当てられる。これらのある実施例では、プライベートＩＰアドレスは、セキュリティ上から、クライアントコンピュータ装置にはわからない。クライアントコンピュータ装置はプライベートＩＰアドレスを持たないので、クライアントコンピュータ装置に障害があっても、プライベートネットワークはまだ保護されている。これらの別の実施例では、プライベートＩＰアドレスは、ゲートウェイコンピュータ装置の後ろ側のプライベートネットワーク内のアドレスである。一部の実施例では、プライベートＩＰアドレスをクライアントコンピュータ装置に関連付けることにより、ゲートウェイコンピュータ装置の後ろ側のプライベートネットワークに対するセキュリティリスクが最小限に抑えられる。
【０１５６】
クライアントコンピュータ装置のプライベートＩＰアドレスにアドレス指定されたパケットがキャプチャされる（ステップ１００４）。ある実施例では、アプリケーションは、クライアントコンピュータ装置に送信するためのパケットを生成する。一部の実施例では、アプリケーションはゲートウェイコンピュータ装置上で稼働する。その他の実施例では、アプリケーションはゲートウェイコンピュータ装置上のプライベートネットワーク上にあるマシンで稼働する。ある実施例では、パケットがクライアントコンピュータ装置にルーティングされる前に、パケットがキャプチャされる。
【０１５７】
一部の実施例では、クライアントコンピュータ装置上のパケットは、ＮＤＩＳドライバまたはフィルタのようなカーネルモードで稼働するアプリケーションによりキャプチャされる。これらのある実施例では、カーネルモードで稼働しているアプリケーションは、パケットをユーザーモードで稼働しているアプリケーションに転送する。カーネルレベルでパケットをキャプチャして、ユーザーモードからパケットを送信することにより、パケットを作成したアプリケーションがパケットが送信されるネットワークのセキュリティポリシーを必ず満たすように、トラフィック上により高いレベルのアクセス制御を適用する機能が提供される。
【０１５８】
一部の実施例では、ゲートウェイコンピュータ装置上のフィルタは、クライアントコンピュータ装置からゲートウェイコンピュータ装置に送信されるレイヤー２  Ｅｔｈｅｒｎｅｔ（登録商標）  Ｍａｃフレームをキャプチャする。これらのある実施例では、ユーザーモードで稼働しているクライアントコンピュータ装置のクライアントアプリケーションは、クライアントコンピュータ装置上のルーティングテーブルを変更しない。代わりに、クライアントコンピュータ装置上のフィルタドライバが、メディアアクセス制御（ＭＡＣ）層で、ネットワークレベルより下位のトラフィックをキャプチャする。クライアントコンピュータ装置のフィルタドライバが、レイヤー２  Ｅｔｈｅｒｎｅｔ（登録商標）  ＭＡＣフレームをそのままキャプチャして、セキュアなＳＳＬ  ＶＰＮトンネルを介し、ゲートウェイコンピュータ装置に送信する。これらの実施例では、ゲートウェイコンピュータ装置上のフィルタが、パケットのキャプチャに加えて、Ｅｔｈｅｒｎｅｔ（登録商標）  Ｍａｃフレームをキャプチャする機能を提供する。
【０１５９】
一部の実施例では、パケットはキャプチャされた後に検査される。これらのある実施例では、パケットの送信先アドレスが検査される。送信先アドレスがクライアントコンピュータ装置に関連付けられたプライベートＩＰアドレスであれば、パケットは、ゲートウェイコンピュータ装置上でユーザーモードで稼働しているゲートウェイコンピュータ装置のアプリケーションに送信先を変更することがある。
【０１６０】
パケットにポリシーが適用される（ステップ１００６）。ある実施例では、管理プロセスがパケットにポリシーを適用する。別の実施例では、ポリシーエンジンがパケットにポリシーを適用する。適用されたポリシーは、受信したパケットに対しアクセスコントロールリストマッチングやディープパケットインスペクションのような一連のセキュリティチェックの実行を要求することがある。
【０１６１】
パケットは、パケットへのポリシー適用に応答して、クライアントコンピュータ装置のパブリックＩＰアドレスに転送される（ステップ１００８）。パケットがポリシーを満たしたら、ゲートウェイコンピュータ装置は、パケットをクライアントコンピュータ装置に送信することを決定することができる。ある実施例では、パケットは、パケットを生成しているアプリケーションの本来のソースアドレスに再び関連付けられる。パケットはクライアントコンピュータ装置に転送される。一部の実施例では、パケットは、セキュアなＳＳＬソケットからクライアントコンピュータ装置に送信される。
【０１６２】
ここで図１１を参照すると、ブロック図はゲートウェイコンピュータ装置のある実施例を表す。簡単に要約すると、ゲートウェイコンピュータ装置１１４０はカーネルスペース１１４２とアプリケーションスペース１１５０を含む。カーネル１１４２は、キャプチャドライバ１１４４と送信機１１４８を含む。カーネル１１４２は外部送信パケット１１４６を含むことがある。アプリケーションスペース１１５０は、ポリシーエンジン１１５４、アドレス指定要素１１５６および管理プロセス１１６０を含む、ゲートウェイコンピュータ装置のアプリケーション１１５２を含む。アプリケーションスペース１１５０はアプリケーション１１５８を含むことがある。
【０１６３】
ゲートウェイコンピュータ装置１１４０は、カーネル１１４２で稼働するキャプチャドライバ１１４４を含む。一部の実施例では、ゲートウェイコンピュータ装置１１４０のオペレーティングシステムは受信するＲＡＷ  ＩＰレイヤーパケットの傍受を簡単には許可しない。これらのある実施例では、ゲートウェイコンピュータ装置１１４０のカーネルモードで操作しているキャプチャドライバ１１４４は、リモートコンピュータ装置に送信予定のすべてのイーサネット（登録商標）パケットをキャプチャして、パケットをゲートウェイコンピュータ装置１１４０のユーザーモードで操作している管理プロセス１１６０にもう一度転送する。
【０１６４】
一部の実施例では、ゲートウェイコンピュータ装置１１４０の後ろ側にあるプライベートネットワーク上にある保護されたサーバー１１８０は、クライアントコンピュータ装置１１２０に送信するためのパケットを生成する。これらのある実施例では、保護されたサーバー１１８０が、パケットを、ゲートウェイコンピュータ装置に送信して、ゲートウェイコンピュータ装置はクライアントコンピュータ装置に送信する。これらの別の実施例では、生成したパケットはイーサネット（登録商標）フレームとして送信される。この実施例では、キャプチャドライバ１１４４は、イーサネット（登録商標）フレームがゲートウェイコンピュータ装置１１４０に到達するときに、イーサネット（登録商標）フレームをキャプチャすることがある。キャプチャドライバ１１４４がイーサネット（登録商標）フレームをキャプチャする実施例では、キャプチャドライバ１１４４は、イーサネット（登録商標）フレームをパケットではなくフレームとしてゲートウェイコンピュータ装置アプリケーション１１５２に転送する。
【０１６５】
一部の実施例では、キャプチャドライバ１１４４は、ゲートウェイコンピュータ装置アプリケーション１１５２から、クライアントコンピュータ装置１１２０に関連付けられたプライベートＩＰアドレスの送信先アドレスとともに受信したすべてのパケットを通知するリクエストを受信する。これらのある実施例では、キャプチャドライバ１１４４は、適切なローＩＰソケットから、ゲートウェイコンピュータ装置アプリケーション１１５２に到達するすべてのイーサネット（登録商標）フレームを転送する。クライアントコンピュータ装置１１２０から届くすべての応答パケットは（アクティブなＦＴＰやＳＩＰのようなアクティブプロトコルでは典型的であるが、クライアントコンピュータ装置１１２０により動的に選択されたポートの場合でも）、キャプチャドライバ１１４４によりキャプチャされ、ゲートウェイコンピュータ装置１１４０とその特定のクライアントコンピュータ装置１１２０の間のＳＳＬトンネルを管理する、ゲートウェイコンピュータ装置アプリケーション１１５２の管理プロセス１１６０に転送される。
【０１６６】
一部の実施例では、キャプチャドライバ１１４４は、ルーティング前に外部へ送信されるネットワークフレームをすべて検査する。これらのある実施例では、外部へ送信されるネットワークフレームは、クライアントコンピュータ装置１１２０に送信するために、保護されたサーバー１１８０によりゲートウェイコンピュータ装置１１４０に送信されたフレームである。これらの別の実施例では、ゲートウェイコンピュータ装置１１４０上のアプリケーション１１５８は、クライアントコンピュータ装置１１２０に送信するために、外部へ送信されるネットワークフレームを生成する。ルーティング前にすべてのパケットを検査することにより、キャプチャドライバ１１４４はセキュリティとパフォーマンスを強化し、オペレーティングシステムのルーティングテーブルのエントリが矛盾するリスクを最小限に抑える。ルーティング前にパケットを検査することにより、基底のネットワークオペレーティングシステムに干渉することなく、パケットのフローを制御する能力を高める。キャプチャドライバ１１４４は、ルーティング前にすべてのパケットを検査し、フィルタする可能性が高いので、転送の決定は、ルーティングテーブルを使用せずに行うことができる。
【０１６７】
ゲートウェイコンピュータ装置１１４０は、アプリケーションを実行するアプリケーションスペース１１５０、およびゲートウェイコンピュータ装置のアプリケーション１１５２を含む。ある実施例では、ゲートウェイコンピュータ装置アプリケーション１１５２は、アプリケーションスペース１１５０のユーザーモードで操作する。一部の実施例では、ゲートウェイコンピュータ装置アプリケーション１１５２はポリシーエンジン１１５４、アドレス指定要素１１５６および管理プロセス１１６０を含む。
【０１６８】
ある実施例では、管理プロセス１１６０がキャプチャドライバ１１４４を管理する。別の実施例では、管理プロセス１１６０は、キャプチャされたフレームまたはキャプチャされたパケットをキャプチャドライバ１１４４から受信する。一部の実施例では、管理プロセス１１６０はパケットにポリシーを適用する。その他の実施例では、管理プロセス１１６０は、パケットの検査およびポリシー適用のために、キャプチャしたパケットまたはフレームをポリシーエンジン１１５４に転送する。
【０１６９】
ある実施例では、クライアントコンピュータ装置１１２０がゲートウェイコンピュータ装置１１４０に接続すると、ゲートウェイコンピュータ装置１１４０が、ＵＤＰ、ＩＰおよびＩＣＭＰなどのその他のプロトコル用に複数のローＩＰソケットを作成する。管理プロセス１１６０は、パケットが、クライアントコンピュータ装置１１２０にアドレス指定された保護されたサーバー１１８０からゲートウェイコンピュータ装置１１４０に到達すると、キャプチャドライバ１１４４からの通知を要求することがある。キャプチャドライバ１１４４がパケットをキャプチャすると、キャプチャドライバ１１４４はパケットを複数のソケットの１つに送信することがある。
【０１７０】
ある実施例では、ポリシーエンジン１１５４はキャプチャしたパケットまたはキャプチャしたフレームを検査する。別の実施例では、ポリシーエンジン１１５４はキャプチャしたパケットまたはキャプチャしたフレームにポリシーを適用する。一部の実施例では、ポリシーはアクセス制御ポリシーである。その他の実施例では、ポリシーの適用により、パケットが、保護されたサーバー１１８０のような信頼できるサーバーから送信されているかどうかを決定する。一部の実施例では、ポリシーエンジン１１５４は、構成設定をキャプチャドライバ１１４４に送信する。
【０１７１】
ある実施例では、ゲートウェイコンピュータ装置アプリケーション１１５２は、アドレス指定要素１１５６を含む。アドレス指定要素１１５６は、プライベートＩＰアドレスをクライアントコンピュータ装置１１２０に関連付けることがある。ある実施例では、プライベートＩＰアドレスは、クライアントコンピュータ装置１１２０に、ゲートウェイコンピュータ装置１１４０の後ろ側にあるプライベートネットワーク上のアドレスを提供することがある。
【０１７２】
一部の実施例では、アドレス指定要素１１５６は、ネットワークアドレス変換の機能を提供する。これらのある実施例では、アドレス指定要素１１５６は、プライベートＩＰアドレスをパブリックＩＰアドレスに変換する。この種類の変換は、パケットを保護されたサーバー１１８０からクライアントコンピュータ装置１１２０に送信する前、ポリシーエンジン１１５４がクライアントコンピュータ装置１１２０へのパケットの送信を承認した後に、パケットに発生することがある。
【０１７３】
その他の実施例では、クライアントコンピュータ装置１１２０がパケットをゲートウェイコンピュータ装置１１４０に送信するとき、アドレス指定要素１１５６により、クライアントコンピュータ装置１１２０に関連付けられたパブリックＩＰアドレスから、クライアントコンピュータ装置１１２０に関連付けられたプライベートＩＰアドレスにパケット上のソースアドレスの変換が可能になる。これらのある実施例では、クライアントコンピュータ装置は関連付けられたプライベートＩＰアドレスを知らないので、変換が発生する。
【０１７４】
ポリシーエンジン１１５４がキャプチャしたパケットにポリシーを適用した後、ポリシーエンジン１１５４は、パケットがその本来の送信先に送信されるかもしれないことを決定することがある。ある実施例では、ポリシーエンジン１１５４は、クライアントコンピュータ装置１１２０に送信するために、パケットを送信機１１４８に転送する。別の実施例では、送信機１１４８は、まず、パケットに対しネットワークアドレス変換を実行する。一部の実施例では、送信機１１４８はネットワークアドレス変換を実行する。これらのある実施例では、送信機１１４８は、プライベートアドレスをクライアントコンピュータのパブリックＩＰアドレスに変換するために、パケットをアドレス指定要素１１５６に転送する。これらの別の実施例では、送信機１１４８はネットワークアドレス変換を完了する。
【０１７５】
ある実施例では、キャプチャドライバ１１４４は、送信機１１４８の機能を提供する。別の実施例では、ネットワークアドレス変換は、まず、ゲートウェイコンピュータ装置のアプリケーション１１５２で発生した後、パケットがキャプチャドライバ１１４４に転送されて、クライアントコンピュータ装置１１２０に送信される。
【０１７６】
送信機１１４８がパケットをクライアントコンピュータ装置１１２０に送信した後、クライアントアプリケーション３２６は、Ｉ／Ｏ制御メッセージを使用して、ゲートウェイコンピュータ装置１１４０からパケットを受信して、パケットをフィルタ３２２に転送する。その後、フィルタ３２２は、パケットを受信パケットとしてマークし、パケットを、ネットワークスタックを経由して送信先アプリケーションへ転送する。
【０１７７】
本発明は、１つまたは複数の製造品に組み込まれた１つまたは複数のコンピュータが解読可能なプログラムとして提供されることがある。製造品は、フロッピー（登録商標）ディスク、ハードディスク、コンパクトディスク、デジタル揮発性ディスク、フラッシュメモリカード、ＰＲＯＭ、ＲＡＭ、ＲＯＭまたは磁気テープのことがある。一般的に、コンピュータが解読可能なプログラムは、任意のプログラム言語に実装されることがある。使用可能な言語の一部の例には、Ｃ、Ｃ＋＋、Ｃ＃またはＪＡＶＡ（登録商標）が含まれる。ソフトウェアプログラムは、オブジェクトコードとして、１つまたは複数の製造品に格納されることがある。
【０１７８】
特定の好ましい実施例を参照しながら本発明を示し説明したが、当業者には、以下の請求により定義される本発明の精神および範囲を逸脱することなく、形態や詳細にさまざまな変更が行われてもよいことが理解される。
【図面の簡単な説明】
【０１７９】
【図１】図１は、クライアントコンピュータ装置が第一のネットワークを介してゲートウェイコンピュータ装置にアクセスするシステムを表すブロック図である。
【図２Ａ】図２Ａは、本発明に関連する有用なコンピュータの実施例を表すブロック図である。
【図２Ｂ】図２Ｂは、本発明に関連する有用なコンピュータの実施例を表すブロック図である。
【図３】図３は、クライアントコンピュータ装置とゲートウェイコンピュータ装置の間にセキュアな接続を確立するために取られるステップのある実施例を表すフロー図である。
【図４】図４は、パケットをクライアントコンピュータ装置からゲートウェイへルーティングするための方法において取られるステップのある実施例を表すフロー図である。
【図５】図５は、パケットをクライアントコンピュータ装置からゲートウェイへルーティングするためのシステムにおいて取られるステップのある実施例を表すブロック図である。
【図６】図６は、パケットにポリシーを適用するステップに応答して、パケットをゲートウェイへ送信するクライアントアプリケーションのある実施例を表すブロック図である。
【図７】図７は、フィルタリングテーブルに応答して、パケットを傍受して、パケットを送信するフィルタのある実施例を表すブロック図である。
【図８】図８は、パケットを周辺機器からＶＰＮゲートウェイへルーティングするための方法において取られるステップのある実施例を表すフロー図である。
【図９】図９は、パケットをゲートウェイへルーティングするためのシステムのある実施例を表すブロック図である。
【図１０】図１０は、パケットをゲートウェイからクライアントコンピュータ装置へルーティングするための方法において取られるステップのある実施例を表すフロー図である。
【図１１】図１１は、ゲートウェイのある実施例を表すブロック図である。
【図１】
2008507929.tif 000003
【図２Ａ】
2008507929.tif 000004
【図２Ｂ】
2008507929.tif 000005
【図３】
2008507929.tif 000006
【図４】
2008507929.tif 000007
【図５】
2008507929.tif 000008
【図６】
2008507929.tif 000009
【図７】
2008507929.tif 000010
【図８】
2008507929.tif 000011
【図９】
2008507929.tif 000012
【図１０】
2008507929.tif 000013
【図１１】
2008507929.tif 000014
【手続補正書】
【提出日】平成19年2月27日(2007.2.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
パケットをルーティングするための装置であって、
データリンク層から、プライベートネットワーク上の第一のシステムに送信される予定の第一の複数のパケットの中の１つのパケットを傍受する受信機と、
該データリンク層から、第二のネットワーク上のシステムに送信される予定の、該プライベートネットワーク上の第二のシステムから伝送される第二の複数のパケットの中の１つのパケットを傍受するフィルタと、
該受信機および該フィルタと通信し、少なくとも１つの傍受したパケットに対しネットワークアドレス変換を実行するとともに、該少なくとも１つの傍受したパケットを送信先へ送信する送信機と
を備える、装置。
【請求項２】
パブリックＩＰアドレスを有するシステムにプライベートＩＰアドレスを関連付けるアドレス指定要素をさらに備える、請求項１に記載の装置。
【請求項３】
前記フィルタおよび前記受信機と通信し、傍受したパケットにポリシーを適用するポリシーエンジンをさらに備える、請求項１に記載の装置。
【請求項４】
前記フィルタおよび前記受信機と通信し、傍受したパケットにアクセス制御リストを適用するポリシーエンジンをさらに備える、請求項１に記載の装置。
【請求項５】
前記送信機は、前記少なくとも１つの傍受したパケットを、通信トンネルを介して前記第二のネットワーク上の前記システムに送信する、請求項１に記載の装置。
【請求項６】
前記送信機は、前記少なくとも１つの傍受したパケットを、セキュアな伝送制御プロトコル（ＴＣＰ）接続を介して前記第二のネットワーク上の前記システムに送信する、請求項１に記載の装置。
【請求項７】
前記送信機は、前記少なくとも１つの傍受したパケットに対しリバースネットワークアドレス変換を実行する、請求項１に記載の装置。
【請求項８】
前記送信機は、リモートプロセスを前記第二のネットワーク上の前記システムに送信する、請求項１に記載の装置。
【請求項９】
前記受信機は、前記データリンク層から、プライベートネットワーク上の第一のシステムに送信される予定の第一の複数のリアルタイムパケットの中の１つのリアルタイムパケットを傍受することをさらに含む、請求項１に記載の装置。
【請求項１０】
前記フィルタは、前記データリンク層から、第二のネットワーク上のシステムに送信される予定の、前記プライベートネットワーク上の第二のシステムから送信される第二の複数のリアルタイムパケットの中の１つのリアルタイムパケットを傍受することをさらに含む、請求項１に記載の装置。
【請求項１１】
前記受信機は、前記データリンク層から、プライベートネットワーク上の第一のシステムに送信される予定の第一の複数のユーザーデータグラムプロトコル（ＵＤＰ）パケットの中の１つのユーザーデータグラムプロトコル（ＵＤＰ）パケットを傍受することをさらに含む、請求項１に記載の装置。
【請求項１２】
前記フィルタは、前記データリンク層から、第二のネットワーク上のシステムに送信さ
れる予定の、前記プライベートネットワーク上の第二のシステムから送信される第二の複数のユーザーデータグラムプロトコル（ＵＤＰ）パケットの中の１つのユーザーデータグラムプロトコル（ＵＤＰ）パケットを傍受することをさらに含む、請求項１に記載の装置。
【請求項１３】
パケットをルーティングするための方法であって、
（ａ）データリンク層から、プライベートネットワーク上の第一のシステムに送信される予定の第一の複数のパケットの中の１つのパケットを傍受するステップと、
（ｂ）該データリンク層から、第二のネットワーク上のシステムに送信される予定の、該プライベートネットワーク上の第二のシステムから送信される第二の複数のパケットの中の１つのパケットを傍受するステップと、
（ｃ）少なくとも１つの傍受したパケットに対しネットワークアドレス変換を実行するステップと、
（ｄ）該少なくとも１つの傍受したパケットを送信先へ送信するステップと
を含む、方法。
【請求項１４】
パブリックＩＰアドレスを有するシステムにプライベートＩＰアドレスを関連付けるステップをさらに含む、請求項１３に記載の方法。
【請求項１５】
傍受したパケットにポリシーを適用するステップをさらに含む、請求項１３に記載の方法。
【請求項１６】
傍受したパケットにアクセス制御リストを適用するステップをさらに含む、請求項１３に記載の方法。
【請求項１７】
ステップ（ｄ）は、前記少なくとも１つの傍受したパケットを、通信トンネルを介して前記第二のネットワーク上の前記システムに送信するステップをさらに含む、請求項１３に記載の方法。
【請求項１８】
ステップ（ｄ）は、前記少なくとも１つの傍受したパケットをセキュアな伝送制御プロトコル（ＴＣＰ）接続を介して、前記第二のネットワーク上の前記システムに送信するステップをさらに含む、請求項１３に記載の方法。
【請求項１９】
ステップ（ｄ）は、前記少なくとも１つの傍受したパケットに対しリバースネットワークアドレス変換を実行するステップをさらに含む、請求項１３に記載の方法。
【請求項２０】
ステップ（ｄ）は、前記第二のネットワーク上の前記システムにリモートプロセスを送信するステップをさらに含む、請求項１３に記載の方法。
【請求項２１】
ステップ（ａ）は、前記データリンク層から、プライベートネットワーク上の第一のシステムに送信される予定の第一の複数のリアルタイムパケットの中の１つのリアルタイムパケットを傍受するステップをさらに含む、請求項１３に記載の方法。
【請求項２２】
ステップ（ｂ）は、前記データリンク層から、第二のネットワーク上のシステムに送信される予定の、前記プライベートネットワーク上の第二のシステムから送信される第二の複数のリアルタイムパケットの中の１つのリアルタイムパケットを傍受するステップをさらに含む、請求項１３に記載の方法。
【請求項２３】
ステップ（ａ）は、前記データリンク層から、プライベートネットワーク上の第一のシステムに送信される予定の第一の複数のユーザーデータグラムプロトコル（ＵＤＰ）パケットの中の１つのユーザーデータグラムプロトコル（ＵＤＰ）パケットを傍受するステップをさらに含む、請求項１３に記載の方法。
【請求項２４】
ステップ（ｂ）は、前記データリンク層から、第二のネットワーク上のシステムに送信される予定の、前記プライベートネットワーク上の第二のシステムから送信される第二の複数のユーザーデータグラムプロトコル（ＵＤＰ）パケットの中の１つのユーザーデータグラムプロトコル（ＵＤＰ）パケットを傍受するステップをさらに含む、請求項１３に記載の方法。
【国際調査報告】
2008507929.tif 000015
2008507929.tif 000016
2008507929.tif 000017