(57)【要約】本発明のいくつかの実施形態において、外部ネットワークに対して接続されるコンピュータデバイスからプライベートネットワークリソースへの接続を確立するために使用可能な、プライベートネットワークリソースのプライベート識別子を作成する技術が記載される。例えば、コンピュータデバイスが外部ネットワークに対して接続されて、プライベートネットワークリソースへのコンタクトしようとすると、ＤＮＳが使用されて、プライベートネットワークリソースのドメイン名をプライベートネットワークのエッジリソースのＩＰアドレスに解決することができる。元々はプライベートネットワークリソースを識別するために使用される識別子を埋め込むプロトコルに従って、通信をコンピュータデバイスとエッジリソースとの間で渡すことができる。プライベートネットワークのエッジリソースは、接続全体の通信を分析してこの識別子を判定すること、また、それを使用して所望のプライベートネットワークリソースに通信を渡すこと、ができる。
2012516112.tif 000002
【特許請求の範囲】
【請求項１】
プライベートネットワークの外部のクライアントコンピュータから、前記プライベートネットワークに接続されるプライベートネットワークリソースへの、リモートアクセスを可能にするための方法であって、前記プライベートネットワークはエッジリソースを含み、前記プライベートネットワークリソースは、前記プライベートネットワーク上で前記プライベートネットワークリソースのインターネットプロトコル（ＩＰ）アドレスに解決可能、かつ、前記プライベートネットワークの外部でエッジリソースのＩＰアドレスに解決可能、である識別子に関連し、前記方法が、
（Ａ）前記エッジリソースにおいて、クライアントコンピュータから前記識別子を含む通信を受信する動作と、
（Ｂ）前記プライベートネットワーク上で、前記識別子を前記プライベートネットワークリソースの前記ＩＰアドレスに解決する動作と、
（Ｃ）前記通信を前記プライベートネットワークリソースに伝送する動作と
を含むことを特徴とする方法。
【請求項２】
前記通信を所定の受け手に伝送する動作（Ｃ）が、
（Ｃ１）前記プライベートネットワークの少なくとも１つのセキュリティポリシーを適用して、通信を前記通信の所定の受け手であるプライベートネットワークリソースに伝送することを許可すべきかどうかを判定する動作と、
（Ｃ２）動作（Ｃｌ）において、前記通信を許可すべきであると判定される場合、前記通信を伝送する動作と
を含むことを特徴とする請求項１に記載の方法。
【請求項３】
（Ｄ）前記エッジリソースにおいて、第２のクライアントコンピュータから第２の通信を受け取る動作であって、前記通信には第２の識別子が含まれる、動作と、
（Ｅ）前記プライベートネットワークの前記少なくとも１つのセキュリティポリシーを適用して、通信を前記第２の通信の所定の受け手である第２のプライベートネットワークリソースに伝送すべきかどうかを判定する動作と、
（Ｆ）動作（Ｅ）において、前記第２の通信を許可すべきではないと判定される場合、前記第２の通信を伝送しない動作と
をさらに含むことを特徴とする請求項２に記載の方法。
【請求項４】
（Ｄ）前記クライアントコンピュータに前記プライベートネットワークリソースからの応答を伝送する動作をさらに含むことを特徴とする請求項１に記載の方法。
【請求項５】
動作（Ｄ）が前記エッジリソースにより実行されることを特徴とする請求項４に記載の方法。
【請求項６】
前記クライアントコンピュータに応答を伝送する動作（Ｄ）が、
（Ｄｌ）前記エッジリソースにおいて、動作（Ｃ）において伝送される通信への前記プライベートネットワークリソースからの応答を受け取る動作と、
（Ｄ２）前記クライアントコンピュータが通信のソースであったと判定する動作と
を含むことを特徴とする請求項５に記載の方法。
【請求項７】
（Ｄ）前記通信を受け取る動作（Ａ）の前に、前記エッジリソースにおいて、前記クライアントから識別子の解決要求を受け取る動作であって、前記識別子の解決要求は前記プライベートネットワークリソースに関連する前記識別子を含有する、動作と
（Ｅ）前記エッジリソースのＩＰアドレスを含む、前記エッジリソースからクライアントへの前記識別子の解決要求への応答を、クライアントに伝送する動作と
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項８】
前記識別子がドメイン名システム（ＤＮＳ）に従うドメイン名であり、前記識別子の解決要求がＤＮＳクエリであり、
動作（Ｂ）が、
（Ｂｌ）前記プライベートネットワークのプライベートＤＮＳサーバにクエリを行い、前記識別子に関連するＩＰアドレスを判定する動作を含む
ことを特徴とする請求項５に記載の方法。
【請求項９】
前記プライベートネットワークリソースが、プライベートネットワークに対して接続されるウェブサーバであることを特徴とする請求項１に記載の方法。
【請求項１０】
（Ｄ）ＩＰセキュリティプロトコル（ＩＰｓｅｃ）を使用して、前記エッジリソースと前記クライアントコンピュータとの間の接続をセキュアにする動作をさらに含み、
前記動作（Ａ）において受け取られる前記通信が、動作（Ｄ）においてセキュアにされる接続全体に亘って受け取られることを特徴とする請求項１に記載の方法。
【請求項１１】
前記識別子が通信のヘッダに含有されることを特徴とする請求項１に記載の方法。
【請求項１２】
コンピュータ実行可能命令で符号化される少なくとも１つのコンピュータ可読記憶媒体であって、前記コンピュータ実行可能命令はコンピュータにより実行されると、
前記コンピュータに、
プライベートネットワークの外部のクライアントコンピュータから、前記プライベートネットワークに接続されるプライベートネットワークリソースへの、リモートアクセスを可能にするための方法であって、前記プライベートネットワークはエッジリソースを含み、前記プライベートネットワークリソースは、プライベートネットワーク上でプライベートネットワークリソースのインターネットプロトコル（ＩＰ）アドレスに解決可能、かつ、プライベートネットワークの外部で前記エッジリソースのＩＰアドレスに解決可能、であるドメイン名に関連する、方法を実行させ、
前記方法が、
（Ａ）前記クライアントからドメイン名システム（ＤＮＳ）クエリを受信する動作であって、前記ＤＮＳクエリが前記プライベートネットワークリソースに関連するドメイン名を含有する動作と、
（Ｂ）前記ＤＮＳクエリに対する前記エッジリソースからの応答を、前記エッジリソースのＩＰアドレスを含有するクライアントに伝送する動作と、
（Ｃ）前記エッジリソースにおいて、クライアントコンピュータから通信を受信する動作であって、前記通信が前記プライベートネットワークリソースに関連するドメイン名を含有するヘッダを含む、動作と、
（Ｄ）前記通信を前記プライベートネットワークリソースに伝送する動作と
を含むことを特徴とするコンピュータ可読記憶媒体。
【請求項１３】
前記通信を伝送する動作（Ｄ）が、
（Ｄ１）前記プライベートネットワークの少なくとも１つのセキュリティポリシーを適用して、前記通信を前記プライベートネットワークリソースであるプライベートネットワークリソースに伝送することを許可すべきかどうかを判定する動作と、
（Ｄ２）動作（Ｄｌ）において、前記通信を許可すべきであると判定される場合、前記通信を伝送する動作と
を含むことを特徴とする請求項１２に記載の少なくとも１つのコンピュータ可読記憶媒体。
【請求項１４】
前記プライベートネットワークリソースが、プライベートネットワークに対して接続されるウェブサーバであることを特徴とする請求項１２に記載の少なくとも１つのコンピュータ可読記憶媒体。
【請求項１５】
前記通信がＨＴＴＰプロトコルに従ってフォーマットされ、前記ヘッダに含有される前記識別子がホストのＨＴＴＰ識別子であることを特徴とする請求項１１に記載の少なくとも１つのコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークの外部からのプライベートネットワークリソースへのリモートアクセスするための方法に関する。
【背景技術】
【０００２】
コンピュータ通信ネットワークにはタイプの異なるものが存在する。その中で、多くの異なるユーザがアクセスおよび通信することができ、または、通過するネットワークトラフィック（例えば、データパケット）が妨げられないものが、公衆ネットワークである。その他のネットワークがプライベートネットワークである。公衆ネットワークとは対照的に、プライベートネットワークでは、アクセスをそのネットワークに制限し、かつ、通信をプライベートネットワークに接続されるネットワークリソースに制限する。プライベートネットワークは、承認されたネットワークトラフィックがネットワークを通過することを許可することだけができる。プライベートネットワークの例には、コンピュータユーザのホームネットワーク、および、企業の従業員のみがそのプライベートネットワークへのアクセスを許可される企業ネットワーク、が含まれる。いくつかの場合、プライベートネットワークは、別のネットワークの一部であることがあり、例えば、企業ネットワークの一部が、企業ネットワーク全体より安全であり、また、アクセスがさらに制限され、従って、企業ネットワークの残りの部分と比較した場合に、プライベートネットワークとなる。
【０００３】
アクセスが制限されるため、プライベートネットワークのネットワークリソースに、プライベートネットワークの外部のコンピュータデバイス（例えば、プライベートネットワークの外部の別のネットワーク、すなわち「外部ネットワーク」、に対して接続されるコンピュータデバイス）には、自由にアクセスすることができない。そのような場合、外部ネットワークを、プライベートネットワークに通信可能に接続させることができる場合があり、許可されればネットワークトラフィックを流すことができるが、プライベートネットワークのセキュリティの設定により、何らかのネットワークトラフィックがプライベートネットワークに入ることを止めることができる。
【０００４】
いくつかの状況においては、外部ネットワークに対して接続されるコンピュータデバイスを、プライベートネットワークのネットワークリソースと通信可能にさせることが望ましい。例えば、自宅でまたは移動中に仕事をする企業の従業員は、企業ネットワークのネットワークリソースにアクセスして自分の業務に関連する仕事を行いたいかもしれない。
【０００５】
外部ネットワークに対して接続される場合にプライベートネットワークへのアクセスを提供する、リモートアクセスの技術が開発されてきた。リモートアクセスの技術の一例に、仮想プライベートネットワーク（Ｖｉｒｔｕａｌ  Ｐｒｉｖａｔｅ  Ｎｅｔｗｏｒｋｉｎｇ：ＶＰＮ）がある。コンピュータデバイスには、ＶＰＮクライアントが提供され、そこにコンピュータデバイスのユーザ（例えば、企業の従業員）が、ユーザ名およびパスワード等の自分の認証情報を入力することができる。次に、ＶＰＮクライアントは、それらの認証情報をＶＰＮゲートウェイに渡すことができ、今度はＶＰＮゲートウェイが、それらの認証情報を認証して、認証情報が正規のものであることを確実にする。一度認証されると、セキュアな接続が（例えば、インターネット等の公衆ネットワークを介して）、ＶＰＮクライアントを稼働させるコンピュータデバイスのためのプライベートネットワークに対して開かれ、また、プライベートネットワークに接続され、一方で外部ネットワークに対して接続されるネットワークリソースに、コンピュータデバイスがアクセスすることを許可することができる。このセキュアな接続を、「仮想」ネットワークインターフェースを使用して形成すること、ＶＰＮクライアントによりコンピュータデバイス上に作成することができ、ＶＰＮクライアントは、コンピュータデバイスのハードウェアネットワークインターフェース／アダプタを使用するが、プライベートネットワークによりネットワーク特性（例えば、ＩＰアドレス）に対してアサインされる。ＶＰＮ接続を使用する時、クライアントは、プライベートネットワークへのフルアクセスと、プライベートネットワークに接続される全てのネットワークリソースとを有することができる。
【０００６】
別のリモートアクセスの技術では、リンク変換が既知である。リンク変換技術では、プライベートネットワークリソースにより使用されるリンクすなわちテキスト識別子の変換を実行する。例えば、プライベートネットワーク上のコンピュータデバイスにのみが利用可能なイントラネットウェブサイトをホストするウェブサーバ等のプライベートネットワークリソースは、人事（Ｈｕｍａｎ  Ｒｅｓｏｕｒｃｅｓ：ＨＲ）部のイントラネットウェブサイトのホストであることを識別するテキスト識別子「ｈｒｗｅｂ」を持つことができる。この識別子を使用して、これがウェブブラウザに入力される時などに、ウェブサーバへの接続を確立することができる。プライベートネットワーク内において、識別子（「ｈｒｗｅｂ」）が、ドメイン名システム（Ｄｏｍａｉｎ  Ｎａｍｅ  Ｓｙｓｔｅｍ：ＤＮＳ）を使用してウェブサーバのＩＰアドレスが解決（リゾルブ）され、また、そのＩＰアドレスを使用してウェブサーバに対して接続が確立される。
【０００７】
しかし、この識別子は、プライベートネットワークの外部では認知されず、解決されることはない。「ｈｒｗｅｂ」として識別されるウェブサーバには、プライベートネットワークの外部ではアクセスできないため、外部ネットワークに対して接続されるコンピュータデバイスが「ｈｒｗｅｂ」に接続しようとすると（例えば、自宅または移動中の従業員がインターネットを介して人事部のウェブサイトにアクセスを試みるなど）、ユーザにはエラーが出される。コンピュータデバイス上のリンク変換クライアントは、従って、リンクを編集して−リンクを含む文書の編集を含むことができる−内部のプライベート識別子に置き換えて、外部ネットワークにアクセス可能なネットワークリソースのテキスト識別子を使用することができる。例えば、プライベートネットワークに接続され、かつ、外部ネットワークを介してアクセス可能なゲートウェイデバイスは、外部ネットワークに対して「ｇａｔｅｗａｙ．ｃｏｒｐｏｒａｔｅ．ｃｏｍ」として識別される。プライベートネットワークに接続されないコンピュータデバイスがプライベートテキスト識別子を使用している時、リンク変換クライアントは、元のプライベート識別子（「ｈｒｗｅｂ」）を使用する代わりに、テキスト識別子をゲートウェイデバイスに置き換えて使用して、ゲートウェイデバイスに接続することができ、また、別個に、元のプライベート識別子（「ｈｒｗｅｂ」）をゲートウェイデバイスに渡すことができる。例えば、ハイパーテキスト転送プロトコル（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ：ＨＴＴＰ）を使用してウェブサーバへの接続を開く時、ユーザが最初に「ｈｔｔｐ：／／ｈｒｗｅｂ／」を入力すると、リンク変換クライアントは、リンクを「ｈｔｔｐ：／／ｇａｔｅｗａｙ．ｃｏｒｐｏｒａｔｅ．ｃｏｍ／？ｏｒｉｇｉｎａｌＵＲＬ＝”ｈｔｔｐ：／／ｈｒｗｅｂ／」に「変換」することができる。変換されたリンクを使用してプライベートネットワーク、例えば、リバースプロキシとして動作するプライベートネットワークのネットワークデバイス、に対して接続を確立することができる。リバースプロキシは次に、これらの変換されたリンクを元のプライベート識別子に再度変換し、元の識別子により識別されるネットワークリソースに対してプライベートネットワークにおいて接続を確立することができる。リバースプロキシは次に、外部ネットワーク上のコンピュータデバイスとプライベートネットワークのネットワークリソースとの間でメッセージを渡すことができる。
【０００８】
リンク変換の置き換え処理は、プライベートネットワークへの接続を開くために任意の動作がとられる前に実行される。これは置き換えられたリンクであり、かつ、接続を開くために使用される置き換えられた識別子（例えば、「ｇａｔｅｗａｙ．ｃｏｒｐｏｒａｔｅ．ｃｏｍ」）であり、元々入力される識別子「ｈｒｗｅｂ」ではない。従って、ドメイン名システム（ＤＮＳ）の処理が実行されて、ドメイン名が、接続を開くために使用されるＩＰアドレスに解決されると、置き換えられた識別子、「ｇａｔｅｗａｙ．ｃｏｒｐｏｒａｔｅ．ｃｏｍ」が解決され、これは元々入力される識別子ではない。
【０００９】
接続を開くコンピュータデバイスに加えて、リンク変換技術を使用するプライベートネットワークのゲートウェイデバイスもまた、リンクを変換する。例えば、外部ネットワークに対して接続されるコンピュータデバイスのユーザがウェブページおよび文書等の情報をゲートウェイデバイスを介して要求すると、ゲートウェイデバイスは、全ての情報をスキャンし、プライベートネットワークリソースの任意のプライベート識別子に対して置き換えを実行することができる。例えば、人事部のイントラネットウェブサイトに、経理部のイントラネットウェブサイトへのリンク（例えば、「ｈｔｔｐ：／／ａｃｃｏｕｎｔｉｎｇｗｅｂ／」へのリンク）が含まれる場合、ゲートウェイデバイスは、外部ネットワーク上で使用することができるテキスト識別子でそのリンクを置き換えることができる。例えば、「ｈｔｔｐ：／／ａｃｃｏｕｎｔｉｎｇｗｅｂ／」へのリンクを、「ｈｔｔｐ：／／ｇａｔｅｗａｙ．ｃｏｒｐｏｒａｔｅ．ｃｏｍ／？ｏｒｉｇｉｎａｌＵＲＬ＝”ｈｔｔｐ：／／ａｃｃｏｕｎｔｉｎｇｗｅｂ／」で置き換えることができる。
【発明の概要】
【発明が解決しようとする課題】
【００１０】
出願人は、従来のリモートアクセスの技術では、所望のレベルのアクセス、または、所望のレベルの精度および所望のレベルでユーザに対してエラーフリーであること、が提供されない場合があることを認知かつ理解している。例えば、ＶＰＮ技術では、プライベートネットワークに接続される全てのネットワークリソースへの全アクセスを提供する一方、ネットワーク管理者はプライベートネットワークへのアクセスを特定のリソースに制限することを望んでも良い。リンク変換技術には、他にも欠点があり、これは、外部のコンピュータに渡される情報内の全てのプライベートネットワーク識別子を検出して、それに置き換えて外部ネットワーク識別子を使用することができることに依る。リンク変換クライアントは、全てのプライベートネットワークリソースを認識できるわけではないため、このことにより、ある識別子の置き換えができないことがあり、それらのリソースを外部ネットワークを介して接続されるユーザに利用できないようにしてしまう。さらに、文書に埋め込まれる識別子（ウェブページ等）に対して実行される置き換えは、文書に対する永久的な編集であるため、ユーザが再度プライベートネットワークに接続する時には、これらの文書は壊れているかもしれない。
【課題を解決するための手段】
【００１１】
出願人は、外部ネットワーク上でプライベートネットワーク識別子を使用可能にすることにより、プライベートネットワークへのリモートアクセスを可能にする新しい技術を開発した。本明細書において、プライベートネットワーク識別子を解決可能にし、かつ、プライベートネットワークの外部から使用可能にするための種々の原理が説明される。例えば、いくつかの実装において、プライベートネットワークリソースのプライベートネットワーク識別子（例えば、ドメイン名システム（ＤＮＳ）を使用して確立されるドメイン名のようなテキスト識別子）を、外部ネットワーク上でＤＮＳを使用して解決可能にすることができる。例えば、一実施形態において、コンピュータデバイスが外部ネットワークに対して接続されて、プライベートネットワークリソースにコンタクトしようとすると、ＤＮＳが使用されて、プライベートネットワークリソースのドメイン名を、プライベートネットワークのエッジリソースのインターネットプロトコル（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ：ＩＰ）アドレスに解決することができる。プライベートネットワークのエッジリソースは、ゲートウェイデバイスとすることができ、コンピュータデバイスとプライベートネットワークリソースとの間の通信を可能にし、それらの間の通信を双方向で渡すことができる。いくつかの実装において、エッジリソースへのこの通信は、むしろ所望のプライベートネットワークリソースへの直接の通信よりも、通信を開いているコンピュータデバイスのユーザが知ることなく、シームレスに行うことができる。この接続はまた、いくつかの実装において、インターネットプロトコルセキュリティ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  Ｓｅｃｕｒｉｔｙ：ＩＰｓｅｃ）プロトコルを使用するなど、任意の適切な技術を使用してセキュアにされる。
【００１２】
本発明のいくつかの実施形態において、外部ネットワークを介してコンピュータデバイスからの接続を受け取ると、プライベートネットワークのエッジリソース（例えば、ゲートウェイデバイス）は、接続全体の通信を分析して、コンピュータデバイスが通信することを望むプライベートネットワークリソースを判定することができる。元々はプライベートネットワークリソースを識別するために使用される識別子（例えば、元々はユーザにより入力された識別子）を通信内に埋め込む１つまたは複数のプロトコルに従って、通信をコンピュータデバイスとエッジリソースとの間で渡すことができる。この識別子は次にエッジリソースにより使用されて、所望のプライベートネットワークリソースに通信を渡すことができる。
【００１３】
一実施形態において、プライベートネットワークの外部のクライアントコンピュータから、プライベートネットワークに接続されるプライベートネットワークリソースへの、リモートアクセスを可能にするための方法が提供され、プライベートネットワークはエッジリソースを含む。プライベートネットワークリソースは、プライベートネットワーク上でプライベートネットワークリソースのインターネットプロトコル（ＩＰ）アドレスに解決可能、かつ、プライベートネットワークの外部でエッジリソースのＩＰアドレスに解決可能、である識別子に関連する。方法は、エッジリソースにおいて、クライアントコンピュータから識別子を含む通信を受信する動作を含む。方法は、プライベートネットワーク上で、識別子をプライベートネットワークリソースのＩＰアドレスに解決する動作と、通信をプライベートネットワークリソースに伝送する動作とをさらに含む。
【００１４】
別の実施形態において、コンピュータ実行可能命令で符号化される少なくとも１つのコンピュータ可読記憶媒体が提供され、コンピュータ実行可能命令はコンピュータにより実行されると、コンピュータに、プライベートネットワークの外部のクライアントコンピュータから、プライベートネットワークに接続されるプライベートネットワークリソースへの、リモートアクセスを可能にするための方法を実行させる。プライベートネットワークはエッジリソースを含む。プライベートネットワークリソースは、プライベートネットワーク上でプライベートネットワークリソースのインターネットプロトコル（ＩＰ）アドレスに解決可能、かつ、プライベートネットワークの外部でエッジリソースのＩＰアドレスに解決可能、であるドメイン名に関連する。方法は、クライアントからドメイン名システム（ＤＮＳ）クエリを受信する動作をであって、ＤＮＳクエリがプライベートネットワークリソースに関連するドメイン名を含有する動作と、ＤＮＳクエリに対するエッジリソースから、エッジリソースのＩＰアドレスを含有する応答を、クライアントに伝送する動作と、を含む。方法は、エッジリソースにおいて、クライアントコンピュータから通信を受信する動作であって、通信がプライベートネットワークリソースに関連するドメイン名を含有するヘッダを含む、動作と、通信をプライベートネットワークリソースに伝送する動作と、をさらに含む。
【００１５】
さらなる実施形態において、プライベートネットワークの外部からアクセス可能なエッジリソースおよびプライベートネットワークリソースを有するプライベートネットワークを含む、コンピュータシステムにおいて使用するための装置が提供される。プライベートネットワークリソースは、プライベートネットワーク上でプライベートネットワークリソースのインターネットプロトコル（ＩＰ）アドレスに解決可能、かつ、プライベートネットワークの外部でエッジリソースのＩＰアドレスに解決可能、であるドメイン名に関連する。装置には、プライベートネットワークの外部のクライアントからエッジリソースにより受信された通信の、プライベートネットワーク内における所定の受け手を判定するようプログラムされる、少なくとも１つのプロセッサが含まれる。少なくとも１つのプロセッサは、通信の所定の受け手の識別子を含有する通信のヘッダを検査し、プライベートネットワーク上で、識別子を通信の所定の受け手のＩＰアドレスに解決し、所定の受け手のＩＰアドレスに通信を伝送する、ようにプログラムされ、所定の受け手はプライベートネットワークリソースである。
【００１６】
前述の内容は、本発明の非制限的な要約であり、添付の請求項により定義される。
【００１７】
添付の図面では正確な縮尺で描くことは意図されていない。図面においては、種々の図面に例示される同一またはほぼ同一の各要素は、同様の数字で表される。明確にする目的のため、全ての要素が全ての図面においでラベル付けされるわけではない。
【図面の簡単な説明】
【００１８】
【図１】本発明のいくつかの実施形態が動作することができる例示のコンピュータシステムを例示する図である。
【図２】外部ネットワークに対して接続されると、プライベートネットワークリソースに関連するドメイン名に対して、クライアントによりドメイン名の解決を実行するための、本発明のいくつかの実施形態に従う例示の処理のフローチャートである。
【図３】クライアントが外部ネットワークに対して接続されると、プライベートネットワークリソースに関連するドメイン名に対して、プライベートネットワークのエッジリソースによりドメイン名の解決を実行するための、本発明のいくつかの実施形態に従う例示の処理のフローチャートである。
【図４】外部ネットワークに対して接続されると、プライベートネットワークリソースに関連するドメイン名に対して、クライアントによりドメイン名の解決を実行するための、本発明のいくつかの実施形態に従う例示の処理のフローチャートである。
【図５】クライアントが外部ネットワークに対して接続されると、プライベートネットワークリソースに関連する部分的修飾ドメイン名を解決するための、本発明のいくつかの実施形態に従う例示の処理のフローチャートである。
【図６】外部ネットワークに対して接続されるクライアントとプライベートネットワークのネットワークリソースとの間で通信するための、本発明のいくつかの実施形態に従う例示の処理のフローチャートである。
【図７】外部ネットワークに対して接続されるクライアントとプライベートネットワークのネットワークリソースとの間の通信を制御する時に、プライベートネットワークのエッジリソースが進むことができる、本発明のいくつかの実施形態に従う例示の処理のフローチャートである。
【図８Ａ】プライベートネットワークのエッジリソースにより実装されて、ハイパーテキスト転送プロトコル（ＨＴＴＰ）のクッキー機能をサポートすることができる、本発明のいくつかの実施形態に従った例示の処理のフローチャートである。
【図８Ｂ】プライベートネットワークのエッジリソースにより実装されて、ハイパーテキスト転送プロトコル（ＨＴＴＰ）のクッキー機能をサポートすることができる、本発明のいくつかの実施形態に従った例示の処理のフローチャートである。
【図９】本発明のいくつかの実施形態において、クライアントコンピュータデバイスとして動作することができる例示のコンピュータデバイスのブロック図である。
【図１０】本発明のいくつかの実施形態において、プライベートネットワークのエッジリソースとして動作することができる例示のコンピュータデバイスのブロック図である。
【発明を実施するための形態】
【００１９】
上述したように、既存のリモートアクセスの技術（例えば、ＶＰＮおよびリンク変換）には、いくつかの欠点がある。例えば、コンピュータデバイスがプライベートネットワークへのＶＰＮ接続を開くと、コンピュータデバイスはプライベートネットワークの全てのネットワークリソースへのアクセスができてしまう。（本明細書において使用される時、「ネットワークリソース」は、ネットワークに対して接続される任意のコンピュータデバイス、例えば、クライアントコンピュータデバイス、サーバ、ルータおよびスイッチその他等のネットワークデバイス、とすることができる。）しかし、プライベートネットワークの所有者および管理者は、リモートでアクセスされる時にプライベートネットワークリソースへのアクセスを制限することにより、可能性のある攻撃に対してネットワークを露出することを制限したいかもしれない。例えば、企業ネットワークの管理者は、ファイルの最新のコピーを記憶するファイルサーバは外部ネットワークからリモートでアクセスできることが良いが、それらのファイルの旧コピーを記憶するバックアップサーバにはリモートでアクセスできないほうが良いと判定するかもしれない。既存のＶＰＮ技術はこの能力を提供しておらず、代わりに、リモートのユーザに全てのネットワークリソースへのフルアクセスを与え、そのユーザは、プライベートネットワークに直接接続している場合には、全ネットワークリソースへのフルアクセスができてしまう。さらに、「強制トンネル（ｆｏｒｃｅ  ｔｕｎｎｅｌ）」ＶＰＮとして知られるＶＰＮのいくつかの実装において、コンピュータデバイスがプライベートネットワークへのＶＰＮ接続を確立すると、そのコンピュータデバイスが、プライベートネットワークに対して接続されるネットワークリソース以外のネットワークリソース（例えば、プライベートネットワークに関連しないウェブサイトをホストするウェブサーバ）に接続することを制限または禁止することができる。出願人は、そのような場合において、この制限または禁止は、ユーザが自分の業務または他の仕事を実行することを妨げることになり、ユーザにマイナスの影響を与えてしまうことを理解している。
【００２０】
別の例として、リンク変換を使用してプライベートネットワークリソースへのアクセスを提供する時、プライベートネットワークリソースの識別子が検出されると、プライベートネットワーク識別子が、外部ネットワークで使用することができる識別子で置き換えられる。しかし、リンク変換は全ての状況において働くわけではなく、望ましいわけでもない。例えば、リンク変換クライアントが適切に機能し、全てのプライベートネットワークリソースのプライベート識別子を検出するためには、リンク変換クライアントは、プライベート識別子を含有することができる各タイプのファイルまたは文書をビューおよび処理する能力を持たなければならない。テキスト文書のフォーマットが異なることが、この能力の妨げとなり得る。さらに、リンク変換クライアントが、全てのタイプの文書の内容をレビューすることができるとしても、リンク変換クライアントは、全てのプライベートネットワークリソースおよびそれらのプライベート識別子について知見を持ち、特定の識別子がプライベート識別子であるかどうか、および、それを変換する必要があるかどうか、を判定することができなければならない。さらに、全てのリンク変換が適切に行うことができるとしても、リンク変換が、プライベート識別子を含有するファイルにおいて永久的な置き換えを行うことができるような全ての状況において、それが望ましいわけではない。コンピュータデバイスが、プライベートネットワークに対して直接再接続されれば、ファイルはまだ編集されるであろうし、置き換えられたリンクはプライベートネットワークリソースを正しく識別せず、そのファイルはもはや役に立たないであろう。
【００２１】
本発明の一実施形態に従うと、プライベートネットワークリソースのプライベート識別子それ自身を、外部ネットワーク上でプライベートネットワークリソースへの接続に使用可能にする、リモートアクセスの技術が提供される。プライベートネットワークリソースのプライベート識別子は、プライベートネットワークリソースにアクセスするための識別子の使用を求めるコンピュータデバイスが、プライベートネットワークに対して接続されると、プライベートネットワークリソースを識別することができるが、コンピュータデバイスが外部ネットワークに対して接続されると、プライベートネットワークのエッジリソース（例えば、ゲートウェイデバイス）を識別することができる。このようにして、プライベートネットワークリソースとの通信を行うために、プライベート識別子それ自身を使用することができる。
【００２２】
外部ネットワークを介してプライベートネットワーク識別子を使用可能にするための、本明細書に記載される技術は、ネットワークリソースの任意の適切な識別子に適用することができ、また、任意のプライベートネットワークリソース（例えば、プライベートネットワークに対して接続される任意の適切なコンピュータデバイス）にアクセスするために使用することができるが、本明細書に記載される技術はこの点において限定されない。
【００２３】
以下に記載されるいくつかの例示の実装において、ドメイン名システム（ＤＮＳ）を使用して、ドメイン名を使用するネットワークリソースを識別することができる。ドメイン名は、任意の適切な英数字の識別子を含む、ネットワークリソースの適切なテキスト識別子とすることができ、例えば、人事（ＨＲ）部のイントラネットウェブサイトをホストするウェブサーバの「ｈｒｗｅｂ」などである。これらの実装において、プライベートネットワークに対して接続されるコンピュータデバイスが、イントラネットウェブサーバのドメイン名を使用してイントラネットウェブサーバへの接続を形成する時、ドメイン名「ｈｒｗｅｂ」は、ＤＮＳを使用して、イントラネットウェブサーバ自身のインターネットプロトコル（ＩＰ）アドレスに解決される。しかし、コンピュータデバイスが、外部ネットワークに対して接続される時にドメイン名「ｈｒｗｅｂ」を使用すると、ドメイン名は、ＤＮＳを使用してプライベートネットワークのエッジリソースのＩＰアドレスに解決される。エッジリソースは、プライベートネットワークに対して接続される任意の適切なコンピュータデバイスとすることができるが、プライベートネットワークの外部（例えば、ゲートウェイデバイス）から直接アクセス可能である。以下の例において、エッジリソースは、説明を簡単にするために、ゲートウェイデバイスおよび／またはリバースプロキシと称されるが、任意の適切なエッジデバイスを採用することができ、本発明の実施形態はこの点において限定されない。
【００２４】
ドメイン名「ｈｒｗｅｂ」がゲートウェイデバイスのＩＰアドスに解決されると、コンピュータデバイスは、イントラネットウェブサーバであるかのように、ゲートウェイデバイスと通信することができる。例えば、コンピュータデバイスは、ゲートウェイデバイスに対する接続を開くことができ、また、ゲートウェイデバイスと通信を交換することができる。ゲートウェイデバイスとの通信は、任意の適切な方法で実行することができる。いくつかの実装において、そのような通信は、所望のネットワークリソースを識別するために使用される識別子を少なくともいくつかの通信内に埋め込むプロトコルに従って、行うことができる。識別子は、ゲートウェイに対して解決された元の識別子、または、任意の他の適切な識別子とすることができる。識別子が、イントラネットウェブサイトをホストするウェブサーバのドメイン名（例えば、「ｈｒｗｅｂ」）である場合、通信内に埋め込まれる識別子は、ドメイン名（例えば、「ｈｒｗｅｂ」）とすることができる。ゲートウェイデバイスは次に、このドメイン名の通信をレビューし、それを使用して通信が転送されるプライベートネットワークリソースを識別することができる−この場合、ゲートウェイデバイスは、ドメイン名を使用して、イントラネットウェブサーバに通信を転送すべきであることを確認することができる。ゲートウェイは次に、識別されたプライベートネットワークリソースに通信を転送することができる。プライベートネットワークリソースから応答を受け取ると、ゲートウェイは、その応答を、通信を開始したコンピュータデバイスに転送することができる。例えば、ゲートウェイデバイスは、クライアントコンピュータ上のウェブブラウザから、ウェブページをダウンロードする要求を受け取ることができ、その要求をウェブサーバに転送することができ、ウェブサーバからそのウェブページを受け取ることができ、そしてそのウェブページを、要求を発行したコンピュータデバイスに転送することができる。
【００２５】
本明細書に記載される原理に従って動作する技術は、任意の適切な数およびタイプ（複数可）のコンピュータデバイスを含む任意の適切なコンピュータシステム等の、任意の適切な環境において実装可能である。図１は、本明細書に記載される原理のいくつかの例示の実装が動作することができる例示のコンピュータシステムを示すが、本発明の実施形態が、このコンピュータシステムまたは任意の他の特定のタイプのコンピュータシステムにおいて実装されることに限定されないことは理解すべきである。
【００２６】
図１は、プライベートネットワークリソース１０２を有するプライベート通信ネットワーク１０６を含む、コンピュータシステムを示す。プライベートネットワーク１０６は、プライベートネットワークリソース１０２を含む、プライベートネットワーク１０６に接続されるリソースへのアクセスを、プライベートネットワーク１０６に接続されるデバイスのみに限定することができる。しかし、本明細書に記載される技術を使用して、コンピュータデバイス１００等のプライベートネットワーク１０６の外部のデバイスは、外部の通信ネットワーク１０４を介してプライベートネットワークリソース１０２と通信することができる。外部の通信ネットワーク１０４は単一のネットワークとして示されるが、インターネットおよびプライベートネットワーク１０６のエッジリソース１０８への直接接続を含む、任意のタイプの１つまたは複数のネットワークとすることができることは理解すべきである。
【００２７】
コンピュータデバイス１００は、通信ネットワーク全体において情報を交換するための任意の適切なコンピュータデバイスとすることができ、本発明の態様はこの点において限定されない。例えば、図１に例示するように、コンピュータデバイス１００はラップトップパーソナルコンピュータとすることができるが、デスクトップパーソナルコンピュータ、携帯情報端末（ｐｅｒｓｏｎａｌ  ｄｉｇｉｔａｌ  ａｓｓｉｓｔａｎｔ：ＰＤＡ）、スマートフォン、または他のリソースを含む任意の適切なコンピュータデバイスを使用することができることは理解すべきである。いくつかの実装において、コンピュータデバイス１００は、ある時にはプライベートネットワーク１０６に接続させ、次に切断して別の場所に運び、そこで外部ネットワーク１０４（例えば、インターネットとすることができる）を介してプライベートネットワーク１０６に接続させることができる、可動式のコンピュータデバイスとすることができる。
【００２８】
例えば、プライベートネットワーク１０６は、会社等の組織の企業ネットワークとすることができ、また、コンピュータデバイス１００は、その会社の従業員が使用するラップトップとすることができる。従業員のラップトップは、ある時は、例えば従業員が事務所にいる時などは、プライベートネットワーク１０６に接続させることができ、また、別の時、例えば従業員が自宅または移動中の時などは、ラップトップを外部ネットワーク１０４に接続させることができる。
【００２９】
上記で説明したように、プライベートネットワークリソース１０２は、プライベートネットワーク１０６に対して接続される任意の適切なコンピュータデバイスとすることができる。図１において例示されるもの、および、以下の種々の例において説明されるものなど、いくつかの実装において、プライベートネットワークリソース１０２は、ウェブサーバ１０２とすることができる。ウェブサーバ１０２は、ウェブサーバのデータストア１０２Ａに記憶されるウェブベースのアプリケーションに対するホストとすることができ、また、ウェブアプリケーションのウェブページを、他のコンピュータデバイスのウェブブラウザに表示させるためにそれらのコンピュータデバイスに提供することができる。例えば、ウェブアプリケーションは、プライベートネットワーク１０６に関連する企業の人事部のイントラネットウェブサイトに関連するウェブアプリケーションとすることができる。しかし、本発明の実施形態は、ウェブサーバであるプライベートネットワークリソースと共に動作することに限定されず、これらの技術を使用して、プライベートネットワーク上の任意の適切なコンピュータデバイスにアクセスすることができることは理解すべきである。
【００３０】
コンピュータデバイス１００が、外部ネットワーク１０４に対して接続されて図１に示され、ウェブサーバ１０２がプライベートネットワーク１０６に対して接続されて示される。外部ネットワーク１０４およびプライベートネットワーク１０６は、それぞれ任意の適切なコンピュータ通信ネットワークとすることができ、また、任意の適切な有線および／または無線の通信媒体を含むことができる。例えば、プライベートネットワーク１０６は、ホームネットワークとして実装されるローカルエリアネットワーク（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ：ＬＡＮ）、または、企業ネットワークとして実装されるＬＡＮもしくはワイドエリアネットワーク（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ：ＷＡＮ）とすることができる。外部ネットワーク１０４は、インターネット等の公的にアクセス可能なネットワークを含む、プライベートネットワーク１０６ではない任意のネットワークとすることができる。
【００３１】
上記で説明したように、いくつかの実装において、プライベートネットワーク１０６は、プライベートネットワーク１０６に対して接続されるネットワークリソース−ウェブサーバ１０２等−へのアクセスを、プライベートネットワーク１０６に対して接続される他のコンピュータデバイスのみに制限するよう適合されることができる。これは任意の適切な方法で行うことができ、また、エッジリソース１０８をどのように実装するか、および、どのセキュリティ技術を使用するか、に依存する。エッジリソース１０８は、ゲートウェイ、ファイアウォール、および／またはルータを含む任意の適切なデバイスとして実装することができる。
【００３２】
いくつかの実装において、プライベートネットワーク１０６は、プライベートネットワークリソースへのアクセスをエッジリソース１０８において実施されるセキュリティ規則を介するものに制限するよう適合されることができる。エッジリソース１０８は、プライベートネットワーク１０６の一部である任意のコンピュータデバイスとすることができ、プライベートネットワークへのエントリポイント（例えば、外部ネットワーク１０４からの）を提供することができる。エッジリソース１０８は、プライベートネットワーク１０６に出入りする通信を制御することができる。例えば、エッジリソース１０８は、承認されたトラフィックが外部ネットワーク１０４からプライベートネットワーク１０６に流れること許可することだけができ、従って、プライベートネットワーク１０６へのアクセスを承認されたものだけに制限することができる。
【００３３】
以下で説明するいくつかの実施形態において、エッジリソース１０８を、プライベートネットワーク１０６のリバースプロキシ１０８として実装することができる。本明細書において使用される時、用語リバースプロキシは、プライベートネットワーク上の１つまたは複数のリソース（リバースプロキシの下位であるとみなすことができる）のための通信を受け取り、かつ、どのリソースに対して特定の通信を渡すべきかを判定する、任意のデバイスを意味する。
【００３４】
図１のコンピュータシステムにはまた、２つのＤＮＳサーバ１１０および１１２が含まれる。ＤＮＳサーバ１１０は、プライベートネットワーク１０６に対して接続されて示され、外部プライベートＤＮＳエントリのデータストア１１０Ａを含む。これらのエントリを使用して、プライベートネットワーク１０６と外部ネットワーク１０４との両方に対して接続されるリソースの識別子を解決することができる。ＤＮＳサーバ１１２は、外部ネットワーク１０４に対して接続され、外部ＤＮＳエントリのデータストア１１２Ａを含むことができる。これらのエントリを使用して、外部ネットワーク１０４に対して接続されるリソース（例えば、インターネット等の公衆ネットワークを介して利用可能なリソース）の識別子を解決することができる。
【００３５】
ＤＮＳにおいて、ユーザが、コンピュータデバイスにドメイン名を入力してそのドメイン名により識別されるリソースとの通信を開始すると、コンピュータデバイス上のＤＮＳクライアントは、ドメイン名をＩＰアドレスに「解決」するようＤＮＳサーバにクエリを行う。これは、覚えやすくかつ使用しやすいドメイン名のような英数字の識別子を含む、テキスト識別子が人に分かるため、行われるのであり、コンピュータは、ＩＰアドレスのような長い数字の識別子を使用するよう適合されて、通信を実行する。ＤＮＳサーバは、コンピュータデバイス上のＤＮＳクライアントからドメイン名を求めるクエリを受け取ると、ローカルに利用可能な情報を介するか、または、他のＤＮＳサーバのＤＮＳエントリをクエリすることにより、クエリ内のドメイン名に対応するＩＰアドレスのＤＮＳエントリを検査し、ＤＮＳクライアントにＩＰアドレスを戻す。コンピュータデバイスは次に、ＩＰアドレスを使用してリソースとの通信を開始することができる。本明細書に記載される本発明の態様は、任意のタイプのＤＮＳサーバを含むシステムにおいて使用することができる。
【００３６】
リバースプロキシ１０８を、本発明のいくつかの実施形態において使用して、プライベートネットワーク１０６の外部のデバイス（例えば、コンピュータデバイス１００）と、プライベートネットワーク１０６のリソース（例えば、ウェブサーバ１０２）との間の通信を可能にすることができる。いくつかのそのような実施形態において、コンピュータデバイス１００は、「ｈｒｗｅｂ」等のドメイン名を使用して、ウェブサーバ１０２を識別することができる。そのコンピュータデバイス１００が、外部ネットワーク１０４に対して接続された状態で、ドメイン名を「解決」すると、ドメイン名がリバースプロキシ１０８のＩＰアドレスに解決され、コンピュータデバイス１００がリバースプロキシ１０８を介してウェブサーバ１０４と通信することを可能にする。これは、任意の適切な方法で行うことができ、その例が以下に記載される。
【００３７】
以下に記載される例には、コンピュータデバイス１００が外部ネットワーク１０４からウェブサーバ１０２にアクセスすることを可能にするために使用することができる種々の技術が含まれる。説明を簡単にするために、本明細書に記載される技術の以下に与えられる例は、図１の例示のコンピュータシステムを参照して記載される。しかし、特に明記しない限り、これらの技術が図１に例示のコンピュータシステムにおいて動作することに限定されないことは理解すべきである。本明細書に記載される原理に従って動作する技術は、任意の適切なコンピュータシステムにおいて実装することができる。
【００３８】
ドメイン名をＩＰアドレスに解決するために、ＤＮＳクライアントには、ＤＮＳクライアントがクエリを送ることができるＤＮＳサーバのＩＰアドレスが供給される。典型的なＤＮＳの実装において、コンピュータデバイス１００がネットワークに接続すると、コンピュータデバイス１００には、そのネットワークのＤＮＳサーバのアドレスが提供される。従って、例えば、コンピュータデバイス１００は、外部ネットワーク１０４に接続されると、ドメイン名を解決する際に、ＤＮＳサーバ１１２のアドレスが提供され、また、コンピュータデバイス１００は、プライベートネットワーク１０６に接続されると、ドメイン名を解決するためのＤＮＳサーバ１１０のアドレスが提供される。
【００３９】
しかし、ＤＮＳと共に動作する本発明のいくつかの実施形態において、コンピュータデバイス１００上のＤＮＳクライアントは、接続されるネットワークに関係なく、プライベートネットワーク１０６のＤＮＳサーバ（例えば、ＤＮＳサーバ１１０）を常に使用するよう適合されてドメイン名を解決することができる。本実施形態において、コンピュータデバイス１００がプライベートネットワークの外部からプライベートネットワークのＤＮＳサーバにアクセスする、ことを可能にする技術が採用される。図２は、そのようなＤＮＳクライアントを操作するコンピュータデバイス１００が実行することができる１つの例示の処理を示す。しかし、処理２００は、本明細書に記載される技術を実行するために実装することができる処理の単なる例示のタイプであり、他の処理が可能であることは理解すべきである。
【００４０】
処理２００はブロック２０２において開始され、ここで、コンピュータデバイス１００のＤＮＳクライアントは、プライベートネットワーク１０６のＤＮＳサーバ１１０を使用してドメイン名を解決するよう構成される。これは、任意の適切な方法で行うことができる。例えば、コンピュータデバイス１００のユーザ（管理者等）は、ＤＮＳサーバ１１０のアドレスをコンピュータデバイス１１０に入力することができる。この入力は、コンピュータデバイス１００のユーザインターフェースを介するなどして手動で行うこと、動的ホスト構成プロトコル（Ｄｙｎａｍｉｃ  Ｈｏｓｔ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ：ＤＨＣＰ）を介してワシントン州レドモンドのマイクロソフト社から入手可能なマイクロソフトアクティブディレクトリのグループポリシーを通して配布されるネットワーク設定等を介して自動的に行うこと、または、任意の他の方法でおこなうことができる。図１に示すように、ＤＮＳサーバ１１０はプライベートネットワーク１０６に対して接続され、従って、ＤＮＳサーバ１１０へのアクセスが制限される。そのような実装において、プライベートネットワークのエッジリソース（例えば、リバースプロキシ１０８）は、ＤＮＳサーバ１１０へのアクセスを制限しないことができ、ＤＮＳクエリがＤＮＳサーバ１１０に渡されることを許可するよう適合されることができる。
【００４１】
他の実装において、ＤＮＳサーバ１１０を使用するようＤＮＳクライアントを構成することには、ＤＮＳサーバ１１０そのもののアドレスを入力することは含まれないが、ＤＮＳクライアントが使用すべきＤＮＳサーバのアドレスとしてリバースプロキシ１０８のアドレスを入力することを含めることができる。従って、リバースプロキシ１０８は、通信をＤＮＳサーバに中継することが可能である。他の実装において、リバースプロキシ１０８は、加えてＤＮＳサーバとして機能することができ、従って、ＤＮＳサーバ１１０とリバースプロキシ１０８は、同じデバイス内に実装することができる。従って、本発明のいくつかの実施形態において、リバースプロキシ１０８は、ドメイン名を解決することに関連する種々の機能を実行することができる。本発明の実施形態におけるリバースプロキシ１０８が実行することができる例示の機能については、以下で詳細に記載される。
【００４２】
ブロック２０２において、ＤＮＳクライアントがどのように供給されるかに関わらず、ブロック２０４において、コンピュータデバイス１００は外部ネットワーク１０４に対して接続される。ブロック２０６において、ネットワークリソースを識別するドメイン名が（例えば、コンピュータデバイス１００のユーザ、またはコンピュータデバイス１００上で実行されるアプリケーションプログラムから）受け取られる。このドメイン名は、任意のドメイン名とすることができ、例えば、「ｗｗｗ．ｍｉｃｒｏｓｏｆｔ．ｃｏｍ」のような公的に解決可能なドメイン名、または、プライベートネットワーク１０６の外部では使用できない「ｈｒｗｅｂ」等のプライベートドメイン名である。プライベートドメイン名は、ウェブサーバ１０２等のプライベートネットワークリソースに関連付けることができる。
【００４３】
ブロック２０８において、コンピュータデバイス１００のＤＮＳクライアントは、ドメイン名を、プライベートＤＮＳサーバを使用して、指定されるリソースとの通信に使用することができるＩＰアドレスに解決する。この名前の解決は、任意の適切な方法で行うことができる。一実施形態において、名前の解決は、ブロック２０２において構成されるＤＮＳサーバにクエリを行うことにより実行することができる。ブロック２０６において入力されるドメイン名が公的に解決可能なドメイン名である場合、ＤＮＳクエリに応答して受け取られるＩＰアドレスは、ドメイン名により識別されるリソースのＩＰアドレスとすることができる。しかし、ドメイン名がウェブサーバ１０２のようなプライベートネットワークリソースのプライベートドメイン名である時は、本発明のいくつかの実施形態において、解決に応答してコンピュータデバイス１００のＤＮＳクライアントにより受け取られるＩＰアドレスは、プライベートネットワークリソースのＩＰアドレスではなく、リバースプロキシ１０８のＩＰアドレスとすることができる。この解決を実行することができる例示の技術については、以下に詳細に記載される。
【００４４】
ブロック２１０において、コンピュータデバイス１００は、ブロック２０８において受け取られたＩＰアドレスにより識別されるリソース（例えば、リバースプロキシ１０８）との通信を実行する。指定されるリソースがプライベートリソース（例えば、ウェブサーバ１０２）である時、ブロック２１０のリソースとの通信がリバースプロキシ１０８を介して間接的に実行されるため、丁度、リソース（例えば、ウェブサーバ１０２）との通信が直接行われていたのと同様に、いくつかの実施形態において、コンピュータデバイス１００には、指定されるリソース以外のデバイス（例えば、ウェブサーバ１０２）と直接通信していることを認識できない。リバースプロキシ１０８が使用してこの通信を可能にすることができる例示の技術については、以下に詳細に記載される。通信が一旦実行されると、処理２００は終了する。
【００４５】
図２において例示される処理を使用して、コンピュータデバイス１００がプライベートネットワークの外部（例えば、外部ネットワーク１０４）に接続される場合でも、ウェブサーバ１０２のようなプライベートネットワークリソースのドメイン名を、プライベートネットワークリソースとの通信に使用することができる。
【００４６】
プライベートドメイン名の、リバースプロキシ１０８のＩＰアドレスへの解決は、任意の適切な方法で行うことができる。上記で説明したように、本発明のいくつかの実施形態において、リバースプロキシ１０８はこの解決に関連する機能を実行することができる。図３は、ＤＮＳ解決の間にリバースプロキシ１０８上に実装されるリモートアクセスファシリティ（設備）により実行することができる例示の処理３００を示す。しかし、処理３００は、本明細書に記載される技術を実行するために実装することができる処理の単なる例示のタイプであり、他の処理が可能であることは理解すべきである。
【００４７】
処理３００はブロック３０２において開始され、ここで、リバースプロキシ１０８上のリモートアクセスファシリティが、ＤＮＳクライアントからＤＮＳクエリを受け取る。ＤＮＳクエリは、公的に解決可能なドメイン名（例えば、「ｗｗｗ．ｍｉｃｒｏｓｏｆｔ．ｃｏｍ」）またはプライベートネットワークリソースのプライベートドメイン名（例えば、「ｈｒｗｅｂ」）を含む、任意の適切なドメイン名を含有することができる。図２のブロック２０２に関連して上記で説明したように、このＤＮＳクエリは、−ＤＮＳサーバのＩＰアドレスとしてリバースプロキシ１０８のＩＰアドレスがＤＮＳクライアントに提供される本発明の実施形態におけるように−、リバースプロキシ１０８自体に伝送されていても良いし、または、ＤＮＳサーバ１１０に伝送されて、リバースプロキシ１０８を通して渡されても良い。
【００４８】
ブロック３０４において、リモートアクセスファシリティは、ＤＮＳクエリをプライベートＤＮＳサーバ１１０に渡してドメイン名をＩＰアドレスに解決し、ブロック３０６において、ＤＮＳサーバ１１０からの応答を受け取る。
【００４９】
ブロック３０８において、リモートアクセスファシリティは、ドメイン名が公的に解決可能なドメイン名またはプライベートドメイン名であったかどうかを判定する。この判定は、ブロック３０６において受け取られる応答内に含有されるＩＰアドレスを検査することを含む、任意の適切な方法で行うことができる。ＩＰアドレスは、どのネットワークにＩＰアドレスが関連するかにより変わり、ＩＰアドレスがプライベートネットワーク１０６のＩＰアドレスの特徴と一致するかどうかを判定することにより、ドメイン名がプライベートドメイン名であるかどうかを識別することが可能である。例えば、プライベートネットワーク１０６のＩＰアドレスは、「１０．１．＊．＊」（ここで「＊」は任意の数字を表す）という形式とすることができ、応答内のＩＰアドレスがその形式（例えば、１０．１．１．１）と一致する場合、そのＩＰアドレスはプライベートネットワークリソースのプライベートドメイン名に関連するものであると判定することができる。その形式に一致しないＩＰアドレスは、プライベートドメイン名またはプライベートネットワークリソースに関連するのではなく、公的に解決可能なドメイン名に関連するものと判定することができる。
【００５０】
ブロック３０８において、ドメイン名がプライベートドメイン名ではなく、かつ、プライベートネットワークリソースに関連しないと判定される場合、ブロック３１０において、ＤＮＳクエリの結果を、クエリを発行したコンピュータデバイス１００およびＤＮＳクライアントに戻すことができ、処理３００が終了する。
【００５１】
しかし、ブロック３０８において、ドメイン名がプライベートドメイン名であり、かつ、プライベートネットワークリソースに関連すると判定される場合、リモートアクセスファシリティは、１つまたは複数の動作をとり、ＤＮＳクエリを発行したコンピュータデバイス１００がプライベートネットワークリソースと通信することを確実にすることができる。例えば、プライベートネットワークリソースがウェブサーバ１０２である場合、コンピュータデバイス１００がＤＮＳサーバ１１０により戻されたＩＰアドレスを使用してウェブサーバ１０２と直接通信しようとすると、プライベートネットワーク１０６の１つまたは複数のセキュリティ設備が、コンピュータデバイス１００がこの通信を実行するのを停止させることができる。
【００５２】
リモートアクセスファシリティは、任意の適切な動作をとり、コンピュータデバイス１００がプライベートリソース（例えば、ウェブサーバ１０２）と通信することを可能にすることができる。例えば、ブロック３０８においてドメイン名がプライベートドメイン名であると判定されると、ブロック３１２において、リバースプロキシ１０８は、任意の適切な方法でＩＰアドレスを記憶することにより、ブロック３０６において受け取られたＤＮＳの応答で戻されるＩＰアドレスの記録を取ることができる。次に、ブロック３１４において、リバースプロキシ１０８は、ＤＮＳの応答を編集してそれが持つＩＰアドレス（すなわち、リバースプロキシ１０８のＩＰアドレス）を提供し、この編集されたＤＮＳの応答をコンピュータデバイス１００に渡すことができ、処理３００が終了する。
【００５３】
ＤＮＳの応答をこのように編集することにより、リモートアクセスファシリティは、コンピュータデバイス１００を強化し−いくつかの実装においては、コンピュータデバイス１００には分からないままで−プライベートリソース（例えば、ウェブサーバ１０２）向けの通信がリバースプロキシ１０８に直接送信されるように指示する。コンピュータデバイス１００がそのようにする理由は、編集されたＤＮＳの応答が、そこに含まれるＩＰアドレス（これは実際にはリバースプロキシ１０８のＩＰアドレスである）が、コンピュータデバイス１００がＤＮＳクエリを発行して求めたドメイン名に関連するＩＰアドレスであるということを単に示すことができるからである。リバースプロキシ１０８は次に、プライベートリソース（例えば、ウェブサーバ１０２）向けの全ての通信を受け取り、それらの通信をプライベートリソース（例えば、ウェブサーバ１０２）に渡すべきかどうかを、プライベートネットワーク１０６に対して確立されるセキュリティ規則を適用することにより判定することができる。このようにして、プライベートアクセス１０６のセキュリティの制限を守ることができるが、プライベートネットワーク１０６へのリモートアクセスを可能にすることができる。通信をルーティングするためのリバースプロキシ１０８により実装することができる例示の技術については、以下にさらに詳細に記載される。
【００５４】
図３には図示しないが、いくつかの実装において、ブロック３０８において、リモートアクセスファシリティによりドメイン名がプライベートドメイン名であると判定されると、応答を送ったコンピュータデバイス１００に対して任意のＩＰアドレスを戻すべきかに関して、別の判断がなされ得る。この判断は、プライベートネットワーク１０６に対して確立されるセキュリティの制限に従って行うことができる。例えば、セキュリティの制限は、リモートアクセスが許可されない１つまたは複数のネットワークリソースを識別することができる。それらの禁止されるネットワークリソースの内の１つへの要求を受け取ると、リモートアクセスファシリティは、ＤＮＳクエリを発行したコンピュータデバイス１００に対してリモートアクセスを許可すべきではないと判定することができる。この場合、リモートアクセスファシリティは、ドメイン名を解決できずコンピュータデバイス１００にＩＰアドレスが提供されないということを示す、ＤＮＳクエリに対する応答を構成することができる。通信の伝送時に使用するＩＰアドレスが無ければ、コンピュータデバイス１００は、直接的もしくは間接的のいずれでもリバースプロキシ１０８を介して、プライベートリソースと通信することはできないであろう。
【００５５】
上記で説明したように、図３の処理３００は、リモートアクセスファシリティにより実装されて、プライベートネットワーク１０６の外部のコンピュータデバイスによりドメイン名の解決を可能にすることができる、処理の単なる一例であり、他の処理が可能である。上記で説明したように、リバースプロキシ１０８はまた、ＤＮＳサーバとして構成することもでき、リバースプロキシ１０８とＤＮＳサーバ１１０は同じデバイスとなる。そのようなデバイスを実装する本発明の実施形態において、ＤＮＳクエリは別のデバイスに渡されないが、リバースプロキシ１０８のＤＮＳ機能性によりローカルに扱われるように、処理３００を変更することができる。
【００５６】
コンピュータデバイス１００のＤＮＳクライアントにより他の処理を実装し、ドメイン名を解決することもできる。図２に関連して上記で説明したように、本発明のいくつかの実施形態において、全てのＤＮＳクエリをプライベートＤＮＳサーバに渡すよう、コンピュータデバイス１００のＤＮＳクライアントを構成することができる。本発明の代替実施形態において、外部ネットワーク１０４のＤＮＳサーバ１１２等の公的なＤＮＳサーバを使用して、公的に解決可能なドメイン名を求めるＤＮＳクエリを実行するように、また、プライベートＤＮＳサーバを使用してプライベートネットワークリソースを求めるＤＮＳクエリを実行するように、コンピュータデバイス１００を構成することができる。従って、ＤＮＳクライアントを、２つの異なるＤＮＳサーバを維持するよう構成することができる。
【００５７】
図４は、２つの異なるＤＮＳサーバで構成されるコンピュータデバイス１００のＤＮＳクライアントにより実行することができる例示の処理４００を示す。しかし、処理４００は、プライベート識別子（例えば、プライベートドメイン名）をプライベートネットワークの外部で解決可能にするために実装することができる処理の単なる例示のタイプであり、他の処理が可能であることは理解すべきである。
【００５８】
処理４００は、ブロック４０２において開始され、ここでＤＮＳクライアントはプライベートネットワークのＤＮＳサーバ１１０のＩＰアドレスを用いて構成される。これは、図２のブロック２０２に関連して上述した技術のいずれかを使用することによるなど、任意の適切な方法で行うことができる。
【００５９】
ブロック４０４において、コンピュータデバイス１００を、外部ネットワーク１０４に対して接続することができ、また、外部ネットワーク１０４と通信するよう構成することができる。コンピュータデバイス１００の構成には、外部ネットワーク１０４のＤＮＳサーバ１１２を使用してドメイン名を解決するコンピュータデバイス１００のＤＮＳクライアントを構成する事が含まれる。これは、動的ホスト構成プロトコル（ＤＨＣＰ）等の既知の技術によるなど、任意の適切な方法で行うことができる。
【００６０】
ブロック４０６において、ネットワークリソースを識別するドメイン名は、（例えば、コンピュータデバイス１００のユーザ、またはコンピュータデバイス１００上で実行されるアプリケーションプログラムから）コンピュータデバイス１００により受け取られる。このドメイン名は、任意のドメイン名とすることができ、例えば、「ｗｗｗ．ｍｉｃｒｏｓｏｆｔ．ｃｏｍ」のような公的に解決可能なドメイン名、または、プライベートネットワーク１０６の外部では使用できない「ｈｒｗｅｂ」等のプライベートドメイン名である。プライベートドメイン名は、ウェブサーバ１０２等のプライベートネットワークリソースに関連付けることができる。
【００６１】
ブロック４０６において受け取ったドメイン名を解決する前に、ブロック４０８において、コンピュータデバイス１００のＤＮＳクライアントは、ドメイン名が公的に解決可能なドメイン名またはプライベートネットワークリソースに関連するプライベートドメイン名であるかどうかを判定することができる。この判断は、ＤＮＳクライアントを構成する２つのＤＮＳサーバの内のどちらを使用してドメイン名を解決すべきかを判定するためになされる。この判定は、既知のプライベートドメイン名の一覧（例えば、プライベートネットワーク１０６に関連することが既知であるドメイン名の一覧）とドメイン名を比較することによるなど、任意の適切な方法で行うことができる。この一覧は、コンピュータデバイス１００上のＨＯＳＴＳファイルに記憶する、または任意の他の方法で記憶するなど、任意の適切な方法で記憶することができる。
【００６２】
ブロック４０８において、ドメイン名がプライベートドメイン名ではないと判定される場合、および／または、ドメイン名が公的に解決可能なドメイン名であると判定される場合、ブロック４１０において、ＤＮＳクライアントは、外部ネットワーク１０４のＤＮＳサーバ１１２を使用して、ドメイン名を解決することができる。この解決は、従来のＤＮＳ解決技術によることを含む、任意の適切な方法で実行することができる。
【００６３】
しかし、ブロック４０８において、ドメイン名がプライベートドメイン名であると判定される場合、ブロック４１２において、ＤＮＳクライアントは、プライベートネットワーク１０６のＤＮＳサーバ１１０を使用して、ドメイン名を解決することができる。この解決は、図３に関連して上述した技術のいずれかによることを含む任意の適切な方法で、プライベートネットワーク１０６を使用して実行することができる。
【００６４】
ブロック４１０および４１２の一方においてドメイン名が解決されると、コンピュータデバイス１００は、解決の間に取得されたＩＰアドレスにより識別されるリソースと通信することができ、処理４００が終了する。
【００６５】
上述のプライベートドメイン名を解決するための技術においては、プライベートネットワーク１０６のＤＮＳサーバ１１０等のプライベートＤＮＳサーバを使用してプライベートドメイン名が解決された。これは、本発明のいくつかの実施形態において行うことができる。しかし、他の実施形態において、プライベートドメイン名は、公的に解決可能とすることができるため、コンピュータデバイス１００がプライベートＤＮＳサーバにコンタクトする必要が無い。これは任意の適切な方法で行うことができる。
【００６６】
プライベートドメイン名を公的に解決可能にする本発明のいくつかの実施形態では、ＤＮＳサフィックスを使用して行う。ＤＮＳクライアントは、従来、部分的修飾ドメイン名（ｐａｒｔｉａｌｌｙ−ｑｕａｌｉｆｉｅｄ  ｄｏｍａｉｎ  ｎａｍｅ：ＰＱＤＮ）として既知の部分的なドメイン名だけを受け取った場合に、ＤＮＳサフィックスを使用して完全修飾ドメイン名（ｆｕｌｌｙ−ｑｕａｌｉｆｉｅｄ  ｄｏｍａｉｎ  ｎａｍｅ：ＦＱＤＮ）としても既知の完全なドメイン名を作成する。完全修飾ドメイン名は、完全かつ一義的なものであり、これにはトップレベルドメイン（ｔｏｐ−ｌｅｖｅｌ  ｄｏｍａｉｎ：ＴＬＤ）が含まれる。ＴＬＤはＦＱＤＮの最後の部分であり、ドメイン名の周知の末尾である「．ｃｏｍ」「．ｏｒｇ」「．ｎｅｔ」などがあるが、公的またはプライベートの任意の識別子をＴＬＤとして使用することができることは理解すべきである。
【００６７】
ＤＮＳはＦＱＤＮ（ＰＱＤＮではなく）を解決する能力があるだけであるため、入力されるＰＱＤＮにＤＮＳサフィックスが追加されＦＱＤＮが作成される。例えば、ユーザがドメイン名全体ではなくドメイン名の一部、例えば「ｍｉｃｒｏｓｏｆｔ．ｃｏｍ」の代わりに「ｍｉｃｒｏｓｏｆｔ」、を入力すると、コンピュータデバイスのＤＮＳクライアントは、サフィックス「．ｃｏｍ」を入力されたドメイン名に追加して解決可能な完全修飾ドメイン名を作成することができる。典型的には、サフィックスは一度に１つ追加され、サフィックスの内の１つが解決を成功させるＦＱＤＮを作るまで、各サフィックスを使用して解決が試みられる。ＤＮＳにおいて解決が成功すると、いくつかの適切な結果が生み出され、これにはＦＱＤＮに関連するＩＰアドレスが含まれる。従来、これらのサフィックスはトップレベルドメイン名に限定されている。
【００６８】
ＤＮＳサフィックスの追加はまた、サフィックスが追加されるＰＱＤＮを入力したユーザまたはアプリケーションに対しては透過的な方法で行うこともができる。サフィックスは、ＤＮＳの解決処理において使用されるだけ−すなわちＤＮＳクエリの発行時に使用されるだけ−であるため、ユーザ／アプリケーションにより使用されるドメイン名は、まだ部分的修飾ドメイン名のままである。
【００６９】
出願人は、プライベートネットワークリソースがＦＱＤＮではなく部分的修飾ドメイン名により識別されることが多いことを理解している。さらに、プライベートネットワークリソースは、「ｈｒｗｅｂ．ｃｏｒｐ」等の複合ラベルではなく、「ｈｒｗｅｂ」等の１つのラベルだけを含む「フラット名」として既知のＰＱＤＮを使用して、識別されることが多い（ＰＱＤＮにより識別されるプライベートネットワークリソースは、任意の適切な識別子を使用して識別されるが）。そのようなプライベートドメイン名−ＴＬＤを除く−は、完全修飾ドメイン名ではなく、サフィックスを追加してドメイン名を完全修飾された解決可能なものにする必要がある。
【００７０】
本発明のいくつかの実施形態において、コンピュータデバイス１００のＤＮＳクライアントに、プライベートネットワーク１０６を識別するＤＮＳサフィックスを供給することができる。部分的修飾ドメイン名が受け取られると、このＤＮＳサフィックスは、他のＤＮＳサフィックスと同様に扱われ、ＰＱＤＮに追加されてＦＱＤＮを作成することができる。例えば、プライベートネットワークのためのサフィックスは、「ｒｅｍｏｔｅａｃｃｅｓｓ．ｃｏｒｐｏｒａｔｅ．ｃｏｍ」とすることができる。このサフィックスは、次にＰＱＤＮに追加されて解決可能なＦＱＤＮを作成する。
【００７１】
リモートアクセスが許可されるべきプライベートネットワークリソースのそれぞれに対応する完全修飾ドメイン名（例えば、プライベートドメイン名と、「ｈｒｗｅｂ．ｒｅｍｏｔｅａｃｃｅｓｓ．ｃｏｒｐｏｒａｔｅ．ｃｏｍ」等のサフィックスとを使用して形成される）は、次に、インターネット等の公的に利用可能なネットワークを介することを含む、ＤＮＳのシステムを通して公表される。こうすることにより、公衆ネットワーク上で利用可能なＤＮＳサーバは、これらのＦＱＤＮに対応するエントリを有することができる。これらのエントリはまた、ＦＱＤＮに対応するＩＰアドレスを指定することができる。上記で説明したように、本発明のいくつかの実施形態において、このＩＰアドレスは、ドメイン名に対応するウェブサーバ１０２等のプライベートネットワークリソースのＩＰアドレスとすることができる。しかし、他の実施形態において、ＩＰアドレスは、リバースプロキシ１０８のＩＰアドレスなど、別のネットワークデバイスのものとすることができる。
【００７２】
図５は、ＤＮＳサーバ１１２等の公的ＤＮＳサーバが、各プライベートネットワークリソースのＦＱＤＮに対応するエントリを有するコンピュータシステムにおいて動作する、コンピュータデバイス１００により実装することができる例示の処理５００を示す。しかし、処理５００は、プライベートネットワークの外部からプライベート識別子を解決するために実装することができる処理の単なる例示のタイプであり、他の処理が可能であることは理解すべきである。
【００７３】
図５の処理５００は、ブロック５０２において開始され、ここでコンピュータデバイス１００のＤＮＳクライアントは、プライベートネットワーク１０６に関連する最後の１つのサフィックスを用いて構成される。この構成は、図２のブロック２０２に関連して上述した例示の技術のいずれかを使用することによるなど、任意の適切な方法で実行することができる。
【００７４】
ブロック５０４において、コンピュータデバイス１０４は、外部ネットワーク１０４等の外部ネットワークに対して接続され、外部ネットワーク１０４と通信するよう構成することができる。この構成には、外部ネットワーク１０４のＤＮＳサーバ１１２を使用してドメイン名を解決するようコンピュータデバイス１００のＤＮＳクライアントを構成すること、を含むことができる。これは、動的ホスト構成プロトコル（ＤＨＣＰ）等の既知の技術によることを含む、任意の適切な方法で行うことができる。
【００７５】
ブロック５０６において、コンピュータデバイス１００は、入力として部分的修飾ドメイン名を受け取り、このＰＱＤＮをＤＮＳクライアントに入力する。このドメイン名は、コンピュータデバイス１００のユーザまたはコンピュータデバイス１００上で実行されるアプリケーションプログラムを含む、任意の適切なソースから受け取ることができる。ブロック５０６で受け取られるＰＱＤＮは、ウェブサーバ１０２等のプライベートネットワークリソースを含む任意の適切なネットワークリソースに関連付けることができる。
【００７６】
ブロック５０８において、ブロック５０６のＰＱＤＮとＤＮＳクライアントを構成するＤＮＳサフィックスとを組み合わせて、ＤＮＳクライアントによりＦＱＤＮが作成される。ブロック５０２の構成の結果、これらのサフィックスの１つが、プライベートネットワーク１０６に対応する「ｒｅｍｏｔｅａｃｃｅｓｓ．ｃｏｒｐｏｒａｔｅ．ｃｏｍ」等のサフィックスとすることができる。ＤＮＳクライアントは、ＤＮＳクライアントを構成するサフィックスのそれぞれを１度に１つ追加し、そのそれぞれを、ＤＮＳクエリを外部ネットワーク１０４のＤＮＳサーバ１１２に発行することにより、解決しようと試みる。ＤＮＳクライアントは、これらのサフィックスのそれぞれについて、その中の１つがＤＮＳサーバ１１２により解決可能であるとして検出され、かつ、それに応じて対応するＩＰアドレスが受け取られるまで、任意の適切な順番で試行し続けることができる。プライベートネットワークリソースのＦＱＤＮを事前に公表した結果、ＤＮＳサーバ１１２は、ブロック５０６で受け取られたドメイン名に対応するエントリ、元々入力されるドメイン名が「ｈｒｗｅｂ」である場合なら「ｈｒｗｅｂ．ｒｅｍｏｔｅａｃｃｅｓｓ．ｃｏｒｐｏｒａｔｅ．ｃｏｍ」に対応するエントリ等、を有することができる。いくつかの実施形態において、ＤＮＳサーバ１１２により実行される解決処理は、ＤＮＳサーバ１１２がＦＱＤＮのエントリをローカルに持たない場合などに、ＤＮＳクエリを１つまたは複数の他のＤＮＳサーバに転送する動作を含むことができる。このＤＮＳクエリの転送は、任意の既知のＤＮＳ技術に従うことを含む、任意の適切な方法で実行することができる。
【００７７】
ブロック５１０において、ＤＮＳクライアントは、ＦＱＤＮに対応するＩＰアドレスを含む、ＤＮＳクライアントのＤＮＳクエリへの応答を受け取る。上述の他の例におけるように、本発明のいくつかの実施形態において、ＦＱＤＮに対応するＩＰアドレスは、所望のプライベートネットワークリソース（例えば、ウェブサーバ１０２）ではなくリバースプロキシ１０８の、ＩＰアドレスとすることができる。こうすることにより、コンピュータデバイス１００にＤＮＳ解決を実行させ、恐らくコンピュータデバイス１００には分からないまま、リバースプロキシ１０８を介してプライベートネットワークリソースに向けられる全ての通信を通すことにより、リバースプロキシ１０８が、１つまたは複数のセキュリティ規則を適用してプライベートネットワーク１０６のセキュリティの制限が維持されることを確実にすることができるようにする。例えば、ＦＱＤＮが解決され、コンピュータデバイス１００がＩＰアドレスを使用して通信を試みると、リバースプロキシ１０８は、コンピュータデバイス１００に、プライベートネットワーク１０６を用いて（有効なユーザ名および／またはパスワードを提供することによるなどして）、リバースプロキシ１０８自身を認証するよう要求することができ、また、コンピュータデバイス１００が認証されない場合、リバースプロキシ１０８は通信を許可しない。
【００７８】
ブロック５１２において、ＦＱＤＮが、ブロック５１０において受け取られるＩＰアドレスに解決されると、コンピュータデバイス１００はＩＰアドレスにより識別されるネットワークリソースと通信し、処理５００が終了する。
【００７９】
外部ネットワーク１０４からのプライベートネットワークリソースとの通信に使用可能なプライベートネットワークリソースの識別子を作成するための例示の技術が、上記に記載される（また、下記に記載されるものもある）。これらの技術は、ドメイン名およびドメイン名システム（ＤＮＳ）を使用して記載される。しかし、ドメイン名システムセキュリティ拡張（Ｄｏｍａｉｎ  Ｎａｍｅ  Ｓｙｓｔｅｍ  Ｓｅｃｕｒｉｔｙ  Ｅｘｔｅｎｓｉｏｎｓ：ＤＮＳＳＥＣ）等のＤＮＳに対する拡張、またはＤＮＳ以外の任意の他の技術を含む、任意の適切な解決の技術を使用することができることは理解すべきである。
【００８０】
さらに、プライベートネットワークリソースのドメイン名等の、プライベートネットワークリソースの識別子がＩＰアドレスに解決されると、コンピュータデバイスとプライベートネットワークリソースとの間に直接または間接的（例えば、リバースプロキシサーバを介して）に任意の適切な方法で、通信が発生することは理解すべきである。この通信を実行するための技術については以下に記載されるが、これらの技術が単なる例示であること、また、本発明の実施形態は任意の特定の技術に従って通信を実行することに限定されないこと、は理解すべきである。
【００８１】
図６は、本発明のいくつかの実施形態において、コンピュータデバイス１００により実装することができるこの通信を実行するための、そのような技術の１つを示す。図６の例示の処理６００がブロック６０２において開始され、ここでプライベートネットワークリソースのドメイン名がＩＰアドレスに解決される。この例において、ＩＰアドレスは、リバースプロキシ１０８に関連するものであるが、ＩＰアドレスはプライベートネットワーク上の任意の適切なネットワークリソースに関連するものでも良いことは理解すべきである。ブロック６０２の解決は、上述の技術のいずれかに従うことを含む、任意の適切な方法で行うことができる。ブロック６０４において、ブロック６０２において識別されるようなリバースプロキシ１０８に対して接続が確立される。本発明のいくつかの実施形態において、ブロック６０４において確立される接続を、１つまたは複数のセキュリティ技術を使用してセキュアにすることができる。例えば、インターネットプロトコルセキュリティ（ＩＰｓｅｃ）または任意の他のセキュリティ技術等のセキュリティ技術を使用して、接続を暗号化および／または認証することができる。このセキュリティは、ユーザにより入力される要求、リバースプロキシ１０８への接続時のリバースプロキシ１０８の要求（例えば、リバースプロキシ１０８がコンピュータデバイス１００に認証情報を提供するよう命令する時）、コンピュータデバイス１００の構成設定、に基づき、または任意の他の方法で、実装することができる。例えば、コンピュータデバイス１００のセキュリティポリシーを、リバースプロキシ１０８への接続が、ＩＰｓｅｃによるなど、１つまたは複数のセキュリティ技術を使用してセキュアにされるように、要求するよう構成することができる。
【００８２】
ブロック６０６において、リバースプロキシ１０８への接続が、開かれ、および／またはセキュアにされると、コンピュータデバイス１００は、リバースプロキシ１０８との通信を開始することができる。上記で説明したように、コンピュータデバイス１００は、ウェブサーバ１０２等の特定のプライベートネットワークリソースと通信を試みようすることができるが、リバースプロキシ１０８のＩＰアドレスを提供するＤＮＳ解決の結果、コンピュータデバイス１００はリバースプロキシ１０８と通信することができる。これは、コンピュータデバイス１００には分からないように行うことができる。すなわち、いくつかの実施形態において、コンピュータデバイス１００には、ブロック６０２において受け取られたＩＰアドレスがプライベートネットワークリソース（例えば、上記の例ではウェブサーバ１０２）のＩＰアドレスではないことを認識できず、リバースプロキシ１０８とそれがまるでプライベートネットワークリソースであるかのように通信することができる。リバースプロキシ１０８は次に、以下に記載する例示の技術を含む任意の適切な技術を使用して、これらの通信をプライベートネットワークリソース（例えば、ウェブサーバ１０２）に転送することができる。
【００８３】
ブロック６０６における通信は、任意の適切なプロトコルに従って、任意の適切な形式で渡すことができる。本発明のいくつかの実施形態において、これらの通信は、通信内に元々入力される識別子を通信内に埋め込むプロトコルに従って渡されるので、その識別子をリバースプロキシ１０８が使用して、受け取った通信をプライベートネットワーク１０６内のどこに転送するかを判定することができるようになる。
【００８４】
例えば、中でも、ハイパーテキスト転送プロトコル（ＨＴＴＰ）およびトランスポートレイヤセキュリティ（Ｔｒａｎｓｐｏｒｔ−Ｌａｙｅｒ  Ｓｅｃｕｒｉｔｙ：ＴＬＳ）プロトコルは、通信の種々のプロパティを識別するヘッダを各通信内に含むことができる。これらのプロパティには、通信が向けられる「ホスト」デバイスの識別子が含まれる。識別子は、任意の適切な形式をとることでき、ＨＴＴＰ／ＴＬＳがＤＮＳに関連して使用される環境においては、識別子は、ＤＮＳ処理を通してＩＰアドレスに解決されるべくＤＮＳクライアントに入力された、ホストデバイスの元々入力されるドメイン名である。
【００８５】
ＨＴＴＰおよびＴＬＳなどのようなプロトコルに従って通信する本発明の実施形態においては、通信のヘッダに埋め込まれる識別子は、ブロック６０２において元々受け取られ、かつ、コンピュータデバイス１００のＤＮＳクライアントにより解決されるドメイン名とすることができる。例えば、受け取られたドメイン名が「ｈｒｗｅｂ」であり、任意の適切な方法で解決された場合（例えば、「ｈｒｗｅｂ」をＤＮＳサーバ１１０等のＤＮＳサーバに渡すことにより、または、「ｈｒｗｅｂ．ｒｅｍｏｔｅａｃｃｅｓｓ．ｃｏｒｐｏｒａｔｅ．ｃｏｍ」等の解決されるＦＱＤＮを作成することにより、または、任意の他の方法により）、ヘッダに埋め込まれる識別子を、元々入力される識別子「ｈｒｗｅｂ」とすることができる。
【００８６】
このヘッダを含む通信を、ブロック６０６においてリモートプロキシ１０８に渡すことができる。ブロック６０８において、コンピュータデバイス１００は、要求したウェブページをウェブサーバ１０２から受け取るなど、所望のプライベートネットワークリソースからの応答をリバースプロキシ１０８を介して、受け取ることができる。ブロック６１０に示すように、ブロック６０６および６０８は、通信が完了するまで繰り返され、−例えば、プライベートネットワーク１０６に関連する企業の従業員が仕事を終わらせる時、または、リモートでの作業を終わらせる時−処理６００は終了する。
【００８７】
リバースプロキシ１０８は、通信がウェブサーバ１０２等のプライベートネットワークリソースに向けられる時、リバースプロキシ１０８が受け取るそれらの通信の受け手を任意の適切な方法で識別するよう適合されることができる。例えば、図２および４に関連して上述したようないくつかの実施形態において、コンピュータデバイス１００が、プライベートドメイン名等のプライベート識別子をリバースプロキシ１０８を介して渡し、ＤＮＳサーバ１１０を用いてプライベート識別子を解決するよう適合される場合、リバースプロキシ１０８は、どのドメイン名をどのコンピュータデバイスによりクエリするかについての記録を保持することができる。コンピュータデバイス１００から通信が受け取られると、リバースプロキシ１０８は、その記録からコンピュータデバイス１００によりクエリされたドメイン名を判定し、クエリされたドメイン名に通信が向けられると仮定し、そのドメイン名により識別されるプライベートネットワークリソース（例えば、ウェブサーバ１０２）に通信を渡すことができる。同様に、リバースプロキシ１０８は、プライベートネットワークリソースから応答を受け取ると、そのプライベートネットワークリソースにクエリを発行したことをリバースプロキシ１０８の記録が示すコンピュータデバイス１００に、その応答を転送することができる。
【００８８】
しかし、本発明の代替の実施形態において、リバースプロキシ１０８は、通信が向けられるプライベートネットワークリソースを、通信自体から判定することができる。例えば、図６に関連して上記で説明したように、いくつかの実施形態において、コンピュータデバイス１００は、所望のネットワークリソースの識別子を通信内に埋め込むプロトコルに従って、通信をリバースプロキシ１０８と交換することができる。リバースプロキシ１０８がそのような通信を受け取ると、リバースプロキシ１０８は通信を検査して所定の受け手を判定することができる。
【００８９】
図７は、処理７００の一例を示し、これは、プライベートネットワーク（例えば、コンピュータデバイス１００）の外部のコンピュータデバイスから受け取られる通信を転送すべき転送先のプライベートネットワークリソースを判定するための、リバースプロキシ１０８のリモートアクセスファシリティにより実装することができる。処理７００は、本発明の実施形態において実装することができ、これにおいて、コンピュータデバイス１００は、通信の所定の受け手の識別子を通信内に埋め込むプロトコル（例えば、ＨＴＴＰ、ＴＬＳその他）に従って、リバースプロキシ１０８と通信を交換する。しかし、処理７００は、本発明の実施形態において実装することができる処理のタイプを単に例示するものであることは理解すべきである。本明細書に記載される、これらのプロトコルに従って通信を扱う技術が実装される時、他の方法でどのように通信を転送するかを判定する他の処理を実装することができる。さらに、これらのプロトコルは、これらの技術を実装して扱うことができるプロトコルのタイプの単なる一例であること、また、処理を実装して他のタイプのプロトコルを扱うことができること、は理解すべきである。
【００９０】
処理７００はブロック７０２において開始され、ここで、リバースプロキシ１０８は、外部ネットワーク１０４に対して接続されるコンピュータデバイス１００からの接続を受け取る。リバースプロキシ１０８のリモートアクセスファシリティは、ＩＰｓｅｃを含む１つまたは複数のセキュリティ技術を使用して接続をセキュアにするなど、任意の適切な動作をとり接続を開くことができる。
【００９１】
ブロック７０４において、リモートアクセスファシリティは、通信をコンピュータデバイス１００から受け取るが、この通信には通信を向けるプライベートネットワークリソースの識別子が埋め込まれる。リモートアクセスファシリティは次に、通信を分析してこの識別子を配置させることができる。例えば、ＨＴＴＰプロトコルに従って伝送される通信では、通信は「ホスト」デバイスの識別子を含むヘッダを有することができる。識別子は、接続が開かれる前にコンピュータデバイス１００に元々入力されたホストのドメイン名とすることができる。リモートアクセスファシリティは次に、ホストデバイスの識別子を使用して、通信が渡されるべきプライベートネットワークリソース（例えば、ウェブサーバ１０２）を配置させることができる。
【００９２】
ブロック７０６において、通信を、通信内で識別されるプライベートネットワークリソースに渡すことができる。これは任意の適切な方法で行うことができる。いくつかの実装において、リモートアクセスファシリティは、通信内の識別子をＩＰアドレスに解決することができるが、これは、ドメイン名およびＩＰアドレスのローカルな記録（図３のブロック３１２において作成されるような記録）を検査することにより、または、識別子をプライベートＤＮＳサーバ１１０に渡すことにより、行うことができる。
【００９３】
ブロック７０８において、リモートアクセスファシリティは、コンピュータデバイス１００に転送すべき応答をプライベートネットワークリソースから受け取り、その応答をコンピュータデバイス１００に転送する。これは任意の適切な方法で行うことができ、外部ネットワーク１０４上のコンピュータデバイスからの開かれた接続、プライベートネットワークリソースと通信を実行しているそれらのコンピュータデバイス、それらのプライベートネットワークリソースに伝送される情報またはそれらのプライベートネットワークリソースから要求される情報のタイプ、および／または、任意の他の適切な情報、の一覧を保持することなどにより行うことができる。これらの情報に基づき、リモートアクセスファシリティは、どの外部ネットワーク１０４のコンピュータデバイスに応答を転送すべきかを判定することができ、ブロック７０８においてコンピュータデバイス１００に応答を転送する。
【００９４】
ブロック７１０に示すように、ブロック７０６および７０８は、通信が完了するまで繰り返され、−例えば、プライベートネットワーク１０６に関連する企業の従業員が仕事を終わらせる時、または、リモートでの作業を終わらせる時−処理７００は終了する。
【００９５】
図７には図示しないが、リバースプロキシ１０８のリモートアクセスファシリティが、任意の適切な動作をとり、プライベートネットワーク１０６の１つまたは複数のセキュリティポリシーを適用することができることは理解すべきである。例えば、外部ネットワーク１０４のコンピュータデバイス１００がブロック７０２において接続を開くと、リモートアクセスファシリティは、コンピュータデバイス１００がプライベートネットワーク１０６にリモートにアクセスすることを承認するかどうかを判定することができる。加えてまたは代替えとして、ブロック７０４において、リモートアクセスファシリティは、コンピュータデバイス１００から受け取られる通信が、許可されたまたは許可されないリモートアクセス動作と関連するかどうか，および／または、リモートにアクセスされることが許可されたまたは許可されないプライベートネットワークリソースに向けられるのかどうか、を判定することができる。例えば、ブロック７０４において受け取られる通信が、ウェブサーバ１０２からウェブページを検索することに関連する場合、通信は許可されるが、通信が、ファイルサーバから特定のセキュアな文書を要求する場合、リモートアクセスファシリティは、その動作を許可しない。動作がリモートアクセスファシリティにより許可されない場合、リモートアクセスファシリティは、それに応じて任意の適切な動作を取ることができる。例えば、いくつかの実施形態において、リモートアクセスファシリティは、コンピュータデバイス１００に動作が許可されないことを通知することができる。コンピュータデバイスへの通知は、任意の適切な方法で行うことができ、要求されまたは実行される動作のタイプによる。例えば、許可されない通信が特定のセキュアなウェブページを要求するものであり、リモートファシリティがその動作を許可せず、セキュアなウェブページがプライベートネットワーク１０６の外部に伝送されることが妨げられた場合、リモートアクセスファシリティは、代わりに、セキュリティの制限によりプライベートネットワーク１０６の外部でウェブページへのアクセスを許可しないということを示す代用のウェブページを、応答で伝送することができる。
【００９６】
コンピュータデバイス１００とプライベートネットワークリソースとの間で受動的に通信を双方向に渡すことに加えて、またはその代わりに、リバースプロキシ１０８のリモートアクセスファシリティは、任意の適切な動作をとりそれらの通信を編集することができる。例えば、リモートアクセスファシリティは、セキュリティポリシーに関する情報を挿入および／または削除することができる。
【００９７】
本発明のいくつかの実施形態において、リモートアクセスファシリティはまた、通信が適切に渡されることを可能にし、リモートアクセスが達成されている様式で行う結果として、この機能が無ければ得られない通信を得ることができる機能を実行することができる。例えば、いくつかの実施形態において、リモートアクセスファシリティは、ＨＴＴＰクッキーに関する機能を実行することができる。ＨＴＴＰクッキーは、ウェブサーバおよび／またはウェブクライアントがウェブセッションに関する情報を記憶することが可能な１つの方法である。例えば、ウェブサーバがウェブクライアントに情報を供給する前にウェブサーバに渡されるべき、ウェブサーバが必要なウェブクライアントのユーザのユーザ名を、ウェブクライアントが持っている場合、その情報はユーザから受け取られ、ウェブクライアント上のＨＴＴＰクッキーにローカルに記憶される。別の例として、ウェブクライアントが、製品に関する情報を購入のために商業ウェブサイトから集めている場合、ウェブクライアントは、それらの製品に関する情報（例えば、「ショッピングカート」）を、ウェブクライアント上のＨＴＴＰクッキーにローカルに記憶し、後でウェブクライアントのユーザがその購入を決めた時にウェブサーバに送られるようにすることができる。
【００９８】
ＨＴＴＰクッキーは機密情報（例えば、ウェブサーバに送られるユーザ名）を記憶することができるため、ウェブクライアントは、それらのＨＴＴＰクッキーが、特定の一意的なドメイン名に関連するような一意的な方法で記憶可能であること、かつ、特定の一意的なドメイン名でのみ検索可能であること、を確実にするための種々の対策をとることができる。ＨＴＴＰクッキーが一意的なドメイン名に関連することを確実にするために、ウェブクライアントは、クッキーの使用を完全修飾ドメイン名（ＦＱＤＮ）を持つウェブサーバのみに制限することができる。
【００９９】
上記で説明したように、ウェブサーバ１０２のドメイン名のような、プライベートネットワークリソースに使用されるプライベート識別子は、完全修飾ドメイン名ではなく、単一のラベル「ｈｒｗｅｂ」等の部分的修飾ドメイン名（ＰＱＤＮ）とすることができる。ＦＱＤＮがＤＮＳクライアントにより形成されてＰＱＤＮを解決する場合でも、ＰＱＤＮは、プライベートネットワークリソースへのアクセスに使用される識別子とすることができる。ＰＱＤＮが一意的な名前ではない危険性があるので、外部ネットワークからウェブサーバ１０２にアクセスするコンピュータデバイス１００のウェブクライアントは、ウェブサーバ１０２に関連するＨＴＴＰクッキーの使用を許可しない。
【０１００】
しかし、ＨＴＴＰクッキーに依存して適切に機能するウェブサイトがあり、従って、ＨＴＴＰクッキーが許可されない時は、ウェブサーバ１０２のウェブサイトがコンピュータデバイス１００上に適切に表示されない場合がある。そのような動作不良はユーザに影響を与える可能性がある。従って、いくつかの実施形態において、リバースプロキシ１０８のリモートアクセスファシリティは、１つまたは複数の動作をとり、コンピュータデバイス１００とリバースプロキシ１０８との間の通信に対してＨＴＴＰクッキーを可能にすることができるが、全ての実施形態がこの機能性を提供する必要があるわけではない。
【０１０１】
図８Ａおよび図８Ｂは、リバースプロキシ１０８のリモートアクセスファシリティにより使用されＨＴＴＰクッキーの使用を可能にすることができる処理の２つの例を示す。しかし、図８Ａおよび図８Ｂの処理８００Ａおよび８００Ｂは、ＨＴＴＰクッキーを可能にするよう適合されるリモートアクセスファシリティにより実装可能である処理のタイプを単に例示するものであり、他の処理が可能であることは理解すべきである。さらに、ＨＴＴＰクッキーを可能にするために全てのリモートアクセスファシリティが実装されるわけではなく、本発明の実施形態はそのように限定されないことは理解すべきである。
【０１０２】
処理８００Ａはブロック８０２において開始され、ここで、リモートアクセスファシリティは、コンピュータデバイス１００とウェブサーバ１０２との間で情報を交換する一方、コンピュータデバイス１００のウェブクライアントによりＨＴＴＰクッキーとして情報が記憶されることを検出する。この検出は、任意の適切な方法で行うことができ、例えば、ウェブサーバ１０２とコンピュータデバイス１００との間で伝送されるウェブコンテンツ内において、ＨＴＴＰクッキーが記憶されるという結果をもたらす命令を検出することにより、行われる。リモートアクセスファシリティは、コンピュータデバイス１００のウェブクライアントがクッキーを許可しないであろうということを認識するが、これは、リモートアクセスファシリティがウェブサーバ１０２への接続に使用される識別子が完全修飾ドメイン名ではないことを認識するからである。従って、ブロック８０４において、この検出を行う時に、リモートアクセスファシリティは、記憶されるべき情報を識別し、それをリバースプロキシ１０８にアクセス可能にするように記憶することができる。これには、リバースプロキシ１０８上に、または、リバースプロキシ１０８にアクセス可能な離れた場所に、クッキーの情報をローカルに記憶することを含むことができる。この情報は、任意の適切な方法で記憶することができ、また、接続、コンピュータデバイス１００、および／または、ウェブサーバ１０２と関連付けることができる。
【０１０３】
ブロック８０６において、コンピュータデバイス１００とウェブサーバ１０２との間で情報を交換する一方、リモートアクセスファシリティは、ＨＴＴＰクッキー（コンピュータデバイス１００のウェブクライアントにより許可されていなくても良い）内に記憶されているべき情報を、使用するものとして検出することができる。この検出は、伝送されてくるウェブページのコンテンツを検査して、クッキーに記憶される要求情報であるウェブページの一部を識別することによることを含む、任意の適切な方法で行うことができる。例えば、ウェブページのハイパーテキスト・マークアップ言語（ＨＴＭＬ）のコードを含むウェブページのコードには、クッキーに記憶されるべき情報への参照を含むことができ、このコードは、リモートアクセスファシリティにより検出することができる。ＨＴＴＰクッキー内の情報を、ウェブサーバ１０２に伝送すること、または、コンピュータデバイス１００とウェブサーバ１０２の間を伝送されるコンテンツに挿入すること、などにより任意の適切な方法で使用することができる。この検出時、リモートアクセスファシリティは、ブロック８０８において、検出される動作（例えば、情報をウェブサーバ１０２に伝送すること、情報をコンテンツ内に挿入すること、など）そのものを、ブロック８０４からローカルに記憶されるＨＴＴＰクッキー内に記憶される情報を使用して、実行することができる。このようにして、ＨＴＴＰクッキー情報をローカルに記憶することにより、リモートアクセスファシリティは、接続全体に亘ってＨＴＴＰクッキーの使用を可能にし、かつ、ウェブページがコンピュータデバイス１００上で適切に機能するウェブサーバ１０２によりホストされるよう維持することができる。
【０１０４】
図８Ｂは、コンピュータデバイス１００とウェブサーバ１０２との間の接続全体に亘ってＨＴＴＰクッキーの使用を可能にするための代替の処理８００Ｂを示す。
【０１０５】
処理８００Ｂはブロック８２２において開始され、ここで、リバースプロキシ１０８のリモートアクセスファシリティは、コンピュータデバイス１００とウェブサーバ１０２との間でメッセージを交換する一方、ＨＴＴＰクッキーを作成および／または使用されるものとして検出する。この検出は、図８Ａのブロック８０２に関連して上述した例のいずれかによることを含む、任意の適切な方法で行うことができる。リモートアクセスファシリティは、コンピュータデバイス１００のウェブクライアントがクッキーを許可しないであろうことを認識できるが、これは、リモートアクセスファシリティが、ウェブサーバ１０２への接続に使用される識別子が完全修飾ドメイン名ではないことを認識できるためである。
【０１０６】
リモートアクセスファシリティは次に、ブロック８２４において、ウェブクライアントがＨＴＴＰクッキーの使用を許可するであろう識別子、例えば、リバースプロキシ１０８および／またはウェブサーバ１０２に関連するＦＱＤＮ、を使用して、コンピュータデバイス１００のウェブクライアントにウェブサーバ１０２への再接続を指示することにより、接続でのＨＴＴＰクッキーの使用を可能にすることができる。これは、既知のＨＴＴＰリダイレクション技術に従うことを含む、任意の適切な方法で行うことができる。そのようなリダイレクションを実行すると、リモートアクセスファシリティが、ＨＴＴＰ  ＰＯＳＴメッセージを使用して伝送された情報などの、接続の現在の状態に関する情報を記憶することができる場合がある。リモートアクセスファシリティは次に、図８Ａに関連して上述したものと同様の技術に従うことを含む任意の適切な方法で、この情報を接続に適用することができる。そのような情報を記憶することにより、指示の後でも情報が使用できるようされ、リダイレクションの間または後でユーザを混乱させることを避けることができる。
【０１０７】
ブロック８２６において、リモートアクセスファシリティは次に、上述した技術のいずれかを含む任意の適切な技術に従って、新しい接続全体に亘ってウェブサーバ１０２とコンピュータデバイス１００との間で情報を交換することができる。そして処理８００Ｂは終了する。
【０１０８】
本明細書に記載される原理に従って動作する技術は、任意の適切な方法で実装することができる。上記では、外部ネットワークからの接続を確立するためにプライベートネットワークリソースのプライベート識別子が使用されることを可能にする、種々の処理のステップおよび動作を示す一連のフローチャートについて記載した。上記のフローチャートの処理および決定のブロックは、これらの種々の処理を実行するアルゴリズムに含めることができるステップおよび動作を表す。これらの処理から導かれるアルゴリズムは、１つまたは複数の多目的プロセッサの動作と統合されそれを指示するソフトウェアとして実装することができ、デジタル信号処理（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｉｎｇ：ＤＳＰ）回路または特定用途向け集積回路（Ａｐｐｌｉｃａｔｉｏｎ−Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ：ＡＳＩＣ）等の機能的に同等の回路として実装することができ、または、任意の他の適切な方法で実装することができる。本明細書に含まれるフローチャートが、任意の特定の回路の、または、任意の特定のプログラミング言語もしくはプログラミング言語のタイプの、構文も動作も示さないことは理解すべきである。むしろ、フローチャートは、当業者が使用して、回路を製作、または、コンピュータソフトウェアのアルゴリズムを実装して、本明細書に記載されるタイプの処理を実行する特定の装置の要求される処理を実行することができる、機能情報を例示するものである。
【０１０９】
従って、いくつかの実施形態において、本明細書に記載される技術は、アプリケーションソフトウェア、システムソフトウェア、ファームウェア、ミドルウェア、または、任意の他のタイプのソフトウェアを含むソフトウェアとして、実装されるコンピュータ実行可能命令において具現化することができる。そのようなコンピュータ実行可能命令は、多数の適切なプログラミング言語、および／または、プログラミングツールまたはスクリプトツール、のいずれかを使用して書くことができ、また、フレームワークまたは仮想マシン上で実行される実行可能機械語コードまたは中間コードとしてコンパイルすることができる。
【０１１０】
本明細書に記載される技術がコンピュータ実行可能命令として具現化される時、コンピュータ実行可能命令を、任意の適切な方法で実装することができ、例えば、これらの技術に従って動作するアルゴリズムを完璧に実行させるために必要な１つまたは複数の動作をそれぞれが提供する多数の機能的設備などが含まれる。しかし、「機能的設備」は、１つまたは複数のコンピュータにより統合および実行される時に、１つまたは複数のコンピュータに特定の動作規則を実行させるコンピュータシステムの構成要素である。機能的設備は、ソフトウェア要素の一部または全体とすることができる。例えば、機能的設備は、処理の関数として、離散型処理として、または、任意の他の適切な処理の単位として、実装することができる。本明細書に記載される技術が、複数の機能的設備として実装される場合、各機能的設備は、それ自身の方法で実装することができる。全てが同一の方法で実装される必要はない。加えて、これらの機能的設備は、必要に応じて並行にまたは連続して実行することができ、また、メッセージパッシングプロトコルを使用して、または任意の他の適切な方法で、機能的設備が実行するコンピュータ（複数可）上の供給メモリを使用してお互いに情報を渡すことができる。
【０１１１】
一般に、機能的設備には、特定のタスクを実行する、または、特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等が含まれる。典型的には、機能的設備の機能性は、機能的設備が動作するシステムにおいて要望に応じて、組み合わせることまたは分配することができる。いくつかの実装において、本明細書における技術を実行する１つまたは複数の機能的設備をまとめて、完全なソフトウェアパッケージを形成することができ、例えば、ワシントン州レドモンドのマイクロソフト社から入手可能なＭｉｃｒｏｓｏｆｔ  Ｕｎｉｆｉｅｄ  Ａｐｐｌｉｃａｔｉｏｎ  Ｇａｔｅｗａｙ（ＵＡＧ）またはＩｎｔｅｌｌｉｇｅｎｔ  Ａｃｃｅｓｓ  Ｇａｔｅｗａｙ（ＩＡＧ）等のソフトウェアプログラムアプリケーションがある。これらの機能的設備は、代替の実施形態において、他の関連の無い機能的設備および／または処理と相互作用するよう適合されて、ソフトウェアプログラムアプリケーションを実装することができる。他の実装において、機能的設備は、ワシントン州レドモンドのマイクロソフト社から入手可能なウィンドウズオペレーティングシステムを含む、オペレーティングシステムを形成するような方法で、他の機能的設備と相互作用するよう適合されることができる。換言すると、いくつかの実装において、機能的設備は、代替えとしてオペレーティングシステムの一部としてまたはその外部で、実装することができる。
【０１１２】
１つまたは複数のタスクを実行するためのいくつかの例示の機能的設備について、本明細書に記載された。しかし、記載される機能的設備およびタスクの分割は、本明細書に記載される例示の技術を実装することができる機能的設備タイプを単に例示するものであること、本発明が機能的設備の任意の特定の数、分割またはタイプで実装されることに限定されないこと、は理解すべきである。いくつかの実装において、全ての機能性を単一の機能的設備に実装することができる。いくつかの実装において、本明細書に記載される機能的設備のいくつかを、一緒にまたは他のものとは離して（すなわち、単一のユニット、または別個のユニットとして）実装することができること、または、これらの機能的設備のいくつかを実装しなくても良いこと、も理解すべきである。
【０１１３】
本明細書に記載される技術を実装するコンピュータ実行可能命令は（１つまたは複数の機能的設備としてまたは任意の他の方法で実装される時）、いくつかの実施形態において、１つまたは複数のコンピュータ可読記憶媒体上に符号化されて、記憶媒体に機能性を提供することができる。これらの媒体には、ハードディスクドライブ等の磁気媒体、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ）またはＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等の光媒体、永続型もしくは非永続型の固体メモリ（例えば、フラッシュメモリ、磁気ＲＡＭ等）、または、任意の他の適切な媒体、が含まれる。そのようなコンピュータ可読記憶媒体は、以下に記載される図９および図１０のコンピュータ可読記憶媒体９０６または１００６として（すなわち、コンピュータデバイス９００または１０００の一部として）、または、スタンドアロン、別個の記憶媒体として、実装することができる。本明細書において使用される時、「コンピュータ可読記憶媒体」を含む「コンピュータ可読媒体」は、データを記録する処理の間、何らかの方法で変更できる少なくとも１つの物理的プロパティを有する有形の記憶媒体を参照する、ことは理解すべきである。例えば、コンピュータ可読媒体の物理的構造の一部の磁化状態は、記録処理の間、変更できる。
【０１１４】
さらに、上述したいくつかの技術は、情報（例えば、データおよび／または命令）を、その技術により使用するために何らかの方法で記憶する動作を含む。これらの技術のいくつかの実装−技術がコンピュータ実行可能命令として実装される実装など−において、情報をコンピュータ可読記憶媒体上に符号化することができる。特定の構造が、この情報を記憶するには有利なフォーマットとして上述されるが、これらの構造を使用して、記憶媒体上に符号化される時に情報の物理的組織化を与えることができる。そして、これらの有利な構造は、情報をやりとりする１つまたは複数のプロセッサの動作に作用することにより、例えば、プロセッサ（複数可）により実行されるコンピュータの動作の効率を増大させることにより、記憶媒体に機能性を提供することができる。
【０１１５】
技術がコンピュータ実行可能命令として具現化される、全てではなくいくつかの実装において、これらの命令は、図１の例示のコンピュータシステムを含む任意の適切なコンピュータシステムで動作する１つまたは複数の適切なコンピュータデバイス上で、実行させることができる。これらのコンピュータ実行可能命令を含む機能的設備は、単一の多目的プログラム可能デジタルコンピュータ装置、処理能力を共有し本明細書に記載される技術を共同して実行する２つ以上の多目的コンピュータ装置の協調システム、本明細書に記載される技術を実行する専用のコンピュータ装置（共同設置されたまたは地理的に分散された）の単一のコンピュータ装置もしくはコンピュータ装置の協調システム、本明細書に記載される技術を実行するための１つまたは複数のフィールドプログラマブルゲートアレイ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ：ＦＰＧＡ）、または任意の他の適切なシステム、の動作と統合され、かつ、それを指示することができる。
【０１１６】
図９は、本明細書に記載される技術を実装するシステムにおいて使用することができる、コンピュータデバイス９００の形式で、コンピュータデバイスの例示の実装を１つ例示するが、他のものが可能である。図９のコンピュータデバイス９００は、本発明のいくつかの実施形態において、コンピュータデバイス１００として実装することができる。図９は、本明細書に記載される原理に従って動作するコンピュータデバイスの必要な要素を示すことも、包括的に示すことも意図していないことは理解すべきである。
【０１１７】
コンピュータデバイス９００は、少なくとも１つのプロセッサ９０２、ネットワークアダプタ９０４、およびコンピュータ可読記憶媒体９０６、を含むことができる。コンピュータデバイス９００は、例えば、デスクトップまたはラップトップパーソナルコンピュータ、携帯情報端末（ＰＤＡ）、スマートモバイルフォン、サーバ、無線アクセスポイントもしくは他のネットワーク要素、または、プライベートネットワークへのリモートアクセスを試みる任意の他の適切なコンピュータデバイス、とすることができる。ネットワークアダプタ９０４は、任意の適切なコンピュータネットワークを介して任意の他の適切なコンピュータデバイスとコンピュータデバイス９００が無線で通信することを可能にする、任意の適切なハードウェアおよび／またはソフトウェア、とすることができる。コンピュータネットワークには、無線アクセスポイントに加えて、インターネットを含む、２つ以上のコンピュータ間でデータを交換するための任意の適切な有線および／または無線の通信媒体（複数可）、を含むことができる。コンピュータ可読媒体９０６は、処理されるデータおよび／またはプロセッサ９０２により実行される命令を記憶するよう適合されることができる。プロセッサ９０２は、データの処理および命令の実行を可能にする。データおよび命令は、コンピュータ可読記憶媒体９０６上に記憶することができ、また、例えば、コンピュータデバイス９００の要素間の通信を可能にすることができる。
【０１１８】
コンピュータ可読記憶媒体９０６上に記憶されるデータおよび命令は、本明細書に記載される原理に従って動作する技術を実装するコンピュータ実行可能命令を含むことができる。図９の例において、コンピュータ可読記憶媒体９０６は、上述したように種々の設備を実装しかつ種々の情報を記憶する、コンピュータ実行可能命令を記憶する。コンピュータ可読記憶媒体９０６は、ＤＮＳクライアント９０８を記憶し、上述の技術を含む任意の適切な技術を使用して、プライベート識別子をＩＰアドレスに解決することができる。コンピュータ可読記憶媒体９０６はさらに、１つまたは複数のＤＮＳサーバ（ＤＮＳサーバ１１０および／またはＤＮＳサーバ１１２等）のＩＰアドレス９１２、および、完全修飾ドメイン名を形成するために使用される１つまたは複数のＤＮＳサフィックス９１４を含む、ＤＮＳ構成情報９１０を記憶することができる。
【０１１９】
図１０は、本明細書に記載される技術を実装するシステムにおいて使用することができるコンピュータデバイス１０００の形式で、コンピュータデバイスの例示の実装を例示するが、他のものが可能である。図１０のコンピュータデバイス１０００は、本発明のいくつかの実施形態において、リバースプロキシ１０８として実装することができる。図１０は、本明細書に記載される原理に従って動作するコンピュータデバイスの必要な要素を示すことも、包括的に示すことも意図していないことは理解すべきである。
【０１２０】
コンピュータデバイス１０００は、少なくとも１つのプロセッサ１００２、ネットワークアダプタ１００４、およびコンピュータ可読記憶媒体１００６、を含むことができる。コンピュータデバイス１０００は、例えば、サーバ、メインフレーム、ファイアウォール、ゲートウェイ、もしくはルータ等のネットワークデバイス、または、任意の他の適切なコンピュータデバイス、とすることができる。ネットワークアダプタ１００４は、任意の適切なコンピュータネットワークを介して任意の他の適切なコンピュータデバイスとコンピュータデバイス１０００が無線で通信することを可能にする、任意の適切なハードウェアおよび／またはソフトウェア、とすることができる。コンピュータネットワークには、無線アクセスポイントに加えて、インターネットを含む、２つ以上のコンピュータ間でデータを交換するための任意の適切な有線および／または無線の通信媒体（複数可）、を含むことができる。コンピュータ可読記憶媒体１００６は、処理されるデータおよび／またはプロセッサ１００２により実行される命令を記憶するよう適合されることができる。プロセッサ１００２は、データの処理および命令の実行を可能にする。データおよび命令は、コンピュータ可読記憶媒体１００６上に記憶することができ、また、例えば、コンピュータデバイス１０００の要素間の通信を可能にすることができる。
【０１２１】
コンピュータ可読記憶媒体１００６上に記憶されるデータおよび命令は、本明細書に記載される原理に従って動作する技術を実装するコンピュータ実行可能命令を含むことができる。図１０の例において、コンピュータ可読記憶媒体１００６は、上述したように種々の設備を実装しかつ種々の情報を記憶する、コンピュータ実行可能命令を記憶する。コンピュータ可読記憶媒体１００６は、外部ネットワークに対して接続されるコンピュータデバイスとプライベートネットワークに対して接続されるコンピュータデバイスとの間の通信を可能にするリモートアクセスファシリティ１００８を記憶することができる。コンピュータ可読記憶媒体１００６はまた、開いて提示されるまたは過去に開かれていた１つまたは複数の接続に関する記録１０１０を記憶することができ、記録には、接続についての任意の適切な情報を含むことができる。ＨＴＴＰ情報１０１２はまた、コンピュータ可読媒体１００６上に記憶することができ、また、ＨＴＴＰクッキー内に記憶できる情報、または、ＨＴＴＰ  ＰＯＳＴ伝送を使用して交換できる情報、などの情報が含まれる。
【０１２２】
さらに、図１０には図示しないが、本発明のいくつかの実施形態において、コンピュータデバイス１０００はまた、ＤＮＳサーバとして実装することもでき、ＤＮＳサーバ設備、およびコンピュータデバイス１０００により受け取られるＤＮＳクエリを解決するＤＮＳエントリのデータストア、を含むことができる。
【０１２３】
図９および図１０には図示しないが、コンピュータデバイスは、加えて、入力デバイスおよび出力デバイスを含む１つまたは複数の要素および周辺機器を含むことができる。これらのデバイスを使用して、とりわけ、ユーザインターフェースを提示することができる。ユーザインターフェースを提供するために使用可能な出力デバイスの例には、出力の視覚的表現のためのプリンタまたはディスプレイスクリーン、および、出力の音声表現のためのスピーカまたは他の音声発生デバイス、が含まれる。ユーザインターフェースに使用可能な入力デバイスの例には、キーボード、ならびにマウス、タッチパッド、およびデジタルタブレット等のポインティングデバイス、が含まれる。別の例として、コンピュータデバイスは、音声認識を介して、または、他の音声形式で、入力される情報を受け取ることができる。
【０１２４】
電気回路および／またはコンピュータ実行可能命令において技術が実装される、本発明の実施形態が記載してきた。本発明は方法として具現化することができ、その例が提供されたということを理解すべきである。方法の一部として実行される動作を、任意の適切な方法で順序づけることができる。従って、例示されるものとは異なる順番で動作が実行されるよう実施形態を構成することができ、これには、ある動作を、例示の実施形態では連続する動作として示されていても、同時に実行することが含まれる。
【０１２５】
本発明の種々の態様は、単独で、組み合わせて、または、上述の実施形態においては特には説明されていない様々な配置で使用することができ、従って、その用途において、上記に記載されるまたは図に例示される要素の詳細および配置に限定されない。例えば、一実施形態において記載される態様は、任意の方法で、他の実施形態に記載される態様と組み合わせることができる。
【０１２６】
請求の範囲において請求の要素を修飾する「第１の」「第２の」「第３の」などの序数の使用は、それ自体が、任意の優先度、先行、１つの請求項が別の請求項より上位であるような順序、もしくは方法の動作が実行される時間的な順序、を暗示するものではなく、特定の名前を持つ１つの請求の要素を、同じ名前を持つ別の要素から区別するための単なるラベルとして使用されて（序数の使用を別にして）、請求の要素を区別する。
【０１２７】
また、本明細書において使用される表現および専門用語は、説明目的のためのものであり、制限するものと見なされるべきではない。「含む」「備える」「有する」「含有する」「伴う」、および本明細書におけるそれらの変形の使用は、その後にリストアップされる項目およびその等価物に加えて追加の項目も包含することを意味する。
【０１２８】
本発明の少なくとも１つの実施形態のいくつかの態様について記載されたが、種々の変更、修正、および改善を当業者が容易に想到することは理解すべきである。そのような変更、修正、および改善は、本開示の一部であることが意図され、本発明の精神および範囲の中にあることが意図される。従って、上述の記載および図面は、単なる例である。
【図１】
2012516112.tif 000003
【図２】
2012516112.tif 000004
【図３】
2012516112.tif 000005
【図４】
2012516112.tif 000006
【図５】
2012516112.tif 000007
【図６】
2012516112.tif 000008
【図７】
2012516112.tif 000009
【図８Ａ】
2012516112.tif 000010
【図８Ｂ】
2012516112.tif 000011
【図９】
2012516112.tif 000012
【図１０】
2012516112.tif 000013
【国際調査報告】
2012516112.tif 000014
2012516112.tif 000015