(57)【要約】【課題】ローカルネットワークに関連付けられたローカルコンピュータと、ローカルネットワークの外部に位置するリモートコンピュータとの間においてパブリックネットワーク上で安全な通信リンクを確立する際にアドレスの競合を自動的に回避することに関する方法および関連するシステムを提示する。【解決手段】アドレスの競合を回避するために、ローカルネットワークによる使用のために予約されるアドレスと、リモートネットワークによる使用のために予約されるアドレスとが決定される。利用可能なローカルアドレスの中から、ローカルネットワークの予約されたアドレスともリモートネットワークの予約されたアドレスとも競合しないアドレスになるように、少なくとも一つのローカルアドレスが選択される。選択されたローカルアドレスは、ローカルコンピュータとリモートコンピュータとの間における安全な通信リンクの確立に関連して使用される。【選択図】図１
2018166345.tif 000002
【特許請求の範囲】
【請求項１】
ローカルネットワークに関連付けられたローカル機器と該ローカルネットワークの外部に位置したリモート機器との間においてパブリックネットワーク上で安全に通信する際にアドレスの競合を自動的に回避するためのシステムであって、
ネットワークドライバ；および
少なくとも一つのプロセッサであって、
使用のために予約されたローカルネットワーク上のローカルネットワークアドレスを識別し；
該予約されたローカルネットワークアドレスと競合しないローカルネットワークアドレスのブロックを識別し；
該ブロックから少なくとも一つのローカルネットワークアドレスを選択し；
該ネットワークドライバに、該パブリックネットワーク上で該リモート機器と安全に通信する際の使用のための該ローカル機器のアドレスとして、該選択された少なくとも一つのローカルネットワークアドレスを割り当て；
該割り当てられた少なくとも一つのローカルネットワークアドレスを使用して、該リモート機器と、該パブリックネットワーク上で該リモート機器と安全に通信する際の使用のための該ローカル機器のアドレスとしてのローカルネットワークアドレスをネゴシエーションし；
該ローカル機器と該リモート機器の両方に共通する予約されていないプライベートIPアドレスの最大ブロックを識別することを含み、該リモート機器と、該パブリックネットワーク上で該ローカル機器と安全に通信する際の使用のための該リモート機器のアドレスとしてのリモートアドレスをネゴシエーションし；
該ネットワークドライバに、該パブリックネットワーク上で該リモート機器と安全に通信する際の使用のための該ネゴシエーションされたローカルおよびリモートネットワークアドレスを割り当て；  かつ
該ネットワークドライバを使用して、該割り当てられた少なくとも一つのローカルネットワークアドレスに基づき、該リモート機器と安全に通信する
ように構成された、前記プロセッサ
を含む、前記システム。
【請求項２】
前記少なくとも一つのプロセッサまたは前記ネットワークドライバが、前記割り当てられた少なくとも一つのローカルネットワークアドレスを使用して、前記リモート機器と、前記パブリックネットワーク上で該リモート機器と安全に通信する際の使用のための前記ローカル機器の前記アドレスとしてのローカルネットワークアドレスをネゴシエーションするように構成されるとともに、該少なくとも一つのプロセッサまたは該ネットワークドライバが、該ネゴシエーションされたローカルネットワークアドレスに基づき該ネットワークドライバを使用して該リモート機器と通信するように構成されている、請求項1記載のシステム。
【請求項３】
前記少なくとも一つのプロセッサが、前記ローカル機器と前記リモート機器の間の通信セッションのために、前記ネゴシエーションされたローカルネットワークアドレスを使用するように構成されている、請求項1記載のシステム。
【請求項４】
前記ローカル機器がモバイル機器である、請求項1記載のシステム。
【請求項５】
前記リモート機器がモバイル機器である、請求項1記載のシステム。
【請求項６】
前記システムが前記ローカル機器上にある、請求項1記載のシステム。
【請求項７】
前記ネットワークドライバがソフトウェアモジュールである、請求項1記載のシステム。
【請求項８】
前記ネットワークドライバが、安全に通信するための第1のネットワークドライバと第2のネットワークドライバを含み、かつ前記少なくとも一つのプロセッサが、前記選択された少なくとも一つのローカルネットワークアドレスを、該第2のネットワークドライバではなく該第1のネットワークドライバに割り当てるように構成されている、請求項1記載のシステム。
【請求項９】
前記ローカルネットワークアドレスが前記ローカルネットワーク上のプライベートネットワークアドレスである、請求項1記載のシステム。
【請求項１０】
前記パブリックネットワークがローカルネットワークの外部にある、請求項1記載のシステム。
【請求項１１】
安全に通信するために、前記少なくとも一つのプロセッサが、前記パブリックネットワーク上で前記リモート機器に送信されるパケットを暗号化するように構成されている、請求項1記載のシステム。
【請求項１２】
安全に通信するために、前記少なくとも一つのプロセッサが、安全な通信リンクを使用して前記パブリックネットワーク上で前記リモート機器と通信すべく前記ネットワークドライバを制御するように構成されている、請求項1記載のシステム。
【請求項１３】
安全に通信するために、前記少なくとも一つのプロセッサが、仮想プライベートネットワーク上の安全な通信リンクを使用して前記リモート機器と通信すべく前記ネットワークドライバを制御するように構成されている、請求項1記載のシステム。
【請求項１４】
前記仮想プライベートネットワーク上での通信リンクのために、前記少なくとも一つプロセッサが、前記ローカル機器のプライベートアドレスまたは前記リモート機器のプライベートアドレスのうちの少なくとも一つを前記選択された少なくとも一つのローカルネットワークアドレスでカプセル化し、かつ該ローカル機器の該プライベートアドレスまたは該リモート機器の該プライベートアドレスのうちの少なくとも一つを暗号化するように構成されている、請求項13記載のシステム。
【請求項１５】
前記少なくとも一つプロセッサが、前記選択された少なくとも一つのリモートネットワークアドレスを前記予約されたローカルネットワークアドレスに追加するように構成されている、請求項1記載のシステム。
【請求項１６】
前記少なくとも一つプロセッサが、前記ローカル機器と前記リモート機器の間の通信セッションが終了する時に、前記選択された少なくとも一つのローカルネットワークアドレスを前記予約されたローカルネットワークアドレスから除外するように構成されている、請求項15記載のシステム。
【請求項１７】
前記ローカルネットワークアドレスのそれぞれがIPアドレスとネットワークマスクを含む、請求項1記載のシステム。
【請求項１８】
前記少なくとも一つのプロセッサが、表から前記少なくとも一つのローカルネットワークアドレスを選択するように構成されている、請求項1記載のシステム。
【請求項１９】
前記少なくとも一つのプロセッサが、前記ブロックから前記少なくとも一つのローカルネットワークアドレスを疑似ランダムに選択する、請求項1記載のシステム。
【請求項２０】
前記少なくとも一つのプロセッサが、前記パブリックネットワーク上で前記リモート機器と安全に通信するためのセッション・イニシエーション・プロトコルに関して、前記識別、選択、および割り当て処理のうちの一つまたはそれ以上を実行するようにさらに構成されている、請求項1記載のシステム。
【請求項２１】
前記少なくとも一つのプロセッサが、ネットワークアドレス変換器を使用して、前記選択された少なくとも一つのローカルネットワークアドレスを前記ローカルネットワーク上の前記ローカル機器のプライベートアドレスに変換するようにさらに構成されている、請求項1記載のシステム。
【請求項２２】
前記少なくとも一つのプロセッサが、前記リモート機器に相当するネームを求めるネームサービス要求に応答して、前記識別、選択、および割り当て処理のうちの一つまたはそれ以上を実行するようにさらに構成されている、請求項1記載のシステム。
【請求項２３】
前記リモート機器との前記通信が、ホスト間接続またはホスト・ネットワーク間接続である、請求項1記載のシステム。
【請求項２４】
ローカルネットワークに関連付けられたローカル機器と該ローカルネットワークの外部に位置したリモート機器との間においてパブリックネットワーク上で安全に通信する際にアドレスの競合を自動的に回避するための方法であって、
使用のために予約されたローカルネットワーク上のローカルネットワークアドレスを識別する段階；
該予約されたローカルネットワークアドレスと競合しないローカルネットワークアドレスのブロックを識別する段階；
該ローカル機器の一つまたは複数のプロセッサによって、該ブロックから少なくとも一つのローカルネットワークアドレスを選択する段階；
ネットワークドライバに、該パブリックネットワーク上で該リモート機器と安全に通信する際の使用のための該ローカル機器のアドレスとして、該選択された少なくとも一つのローカルネットワークアドレスを割り当てる段階；
該割り当てられた少なくとも一つのローカルネットワークアドレスを使用して、該リモート機器と、該パブリックネットワーク上で該リモート機器と安全に通信する際の使用のための該ローカル機器のアドレスとしてのローカルネットワークアドレスをネゴシエーションする段階であって、該ローカル機器と該リモート機器の両方に共通する予約されていないプライベートIPアドレスの最大ブロックを識別することを含む、前記ネゴシエーションする段階；および
該ネットワークドライバを使用して、該割り当てられた少なくとも一つのローカルネットワークアドレスに基づき、該リモート機器と安全に通信する段階
を含む、前記方法。
【請求項２５】
前記割り当てられた少なくとも一つのローカルネットワークアドレスを使用して、前記リモート機器と、前記パブリックネットワーク上で該リモート機器と安全に通信する際の使用のための前記ローカル機器のアドレスとしてのローカルネットワークアドレスをネゴシエーションする段階であって、通信が該ネゴシエーションされたローカルネットワークアドレスに基づき該リモート機器と通信することを含む、前記ネゴシエーションする段階をさらに含む、請求項24記載の方法。
【請求項２６】
前記ローカル機器と前記リモート機器との間の通信セッションのために、前記ネゴシエーションされたローカルネットワークアドレスを使用する段階をさらに含む、請求項24記載の方法。
【請求項２７】
前記ローカル機器がモバイル機器である、請求項24記載の方法。
【請求項２８】
前記リモート機器がモバイル機器である、請求項24記載の方法。
【請求項２９】
アドレスのネゴシエーションが前記ローカル機器上で始まる、請求項24記載の方法。
【請求項３０】
前記ネットワークドライバがソフトウェアモジュールである、請求項24記載の方法。
【請求項３１】
前記ネットワークドライバが、安全に通信するための第1のネットワークドライバと、第2のネットワークドライバとを含む、請求項24記載の方法であって、前記選択された少なくとも一つのローカルネットワークアドレスを該第2のネットワークドライバではなく該第1のネットワークドライバに割り当てる段階をさらに含む、前記方法。
【請求項３２】
前記ローカルネットワークアドレスが前記ローカルネットワーク上のプライベートネットワークアドレスである、請求項24記載のシステム。
【請求項３３】
前記パブリックネットワークが、前記ローカルネットワークの外部にある、請求項24記載の方法。
【請求項３４】
安全に通信する段階が、前記パブリックネットワーク上で前記リモート機器に送信されるパケットを暗号化する段階を含む、請求項24記載の方法。
【請求項３５】
前記安全に通信する段階、安全な通信リンクを使用して前記パブリックネットワーク上で前記リモート機器と通信する段階を含む、請求項24記載のシステム。
【請求項３６】
前記安全に通信する段階が、仮想プライベートネットワーク上の通信リンクを使用して前記リモート機器と通信する段階を含む、請求項24記載のシステム。
【請求項３７】
前記仮想プライベートネットワーク上の前記通信リンクを使用して安全に通信する段階が、前記ローカル機器のプライベートアドレスまたは前記リモート機器のプライベートアドレスの少なくとも一つを、該選択された少なくとも一つのローカルネットワークアドレスでカプセル化する段階、および前記ローカル機器の前記プライベートアドレスまたは前記リモート機器の前記プライベートアドレスの該少なくとも一つを暗号化する段階を含む、請求項36記載の方法。
【請求項３８】
前記選択された少なくとも一つのリモートネットワークアドレスを前記予約されたローカルネットワークアドレスに追加する段階をさらに含む、請求項24記載の方法。
【請求項３９】
前記ローカル機器と前記リモート機器の間の通信セッションが終了するときに、前記予約されたローカルネットワークアドレスから選択された少なくとも一つのローカルネットワークアドレスを除外する段階をさらに含む、請求項38記載の方法。
【請求項４０】
前記ローカルネットワークアドレスのそれぞれが、IPアドレスとネットワークマスクを含む、請求項24記載の方法。
【請求項４１】
表から前記少なくとも一つのローカルネットワークアドレスを選択する段階をさらに含む、請求項24記載の方法。
【請求項４２】
前記ブロックから前記少なくとも一つのローカルネットワークアドレスを疑似ランダムに選択する段階を含む、請求項24記載の方法。
【請求項４３】
前記パブリックネットワーク上で前記リモート機器と安全に通信するためのセッション・イニシエーション・プロトコルに関して、前記識別、選択、および割り当て処理のうちの一つまたはそれ以上を実行する段階をさらに含む、請求項24記載の方法。
【請求項４４】
ネットワークアドレス変換器を使用して、前記選択された少なくとも一つのローカルネットワークアドレスを前記ローカルネットワーク上の前記ローカル機器のプライベートアドレスに変換する段階をさらに含む、請求項24記載の方法。
【請求項４５】
前記リモート機器に相当するネームを求めるネームサービス要求に応答して、前記識別、選択、および割り当て処理のうちの一つまたはそれ以上を実行する段階をさらに含む、請求項24記載の方法。
【請求項４６】
前記リモート機器との前記通信がホスト間接続またはホスト・ネットワーク間接続である、請求項24記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願
本出願は、2011年7月8日に出願された、「Dynamic VPN Address Allocation」という名称の米国仮特許出願第61/505,754号の米国特許法第119条による恩典を主張するものであり、同出願はこれによりあらゆる目的でその全体が参照により組み入れられる。
【背景技術】
【０００２】
背景
仮想プライベートネットワーク（VPN）は、安全でないネットワークを介したコンピュータ（コンピュータ化された機器を含む）間および/またはコンピュータネットワーク間の接続を保護するのに広く使用される。安全でないネットワークは、パブリックネットワークの場合もあり、プライベートネットワークの場合もあり、パブリックネットワークとプライベートネットワークの組み合わせの場合もある。そのような安全でないネットワークを介して情報をセキュアに通信するために、コンピュータは多くの場合、接続を確立し、情報をいくつかのデータパケットに分割して該データパケットをネットワークを介して発信元から宛先へと送信することによって通信を行う。情報は、宛先で受信されると、受信データパケットを適切な順序で組み合わせることによって復元される。データパケットは、発信元コンピュータと宛先コンピュータとが情報を正常にパックおよびアンパックすることができるようにするために、プロトコルとも呼ばれる明確に定義されたフォーマットを使用して作成される。
【０００３】
インターネットプロトコル（IP）は、大部分のプライベートネットワークおよび公衆インターネットを介して情報を送るのに使用されることの多い標準プロトコルである。インターネットコミュニティは、2つのバージョンのIPプロトコル、すなわちバージョン4（IPv4）およびIPバージョン6（IPv6）について標準化を行っている。IPv4とIPv6のどちらのバージョンも、発信元コンピュータおよび宛先コンピュータのネットワーク上の位置を示す数値アドレスを、各データパケットのヘッダセクションに配置することを必要とする。そのような数値アドレスを、発信元アドレスおよび宛先アドレスという。
【０００４】
インターネットプロトコルバージョン4、IPv4は、発信元アドレスおよび宛先アドレスの各々に4バイトを割り振ることを必要とし、最大232個までの固有のアドレスを提供する。しかし、このアドレスサイズは、必要なネットワークアドレスの最大数および効率のよいネットワーク経路指定の需要に対応するものではない。このアドレス制限は、多くの場合、2つのアドレスカテゴリ、すなわち、パブリックアドレスおよびプライベートアドレスを作成することによって対処される。プライベートアドレスはプライベートネットワーク内で使用するために予約され、任意の数のプライベートネットワークによって独立に複製および使用されてもよい。
【０００５】
プライベートアドレスを有するあるコンピュ一タから公衆インターネットを介して別のコンピュータにデータパケットを送るために、ネットワークアドレス変換（NAT）を使用して、プライベートアドレスを使用したパケットがパブリックアドレスを使用したパケットに変換されうる。アドレス変換は、多くの場合、公衆インターネットとプライベートネットワークとの間におけるゲートウェイとして機能するコンピュータにおいてなされる。
【発明の概要】
【０００６】
概要
本明細書で開示するある態様は、ローカルネットワークに関連付けられたローカルコンピュータと、ローカルネットワークの外部に位置する、リモートネットワークに関連付けられたリモートコンピュータとの間において、パブリックネットワーク上での安全な通信リンクを確立する際にアドレスの競合を自動的に回避するための方法および対応するシステムまたはコンピュータ実装方法に関するものである。いくつかの態様では、（a）ローカルネットワークによる使用のために予約されるアドレスと、リモートネットワークによる使用のために予約されるアドレスとを決定し、（b）ローカルネットワークの予約されたアドレスともリモートネットワークの予約されたアドレスとも競合しないアドレスである少なくとも1つのローカルアドレスを、複数の利用可能なローカルアドレスの中から選択し、（c）選択されたローカルアドレスを、ローカルコンピュータとリモートコンピュータとの間における安全な通信リンクの確立に関して関連付けるように、少なくとも一つのプロセッサが構成されかつ配置されている。
【０００７】
本明細書で開示するいくつかの態様は、第1のローカルネットワークに関連付けられた第1のコンピュータと、第2のローカルネットワークに関連付けられた第2のコンピュータとの間において、パブリックネットワーク上で仮想プライベートネットワークリンクを確立するための方法および対応するシステムまたはコンピュータ実装方法に関する。いくつかの態様では、第1のコンピュータおよび第2のコンピュータの各々についての新しいローカルネットワークアドレスの自動的な生成を、さもなければローカルネットワークアドレスが各ローカルネットワーク上で使用されている他のアドレスと競合する場合に、安全な通信リンクの確立と共に行うように、少なくとも一つのプロセッサが構成されかつ配置されている。
【０００８】
いくつかの態様では、複数の利用可能なリモートアドレスの中から、少なくとも一つのリモートアドレスが、リモートネットワークの予約されたアドレスと競合しないアドレスになるように選択されうる。選択されたローカルアドレスおよび選択されたリモートアドレスは、安全な通信リンクの確立に関して使用されうる。ある態様では、選択されたローカルアドレスは、選択されたリモートアドレスと競合しないアドレスとすることができる。いくつかの態様では、選択されたリモートアドレスは、選択されたローカルアドレスと競合しないアドレスとすることができる。いくつかの態様では、選択されたリモートアドレスは、ローカルネットワークの予約されたアドレスに追加され、安全な接続が切断されるときにローカルネットワークの予約されたアドレスから除外されうる。いくつかの態様では、選択されたローカルアドレスは、リモートネットワークの予約されたアドレスに追加され、安全な接続が切断されるときにリモートネットワークの予約されたアドレスから除外されうる。
【０００９】
本明細書で開示するいくつかの態様は、そのうちの少なくとも1台がローカルネットワークに接続されている少なくとも2台のコンピュータ間においてパブリックネットワーク上で安全な通信が提供されるように安全な通信リンクを確立するための、ドメイン名サービスを提供するための方法および対応するシステムまたはコンピュータ実装方法に関するものである。いくつかの態様では、ドメイン名サービスシステムは、（a）通信ネットワークに接続され、（b）ドメイン名サービスが安全な通信リンクの確立をサポートしているかどうかを示し、（c）2台のコンピュータ間で安全な通信リンクを確立する際に使用するためにコンピュータの各々にアドレスを割り当て、（d）割り当てられたアドレスが、コンピュータが接続されるローカルネットワークに関連付けられたアドレスと、または最初の2台のコンピュータのうちの少なくとも1台が接続されている既存の安全な通信リンク上の第3のコンピュータに関連付けられたアドレスと競合する場合に、安全な通信リンクを確立する際に使用するためにコンピュータの各々について異なるアドレスを使用するように構成されている。
【００１０】
本明細書で開示するある態様は、ローカルネットワークに接続された少なくとも1台のコンピュータと、第2のローカルネットワークに接続された複数のコンピュータの各々との間においてパブリックネットワーク上で安全な通信が提供されるように安全な通信リンクを確立するためのドメイン名サービスを提供するための方法および対応するシステムまたはコンピュータ実装方法に関するものである。ある態様では、ドメイン名サービスシステムは、（a）通信ネットワークに接続され、（b）ドメイン名サービスが安全な通信リンクの確立をサポートしているかどうかを示し、（c）1台のコンピュータと複数のコンピュータの各々との間において安全な通信リンクを確立する際に使用するためにコンピュータの各々に割り当てられた各アドレスが、各コンピュータが接続されているローカルネットワークとすでに関連付けられたアドレスと競合しないようにアドレスを割り当てるように構成されている。
【００１１】
本明細書で開示するある態様は、ローカルコンピュータとリモートコンピュータとの間において通信を行うための方法および対応するシステムまたはコンピュータ実装方法に関するものである。いくつかの態様では、リモートコンピュータと通信する際に使用するために、ローカルコンピュータにおいて複数のアドレスが選択される。選択されたアドレスは、ローカルコンピュータおよびローカルコンピュータに接続された機器が現在使用している既存のアドレス以外のアドレスである。選択された複数のアドレスのうちの1つのアドレスは、リモートコンピュータおよびリモートコンピュータに接続された機器が現在使用している既存のアドレスに対して検証され、該アドレスがリモートコンピュータによって使用されていない場合に、該アドレスは、ローカルコンピュータとリモートコンピュータとの間における通信を行うのに使用される。
【００１２】
いくつかの態様では、選択されたローカルアドレスは、安全な通信リンクを確立する際にローカルコンピュータをアドレス指定するのに使用されうる。いくつかの態様では、選択されたローカルアドレスは、インターネットプロトコル（IP）アドレスを含みうる。ある態様では、選択されたローカルアドレスは、IPアドレスおよびネットワークマスクを含みうる。選択されたローカルアドレスは、複数の利用可能なローカルアドレスを含むように構成された表から生成されてもよい。選択されたローカルアドレスは、ランダムに、または疑似ランダムに生成されてもよい。
【００１３】
いくつかの態様では、複数の利用可能なリモートアドレスの中から少なくとも一つのリモートアドレスが選択されうる。選択されたリモートアドレスは、リモートネットワークの予約されたアドレスと競合しないアドレスとすることができ、選択されたローカルアドレスおよび選択されたリモートアドレスは、安全な通信リンクの確立と関連して使用されうる。
【００１４】
さらに、選択されたローカルアドレスおよび選択されたリモートアドレスは、それぞれ、安全な通信リンクを確立する際にローカルコンピュータおよびリモートコンピュータをアドレス指定するのに使用されうる。いくつかの態様では、選択されたローカルアドレスおよび選択されたリモートアドレスが両方とも対として記憶され、ローカルコンピュータとリモートコンピュータとの間において安全な通信リンクが確立されるたびに再使用されうる。
【００１５】
いくつかの態様では、安全な通信リンクは仮想プライベートネットワーク（VPN）リンクであってもよい。ある態様では、安全な通信リンクはホスト間接続であってもよい。いくつかの態様では、安全な通信リンクはホスト・ネットワーク間接続であってもよい。いくつかの態様では、安全な通信リンクはネットワーク間接続であってもよい。
【００１６】
いくつかの態様では、複数の利用可能なローカルアドレスは一連の未使用のローカルアドレスを含むように構成されていてもよく、選択されたローカルアドレスは、一連の未使用のローカルアドレスに従って生成されてもよい。
【００１７】
いくつかの態様では、プロセッサは、ローカルコンピュータとリモートコンピュータとの間において安全な通信リンクを確立するのに使用されるセッション・イニシエーション・プロトコルに関して、各ローカルアドレスを関連付けるように構成されかつ配置されていてもよい。いくつかの態様では、プロセッサは、ローカルコンピュータとリモートコンピュータとの間において安全な通信リンクを確立するのに使用されるセッション・イニシエーション・プロトコルの一部としてローカルアドレスを生成するように構成されかつ配置されていてもよい。
【００１８】
ある態様では、生成された各ローカルアドレスの関連付けおよび安全な通信リンクの確立は、ドメイン名を求める要求に応答するものとすることができる。ある態様では、生成された各プライベートアドレスの関連付けおよび安全な通信リンクの確立は、安全なドメイン名を求める要求に応答するものとすることができる。
【００１９】
ある態様では、リモートコンピュータは、第2のローカルネットワークに関連付けられていてもよく、第2のローカルネットワークですでに使用されているローカルアドレスと競合しない第2のローカルアドレスを割り振られてもよい。ローカルコンピュータに割り振られたローカルアドレスもリモートコンピュータに割り振られた第2のローカルネットワークアドレスも、安全な通信リンク上でのローカルコンピュータとリモートコンピュータとの間における通信の経路指定を可能にするのに使用されうる。
【００２０】
いくつかの態様では、プロセッサは、ローカルネットワークに関連付けられた対応する数のローカルコンピュータのための複数のローカルアドレスを生成するように構成されかつ配置されていてもよい。いくつかの態様では、プロセッサは、リモートコンピュータと対応するローカルコンピュータの各々との間における安全な通信リンクの確立に関連付けられたセッション・イニシエーション・プロトコルの一部として複数のローカルアドレスを生成するように構成されかつ配置されていてもよい。
【００２１】
ある態様では、安全な通信リンクは、ドメイン名に対応するアドレスを求める要求に応答して確立されうる。ある態様では、安全な通信リンクは、安全なドメイン名に対応するアドレスを求める要求に応答して確立されうる。
【００２２】
いくつかの態様では、ドメイン名サービスは、あるコンピュータに割り当てられたアドレスが、該コンピュータが接続されるローカルネットワークにすでに関連付けられたアドレスと競合する場合に、競合が存在する複数のコンピュータのうちの各コンピュータについて異なるアドレスを使用することによって、該コンピュータと該複数のコンピュータのうちの少なくともそれらのコンピュータの各々との間に安全な通信リンクを確立する際に異なるアドレスを使用するように構成されていてもよい。
【００２３】
いくつかの態様では、ドメイン名サービスは、複数のコンピュータのうちのいずれかに割り当てられたアドレスが、該コンピュータが接続されるローカルネットワークにすでに関連付けられたアドレスと競合する場合に、複数のコンピュータのすべてについて異なるアドレスを再割り当てすることによって、そのような複数のコンピュータのうちのいずれかについて異なるアドレスを使用するように構成されていてもよい。
[本発明1001]
ローカルネットワークに関連付けられたローカルコンピュータと該ローカルネットワークの外部に位置しかつリモートネットワークに関連付けられたリモートコンピュータとの間においてパブリックネットワーク上で安全な通信リンクを確立する際にアドレスの競合を自動的に回避するためのシステムであって、
（a）該ローカルネットワークによる使用のために予約されるアドレスと、該リモートネットワークによる使用のために予約されるアドレスとを決定し；
（b）複数の利用可能なローカルアドレスの中から、該ローカルネットワークの該予約されたアドレスとも該リモートネットワークの該予約されたアドレスとも競合しないアドレスである少なくとも一つのローカルアドレスを選択し；かつ
（c）該選択されたローカルアドレスを、該ローカルコンピュータと該リモートコンピュータとの間における該安全な通信リンクの確立に関して関連付ける
ように構成されかつ配置された少なくとも一つのプロセッサ
を含む、システム。
[本発明1002]
前記選択されたローカルアドレスが、前記安全な通信リンクを確立する際に前記ローカルコンピュータをアドレス指定するのに使用される、本発明1001のシステム。
[本発明1003]
複数の利用可能なリモートアドレスの中から少なくとも一つのリモートアドレスが選択され、該選択されたリモートアドレスが、前記リモートネットワークの前記予約されたアドレスとも前記ローカルコンピュータの前記予約されたアドレスとも競合しないアドレスであり；かつ前記選択されたローカルアドレスおよび該選択されたリモートアドレスが、前記安全な通信リンクの確立に関して使用される、本発明1001のシステム。
[本発明1004]
選択されたローカルアドレスが、前記選択されたリモートアドレスと競合しないアドレスである、本発明1003のシステム。
[本発明1005]
選択されたリモートアドレスが、前記選択されたローカルアドレスと競合しないアドレスである、本発明1003のシステム。
[本発明1006]
前記選択されたリモートアドレスが、前記ローカルネットワークの前記予約されたアドレスに追加される、本発明1003のシステム。
[本発明1007]
前記選択されたリモートアドレスが、前記安全な接続が切断されるときに、前記ローカルネットワークの前記予約されたアドレスから除外される、本発明1006のシステム。
[本発明1008]
前記選択されたローカルアドレスが、前記リモートネットワークの前記予約されたアドレスに追加される、本発明1003のシステム。
[本発明1009]
前記選択されたローカルアドレスが、前記安全な接続が切断されるときに、前記リモートネットワークの前記予約されたアドレスから除外される、本発明1008のシステム。
[本発明1010]
前記選択されたローカルアドレスおよび前記選択されたリモートアドレスが、それぞれ、前記安全な通信リンクを確立する際に前記ローカルコンピュータおよび前記リモートコンピュータをアドレス指定するのに使用される、本発明1003のシステム。
[本発明1011]
前記選択されたローカルアドレスおよび前記選択されたリモートアドレスが、両方とも、対として記憶され、かつ前記ローカルコンピュータと前記リモートコンピュータとの間において安全な通信リンクが確立されるたびに再使用される、本発明1002のシステム。
[本発明1012]
前記安全な通信リンクが仮想プライベートネットワーク（VPN）リンクである、本発明1001のシステム。
[本発明1013]
前記選択されたローカルアドレスがインターネットプロトコル（IP）アドレスを含む、本発明1001のシステム。
[本発明1014]
前記選択されたローカルアドレスがIPアドレスおよびネットワークマスクを含む、本発明1001のシステム。
[本発明1015]
前記選択されたローカルアドレスが、複数の利用可能なローカルアドレスを含むように構成された表から生成される、本発明1001のシステム。
[本発明1016]
前記選択されたローカルアドレスが疑似ランダムに生成される、本発明1001のシステム。
[本発明1017]
前記複数の利用可能なローカルアドレスが一連の未使用のローカルアドレスを含むように構成されており、かつ前記選択されたローカルアドレスが該一連の未使用のローカルアドレスに従って生成される、本発明1001のシステム。
[本発明1018]
前記プロセッサが、前記ローカルコンピュータと前記リモートコンピュータとの間において前記安全な通信リンクを確立するのに使用されるセッション・イニシエーション・プロトコルに関して、各ローカルアドレスを関連付けるように構成されかつ配置されている、本発明1001のシステム。
[本発明1019]
前記プロセッサが、前記ローカルコンピュータと前記リモートコンピュータとの間において前記安全な通信リンクを確立するのに使用されるセッション・イニシエーション・プロトコルの一部として前記ローカルアドレスを生成するように構成されかつ配置されている、本発明1001のシステム。
[本発明1020]
生成された各ローカルアドレスの前記関連付けおよび前記安全な通信リンクの確立が、ドメイン名を求める要求に応答するものである、本発明1001のシステム。
[本発明1021]
生成された各プライベートアドレスの前記関連付けおよび前記安全な通信リンクの確立が、安全なドメイン名を求める要求に応答するものである、本発明1001のシステム。
[本発明1022]
前記リモートコンピュータが第2のローカルネットワークに関連付けられており、かつ該第2のローカルネットワークですでに使用されているローカルアドレスと競合しない第2のローカルアドレスを割り振られており、前記ローカルコンピュータに割り振られた前記ローカルアドレスおよび該リモートコンピュータに割り振られた該第2のローカルネットワークアドレスがいずれも、前記安全な通信リンク上での該ローカルコンピュータと該リモートコンピュータとの間における通信の経路指定を可能にするのに使用される、本発明1001のシステム。
[本発明1023]
前記プロセッサが、前記ローカルネットワークに関連付けられた対応する数のローカルコンピュータのための複数のローカルアドレスを生成するように構成されかつ配置されている、本発明1001のシステム。
[本発明1024]
前記プロセッサが、前記リモートコンピュータと、対応する各ローカルコンピュータとの間における前記安全な通信リンクの確立に関連付けられたセッション・イニシエーション・プロトコルの一部として前記複数のローカルアドレスを生成するように構成されかつ配置されている、本発明1023のシステム。
[本発明1025]
前記安全な通信リンクに使用される生成された前記ローカルアドレスと、前記ローカルネットワーク上のコンピュータのローカルプライベートアドレスとの間の変換を行うためにネットワークアドレス変換器が使用される、本発明1023のシステム。
[本発明1026]
前記安全な通信リンクが、ドメイン名に対応するアドレスを求める要求に応答して確立される、本発明1024のシステム。
[本発明1027]
前記安全な通信リンクが、安全なドメイン名に対応するアドレスを求める要求に応答して確立される、本発明1024のシステム。
[本発明1028]
前記安全な通信リンクがホスト間接続である、本発明1001のシステム。
[本発明1029]
前記安全な通信リンクがホスト・ネットワーク間接続である、本発明1001のシステム。
[本発明1030]
前記安全な通信リンクがネットワーク間接続である、本発明1001のシステム。
[本発明1031]
第1のローカルネットワークに関連付けられた第1のコンピュータと第2のローカルネットワークに関連付けられた第2のコンピュータとの間においてパブリックネットワーク上で仮想プライベートネットワークリンクを確立するためのシステムであって、
該第1および該第2のコンピュータの各々についての新しいローカルネットワークアドレスの自動的な生成を、さもなければ該ローカルネットワークアドレスが各ローカルネットワーク上で使用されている他のアドレスと競合するであろう場合に、安全な通信リンクの確立と共に行うように構成されかつ配置された、少なくとも一つのプロセッサ
を含む、システム。
[本発明1032]
生成される前記新しいローカルネットワークアドレスが疑似ランダムに生成される、本発明1031のシステム。
[本発明1033]
生成される前記新しいローカルネットワークアドレスがIPアドレスを含む、本発明1031のシステム。
[本発明1034]
生成される前記新しいローカルネットワークアドレスが、前記第1のコンピュータおよび前記第2のコンピュータによってすでに使用されているアドレスと競合しないアドレスである複数の利用可能なローカルアドレスを含むように構成された表の中から生成される、本発明1031のシステム。
[本発明1035]
そのうちの少なくとも1台がローカルネットワークに接続されている少なくとも2台のコンピュータ間においてパブリックネットワーク上で安全な通信が提供されうるように安全な通信リンクを確立するためのドメイン名サービスを提供するためのシステムであって、
（a）通信ネットワークに接続され；
（b）該ドメイン名サービスが安全な通信リンクの確立をサポートしているかどうかを示し；
（c）該2台のコンピュータ間で該安全な通信リンクを確立する際に使用するために該コンピュータの各々にアドレスを割り当て；かつ
（d）該割り当てられたアドレスが、コンピュータが接続されているローカルネットワークに関連付けられたアドレスと競合する場合に、該安全な通信リンクを確立する際に使用するために該コンピュータの各々について異なるアドレスを使用する
ように構成されたドメイン名サービスシステム
を含む、システム。
[本発明1036]
ローカルネットワークに接続された少なくとも1台のコンピュータと第2のローカルネットワークに接続された複数のコンピュータの各々との間においてパブリックネットワーク上で安全な通信が提供されうるように安全な通信リンクを確立するためのドメイン名サービスを提供するためのシステムであって、
（a）通信ネットワークに接続され；
（b）該ドメイン名サービスが安全な通信リンクの確立をサポートしているかどうかを示し；かつ
（c）該1台のコンピュータと該複数のコンピュータの各々との間において該安全な通信リンクを確立する際に使用するために、該コンピュータの各々へのアドレスの割り当てを、割り当てられる各アドレスが、各コンピュータが接続されているローカルネットワークにすでに関連付けられているアドレスと競合しないように行う
ように構成されたドメイン名サービスシステム
を含む、システム。
[本発明1037]
前記コンピュータに割り当てられたアドレスが、該コンピュータが接続されているローカルネットワークにすでに関連付けられているアドレスと競合する場合に、競合が存在する複数のコンピュータのうちの各コンピュータについて異なるアドレスを使用することによって、前記1台のコンピュータと前記複数のコンピュータのうちの少なくともそれらのコンピュータの各々との間に安全な通信リンクを確立する際に異なるアドレスを使用するように、前記ドメイン名サービスが構成されている、本発明1036のシステム。
[本発明1038]
前記複数のコンピュータのうち任意のものについて異なるアドレスを使用することを、任意のそのようなコンピュータに割り当てられたアドレスが、該コンピュータが接続されているローカルネットワークにすでに関連付けられているアドレスと競合する場合に、複数のコンピュータのすべてについて異なるアドレスを再割り当てすることによって行うように、前記ドメイン名サービスが構成されている、本発明1037のシステム。
[本発明1039]
ローカルコンピュータとリモートコンピュータとの間において通信を行うための方法であって、以下の工程を含む方法:
該ローカルコンピュータにおいて、該リモートコンピュータとの通信に使用するために、該ローカルコンピュータおよび該ローカルコンピュータに接続された機器が現在使用している既存のアドレス以外のアドレスである複数のアドレスを選択する工程;
該選択された複数のアドレスのうちの1つのアドレスを、該リモートコンピュータおよび該リモートコンピュータに接続された機器が現在使用している既存のアドレスに対して検証する工程;ならびに
該検証されたアドレスが該リモートコンピュータによって使用されていない場合に、該アドレスを、該ローカルコンピュータと該リモートコンピュータとの間における通信を行うのに使用する工程。
[本発明1040]
前記ローカルコンピュータと前記リモートコンピュータとの間における通信を安全な通信リンク上で行う工程をさらに含む、本発明1039の方法。
[本発明1041]
前記安全な通信リンクが仮想プライベートネットワーク（VPN）リンクである、本発明1040の方法。
[本発明1042]
前記検証されるアドレスがIPアドレスを含む、本発明1039の方法。
[本発明1043]
前記検証されるアドレスがIPアドレスおよびネットワークマスクを含む、本発明1039の方法。
【図面の簡単な説明】
【００２４】
図面は、本発明の教示による一つまたは複数の実施態様を、限定としてではなく例として示すものである。図において、類似の符番は同じ要素または類似の要素を示す。
【００２５】
【図１】自動経路指定を可能にするために多くの既存の仮想プライベートネットワークによって使用される典型的なアーキテクチャの図である。
【図２】図2Aは、本明細書で開示するいくつかの態様と共に使用されうるネットワークドライバのアドレス割り当ての例を含む表である。図2Bは、図2Aに示すアドレス割り当て例のための経路表である。
【図３Ａ】3つのプライベートアドレスブロックの例およびそれらの対応するネットワークマスクを含む表である。
【図３Ｂ】本明細書で開示するある態様による、図3Aに示すプライベートアドレスブロックを使用してプライベートVPNアドレス対をネゴシエーションするためのプロシージャの流れ図である。
【図４】本明細書で開示するある態様による、仮想ネットワークドライバIPアドレスパラメータを割り当てるための流れ図である。
【図５】本明細書で開示するある態様による、競合しないプライベートVPNアドレス対を選択するための流れ図である。
【図６Ａ】本明細書で開示するある態様による、アドレスのネゴシエーションで使用されうる最大アドレスブロックサイズを決定するための図である。
【図６Ｂ】本明細書で開示するある態様による、アドレスのネゴシエーションで使用されうる最大アドレスブロックサイズを決定するための流れ図である。
【図７】本明細書で開示するある態様による、競合しないプライベートアドレス対を生成するための流れ図である。
【図８】ネットワークアドレス変換機器を使用する仮想プライベートネットワークのブロック図である。
【図９】図9Aは、ローカルコンピュータの機器が仮想プライベートネットワークを介してリモートコンピュータの機器と通信するネットワークを示す図である。図9Bは、ローカルコンピュータがネットワークアドレス変換機器を使用するネットワークアーキテクチャを示す図である。図9Cは、ローカルコンピュータおよびリモートコンピュータが、どちらも、対応するネットワークアドレス変換機器を使用するネットワークアーキテクチャを示す図である。
【図１０】本明細書で開示するある態様による、ネットワークマスクアドレスを選択するための流れ図である。
【図１１】競合しないプライベートネットワークマスクアドレスブロックを選択するためのプロシージャの流れ図である。
【図１２】本明細書で開示するある態様による競合しないネットワークアドレス対を選択するためのプロシージャの流れ図である。
【発明を実施するための形態】
【００２６】
詳細な説明
以下の詳細な説明では、関連する教示の十分な理解を提供するために、例として、多数の具体的詳細を示す。しかし、本発明の教示はそのような詳細なしでも実施されうることが、当業者には明らかなはずである。場合によっては、本発明の教示の局面を不必要にあいまいにすることのないように、周知の方法、プロシージャ、構成要素、および/または回路構成を相対的に高レベルで記述している。
【００２７】
本発明の技術の他の構成は、本発明の技術の様々な構成を例示として図示し、説明する以下の詳細な説明を読めば、当業者には容易に明らかになることが理解される。以下を読めば理解されるように、本発明の技術は他の異なる構成を可能とし、そのいくつかの詳細は、すべて本発明の技術の範囲を逸脱することなく、他の様々な点において改変の余地がある。したがって、図面および詳細な説明は、本質的に例示であり、限定ではないとみなすべきである。
【００２８】
安全な通信を確立するための技法、およびそれらの技法に関連付けられたプロシージャは、2003年11月7日に出願された米国特許出願第10/702,522号、現在の特許第6,839,759号、2003年11月18日に出願された米国特許出願第10/714,849号、現在の特許第7,418,504号、2011年10月31日に出願された米国特許出願第13/285,962号、および2011年12月23日に出願された米国特許出願第13/336,790号に記載されており、それらの教示は参照によりその全体が本明細書に組み入れられる。
【００２９】
仮想プライベートネットワーク（VPN）は、情報データパケットを、ネットワークを介してデータを送信する前に暗号化し、送信された情報を宛先ソースで解読することによって、通信セキュリティを提供するのに使用されうる。VPNはさらに、匿名性を提供するためにプライベートの発信元アドレスおよび宛先アドレスをカプセル化および暗号化し、発信元ローカルネットワークおよび宛先ローカルネットワークそれぞれにおける通信し合うコンピュータが一意に識別されるように各端末でプライベートアドレス指定が使用されることを可能にしうる。
【００３０】
仮想プライベートネットワークパケットは、暗号化されていないVPNパケット発信元および宛先アドレスを通常は利用するが、これらのアドレスは通常はパブリックネットワーク上で外部から見えるアドレスであり、パケットを転送し、意図される宛先コンピュータに最終的に届けるために外部ネットワークルータによって使用される。
【００３１】
さらに、VPNネットワークは、カプセル化されたプライベートアドレスを使用して機器間VPNセキュリティを可能にする。これは、IPソケットを作成および使用するコンピュータアプリケーションを問わず、VPNを介したVPN接続の遠端にあるコンピュータに向けられたすべてのIPパケットの自動経路指定をもたらす、機器レベルのセキュリティを提供する。
【００３２】
多数の同時VPN接続をサポートすることのできる競合しないプライベートアドレスブロックの割り振りを調整することは、ネットワーク管理者にとっての大きな課題を提起する。というのは、そのような調整は、各VPNサイトのネットワーク管理者が、各サイトの既存のネットワーク構成と整合性を有しかつ他のネットワークサイトと競合しないプライベートアドレス範囲に関して同意することを必要とするからである。この状況をさらに複雑にするのは、他のコンピュータが同じプライベートアドレスを利用して異なるプライベートネットワークに接続し、パケットアドレス指定が不明瞭になる可能性があることである。したがって、より透過的な自動化されたプライベートアドレス割り振りの手法が望ましい。
【００３３】
VPNは多くの場合、IPアドレス指定を使用して、VPN上のコンピュータがパケットを、VPN上のあるコンピュータからVPN上の別のコンピュータへと暗号化トンネル内で経路指定することを可能にする。これらの安全なIPアドレスは、VPN接続が確立される前または確立される時に、関与するコンピュータに割り振られ、割り当てられなければならない。アドレス割り振りは、既存のネットワークアドレスまたは予約されたネットワークアドレスとの経路指定の競合を回避するためになされなければならない。アドレス割り振りは、関与するコンピュータアドレスとの競合がわかっているか又は少なくとも競合の見込みがないプライベートアドレスブロックを選択することによって、VPNサーバ機器のセットアップ時に行われてもよい。これは、従業員の移動用コンピュータのための企業VPNサーバといった半静的用途については、かなりの信頼度でなされうる。
【００３４】
しかし、コンピュータが複数のコンピュータおよび/またはコンピュータネットワークへのVPN接続をセットアップおよび切断する、より動的なシナリオでは、競合しない安全なIPアドレスを前もって選択および管理することは難しくなる。関与するコンピュータの台数および同時接続数が増加するにつれて、この選択および管理の問題も幾何級数的に増加する。本発明は、幾何級数的に増加する計算処理を必要とせずにこの問題を解決するユニークかつ効果的な手法を提供する。
【００３５】
図1は、自動経路指定を可能にするのに使用されうるアーキテクチャを示す。図1に示すように、仮想ネットワークデバイスドライバを作成することによってVPNが実装されている。図1に示すように、ローカルコンピュータ10はプログラムを実行するように構成されており、アプリケーション層14とオペレーティングシステム層16とを含む。アプリケーション層14は、VPNモジュール20と、VPN上で送信されるデータパケットを作成するのに使用される1つまたは複数のアプリケーション22とを含む。オペレーティングシステム層16は、アプリケーション22によって生成されたデータを配置するように構成されているオペレーティングシステムIPスタック24を含む。
【００３６】
オペレーティングシステム・パケットルータ26が、仮想ネットワークドライバ28を介して、VPNモジュール20によって定められたプロトコル（不図示）に従ってデータ（暗号化されていないデータパケットA）をアセンブルおよび暗号化する。暗号化されたデータパケット（データパケットB）は、実ネットワークドライバ30により、VPN接続上で、ネットワーク32を介してリモートコンピュータ34に送信される。
【００３７】
例えば、図1に示すように、ある態様では、暗号化されていないデータパケットAが、VPNモジュール20、アプリケーション22、オペレーティングシステムIPスタック24、オペレーティングシステム・パケットルータ26、および仮想ネットワークドライバ28によって送信される。送信された暗号化されていないデータパケットAは、オペレーティングシステム・パケットルータ26と実ネットワークドライバ30との間で暗号化され、暗号化されたパケットBが形成される。暗号化されたデータパケットBは、実ネットワークドライバ30により、ネットワーク32を介してリモートコンピュータ34に送信される。暗号化されていないデータパケットAも暗号化されたデータパケットBも、オペレーティングシステムIPスタック24とオペレーティングシステム・パケットルータ26との間で送信される。
【００３８】
実ネットワークドライバ30の出力は、プライベートアドレスおよび経路指定アドレスブロック（不図示）を含む。経路指定アドレスブロックは、VPNに関連付けられた宛先アドレスを含む。
【００３９】
ある態様では、暗号化されていないプライベートネットワークパケットAが、例えば、アプリケーション22のネットワークソケットコードから発せられ、仮想ネットワークドライバ28に経路指定される。仮想ネットワークドライバ28は、これらのパケットをVPNモジュール20に転送する。VPNモジュール20はこれらのパケットAを暗号化し、パブリックアドレスを有する暗号化されたパケットBを作成する。暗号化されたパケットBは、ネットワーク32をまたいだ送信のためにオペレーティングシステム・パケットルータ26を介して実ネットワークドライバ30に経路指定される。
【００４０】
リモートコンピュータ34から到着する暗号化された入力パケット（不図示）は、解読のために、実ネットワークドライバ30を介してVPNモジュール20まで経路指定され、解読された後で、最終的にはアプリケーション22まで経路指定される。
【００４１】
オペレーティングシステム・パケットルータ26は、オペレーティングシステムIPスタック24から来るパケットA、Bで見つかる宛先アドレスに基づいて適切な経路決定を行う。宛先アドレスは経路表に対して照合されうる。経路表は、ネットワーク機器ごとに指定されたネットワークパラメータに基づくものとすることができる。
【００４２】
ある態様では、VPNモジュール20を、異なるプライベート宛先アドレスを異なるパブリック宛先アドレスおよび対応する暗号鍵に関連付けるように構成することによって、複数の同時VPNがサポートされうる。
【００４３】
プライベートアドレスブロックの割り振りを、多数の同時VPN接続をサポートするために、割り振られたアドレスが競合しないように調整することは、ネットワーク管理者にとっての大きな課題である。この調整は、各VPNサイトのネットワーク管理者が、各サイトの既存のネットワーク構成と整合性を有し、かつ、その他のネットワークサイトと競合しないプライベートアドレス範囲に関して同意することを必要とする。
【００４４】
図2Aは、本明細書で開示するいくつかの態様と共に使用されうるネットワークドライバのアドレス割り当て例を含む表である。図2Aに示す例では、一般に小規模ネットワークによって使用されるIPアドレスブロック、すなわち192.168.0.0が、通信を確立するのに使用される。例えば、（図1に示す）実ネットワークドライバ30は192.168.0.21というIPアドレスを使用し、実ネットワークドライバ30のゲートウェイ（不図示）は192.168.0.1というIPアドレスを使用し、（図1に示す）仮想ネットワークドライバ28は192.168.3.23というIPアドレスを使用する。ネットワークマスク255.255.255.0は、192.168.0.0ブロックと共に一般に使用されるネットワークマスクである。
【００４５】
コンピュータがこのアドレスブロック（すなわち192.168.0.0）を使用して2台以上の他のコンピュータとのVPN接続を確立するよう要求する場合、経路指定の競合が生じうる。経路指定は、他のプライベートネットワークに接続された他のコンピュータが同じプライベートアドレスブロック（すなわち192.168.0.0）を利用する場合には、さらに複雑となりうる。
【００４６】
図2Bは、図2Aに示すアドレス割り当て例についての経路表である。図2Bに示すように、192.168.3.0から192.168.3.255までの範囲のアドレスを有するパケットが仮想ネットワークドライバ28に経路指定され、192.168.0.0から192.168.0.255までの範囲のアドレスを有するパケットが実ネットワークドライバ30に経路指定される。他のすべてのパケットは、実ネットワークドライバ30を介して192.168.0.1にあるローカル・ゲートウェイ・コンピュータに送られる。
【００４７】
図2Bに示すアドレス範囲に基づくと、アドレス指定の競合を回避するためには、リモートコンピュータ34が使用しうるプライベートVPNアドレスは、192.168.3.23を除く192.168.3.0から192.168.3.254までの範囲である必要がある。したがって、リモートコンピュータ34における仮想ネットワークドライバのアドレスがアドレスブロック192.168.3.*に対応しない場合には、競合が生じうる。加えて、リモートコンピュータがIPアドレス192.168.3.23を使用しているか、またはIPアドレス192.168.3.23を使用する既存のVPN内にある場合にも、競合が生じうる。そのような競合が生じる可能性は、関与するコンピュータの台数が増加するにつれて増加する。
【００４８】
本明細書で開示するある態様は、あるローカルコンピュータが利用可能なプライベートアドレスのブロックであって、該ローカルコンピュータのローカルプライベートアドレスブロックと競合しないものを、仮想ネットワークドライバ28による使用のための可能なプライベートアドレスの生成に使用するために割り振ることによって、アドレス指定の競合を防止する。例えば、いくつかの態様では、ローカルコンピュータのローカルプライベートアドレスブロックと競合しない、ローカルコンピュータが利用可能なプライベートアドレスの最大ブロックが割り振られてもよい。割り振られたアドレスブロックの中から（例えばランダムに）IPアドレスが選択され、選択されたIPアドレスおよびその対応するネットワークマスクが仮想ネットワークドライバ28に関連付けられる。
【００４９】
いくつかの態様では、ローカルコンピュータ10とリモートコンピュータ34との間におけるVPNセットアップネゴシエーションの際に、選択されたアドレスおよびネットワークマスクを使用して、可能なプライベートアドレスが提案されうる。例えば、リモートコンピュータ34は、1組の同様に生成されたアドレスおよびそれらの対応するネットワークマスクを有し、両端末（すなわちローカルコンピュータ10およびリモートコンピュータ34）が競合を生じずにそれぞれの仮想ネットワークドライバ28を介してプライベートアドレスを経路指定することを可能にするアドレス/ネットワークマスクの適合対を選択してもよい。
【００５０】
図3Aは、3つのプライベートアドレスブロック例およびそれらの対応するネットワークマスクを含む表である。
【００５１】
通常、各IPアドレスは4つのオクテットを含み、IPアドレスにおける各オクテットは8ビットで表現される。例えば、IPアドレス192.168.0.0では、第1オクテットは192に設定されており、第2オクテットは168に設定されており、第3オクテットは0に設定されており、第4オクテットも0に設定されている。
【００５２】
各オクテット値は2進値を表す10進数であり、各2進値は8ビットを含んでいてもよく、各ビットは0または1に設定されうる。あるビットが1に設定される場合、そのビットはアクティブであるとみなされ、0に設定される場合、そのビットはアクティブではないものとみなされる。上記の例では、第1オクテットの値192は、以下の8つの数、128、64、32、16、8、4、2、1を使用して計算することができ、その2進値は11000000である。2進値1100000は最初の2ビットだけをアクティブとして設定するため、第1のオクテットを定義するのに使用された8つの値のうちの最初の2つの値だけがオクテット値を計算するのに使用され、このオクテットに128＋64＝192という値を与える。
【００５３】
異なるネットワークサイズに対応するために、IPアドレス空間は3つのセクション、すなわち、（0.x.x.x）から（126.x.x.x）までを範囲とするIPアドレスを網羅するクラスA、（128.x.x.x）から（191.x.x.x）までを範囲とするIPアドレスを網羅するクラスB、および（192.x.x.x）から（253.255.255.255）までを範囲とするIPアドレスを網羅するクラスCに分けられる。
【００５４】
図3Aに示すように、プライベートネットワークアドレスブロック192.168.0.0、172.16.0.0、および10.0.0.0は、それぞれ、ネットワークマスク255.255.0.0、255.240.0.0、および255.0.0.0を有し、多くの場合、プライベートネットワークによって使用される。
【００５５】
図3Bは、本明細書で開示するある態様によるプライベートVPNアドレス対をネゴシエーションするためのプロシージャの流れ図である。いくつかの態様では、プライベートアドレス対は、図3Aに示すプライベートアドレスブロックの中から選択されうる。
【００５６】
図3Bに示すように、プライベートVPNアドレス対のネゴシエーションは、まず、ローカルコンピュータ10端末において、ローカルコンピュータ10が利用可能な、ローカルコンピュータ10の既存のプライベートアドレスブロックと競合しないプライベートアドレスのブロックを割り振ってもよい305。割り振られた後で、プライベートアドレスブロックは、ローカルコンピュータ10の（図1に示す）仮想ネットワークドライバ28に割り当てられる305いくつかのプライベートアドレスを生成するのに使用される。同様に、リモートコンピュータ側34でも、リモートコンピュータ34が利用可能な、リモートコンピュータ34の既存のプライベートアドレスブロックと競合しないプライベートアドレスのブロックが割り振られ、リモートコンピュータ34の仮想ネットワークドライバ（不図示）に割り当てられる310いくつかのプライベートアドレスを生成するのに使用される。
【００５７】
ある態様では、仮想ネットワークドライバに割り当てられるプライベートアドレスは、割り振られたある範囲のアドレスの中からランダムに生成されうる。ある態様では、仮想ネットワークドライバに割り当てられるプライベートアドレスは、疑似ランダムに生成されうる。いくつかの態様では、仮想ネットワークドライバに割り当てられるプライベートアドレスは、利用可能なプライベートアドレスのリストの中から選択されうる。例えば、いくつかの態様では、割り振られたアドレスは順次に配置されてもよく、ナンバリングサービス（不図示）が、順番の最初のアドレスを選択し、選択されたアドレスを仮想ネットワークドライバに割り当ててもよい。ローカルコンピュータ10およびリモートコンピュータ34は、それぞれの仮想ネットワークドライバへの割り当てのためのアドレスを選択するのに、類似の選択方式を使用しても、異なる選択方式を使用してもよい。
【００５８】
アドレスのネゴシエーションがローカルコンピュータ10側で始まり315、ローカルコンピュータの競合しないアドレスip_randlocおよびそれらの対応するネットワークマスクmask_maxlocをリモートコンピュータ34に転送する325。前述のように、競合しないアドレスは、当技術分野において公知の様々な選択方法を使用して、割り振られたブロック内のアドレスの中から選択されうる。例えば、ある態様では、競合しないアドレスはランダムに生成されてもよい。
【００５９】
リモートコンピュータ34側で、リモートコンピュータは、アドレスのネゴシエーションプロシージャの開始を待つ320。アドレスのネゴシエーションは、ローカルコンピュータ10によって転送されたアドレスをリモートコンピュータ34が受け取った後に始まる。アドレスを受け取った後で、リモートホスト34は、受け取ったアドレスを検査して、アドレスのうちのいずれかがリモートホスト34がすでに使用しているアドレスと競合するかどうかを判定し、その既存のアドレスと競合しないアドレスの中から、競合しないアドレス対iplocおよびipremを選択する330。
【００６０】
リモートコンピュータ34は、選択したアドレス対iplocおよびipremをローカルコンピュータ10に転送する340。ローカルコンピュータ10は、リモートコンピュータ34によって転送されたアドレス対を受け入れ335、そのアドレス対を使用してVPNセッションを作成および開始する345。またリモートコンピュータ34も、選択したアドレス対を使用して、新しいVPNセッションを作成および開始する350。
【００６１】
図4は、本明細書で開示するある態様による、仮想ネットワークドライバのIPアドレスパラメータを割り当てるための流れ図である。仮想ネットワークドライバのIPアドレスパラメータを割り当てるためのプロシージャが開始され410、本明細書に記載する態様と共に使用するための一つもしくは複数のアドレスベクトル対を初期化する420。アドレスベクトル対は、プライベートアドレスの一つもしくは複数のブロックと、それらの対応するネットワークマスクとを含みうる。例えば、ある態様では、アドレスブロック対は、アドレスベクトル対を以下のように初期化するのに使用されてもよい。
IPallocated＝｛IP Block0, IP Block1, ... ,IP Blockk｝
Maskallocated＝｛Mask Block0, Mask Block1, ..., Mask Blockk｝
【００６２】
例えば、ある態様では、図3Aに示すアドレスブロック対は、アドレスベクトル対を以下のように初期化するのに使用されてもよい。
IPallocated＝｛191.168.0.0, 172.16.0.0, 10.0.0.0｝
Maskallocated＝｛255.255.0.0, 255.240.0.0, 255.0.0.0｝
【００６３】
アドレスブロックが初期化された420後で、コンピュータ（ローカルコンピュータ10および/またはリモートコンピュータ34）は、初期化されたアドレスベクトル内のいずれかのアドレスが競合するアドレスであるかどうかを判定する。具体的には、いくつかの態様では、コンピュータは、ローカルで使用されるすべてのプライベートアドレスブロックを判定し430、すでに使用されているプライベートアドレスブロックを、該コンピュータによるローカルでの使用のために予約しうる。ある態様では、コンピュータは、予約されたアドレスブロックのベクトルおよびそれらの関連付けられたネットワークマスクを維持しうる。例えば以下のとおりである。
IPreserved＝｛IPreserved_0, IPreserved_1, ...., IPreserved_k-1｝
Maskreserved＝｛Maskreserved_0, Maskreserved_1, .... , Maskreserved_k-1｝
【００６４】
アドレスのネゴシエーションにおいて使用されうる最大アドレスブロックサイズは、初期化されたアドレスベクトル内のアドレスから、コンピュータですでに使用されているアドレスと競合するアドレスのいずれも含まない最大のアドレスブロックを見つけることによって、決定されうる440。具体的には、アドレスは、予約されたアドレスベクトルに含まれるアドレスとオーバーラップしないアドレスとなるように、初期化された各アドレスブロックに含まれるアドレスから選択される。具体的には、アドレスは、選択されたアドレス（IPselected）が以下の形式を満たすように選択される：
2018166345.tif 000003
。
例えば、k＝0, 1, ..., nと仮定すると、nが有限数である各kについて、IPアドレスフィールドおよびネットワークマスクフィールドの最大アドレスブロックサイズ、IPselected_MAX_kおよびMaskselected_MAX_kは、それぞれ、以下のように求められてもよい：
2018166345.tif 000004
。
【００６５】
したがって、Maskselected_kは、Maskallocated_kの部分集合であり、Maskreserved_kブロックとオーバーラップしない。同様に、IPselected_kも、IPallocated_kの部分集合であり、IPreserved_kブロックとオーバーラップしない。
【００６６】
いくつかのアドレス（プライベートアドレスなど）が最大アドレスブロックの中から選択され、ローカルコンピュータおよびリモートコンピュータの仮想ネットワークドライバに割り当てられる450。ある態様では、アドレスはランダムに選択されうる。いくつかの態様では、アドレスは疑似ランダムに選択されうる。また、当技術分野において公知の他の選択方式も使用されてもよい。
【００６７】
例えば、いくつかの態様では、k＝0, 1, ..., nと仮定すると、nが有限数である各kについて、アドレスが以下の形式に従って（例えばランダムに）選択されてもよい。
｛IPselected_k＆Maskselected_k｝＝
（IPselected_MAX_k＆Maskselected_MAX_k）｜rand｜〜（IPselected_MAX_k＆Maskselected_MAX_k）
式中、randはランダムに生成される32ビット値であり、＆はビットごとのAND演算子であり、｜はビットごとのOR演算子であり、〜はビットごとのNOT演算子である。生成された｛IPselected_k＆Maskselected_k｝アドレスブロックは仮想ネットワークドライバに割り当てられる。
【００６８】
図5は、本明細書で開示するある態様による、競合しないプライベートVPNアドレス対を選択するための流れ図である。いくつかの態様では、アドレスのネゴシエーションはまず、例えば、インデックス値kの値を0（すなわちk＝0）に設定することにより、インデックス値kを初期化しうる501。kの値は、最大アドレスブロックサイズkmaxに照らして検査される510。
【００６９】
k≧kmaxの場合、新しい競合しないプライベートアドレス対が生成される515。生成された競合しないプライベートアドレス対は、ローカルコンピュータ10の仮想ネットワークドライバ（IPselected_local_kで表す）に割り当てられ、リモートコンピュータ34の仮想ネットワークドライバ（IPselected_remote_kで表す）にも割り当てられる520。生成されたアドレス、すなわちIPselected_local_kおよびIPselected_remote_kは、ローカルコンピュータとリモートコンピュータとの間における通信を確立するのに使用されうる競合しないアドレスとして割り当てられる530。
【００７０】
k≦kmaxの場合、本明細書に記載するアドレスのネゴシエーションプロシージャは、ローカルコンピュータの第kの選択されたIPアドレスブロック、すなわちIPselected_local_kがリモートコンピュータの利用可能なアドレスの集合内にあるかどうかを判定する（例えば、そのアドレスがリモートコンピュータまたはリモートコンピュータに関連付けられた機器によって使用されている場合には、そのアドレスは利用できない）525。具体的には、アドレスのネゴシエーションプロシージャは、
IPselected_local_k∈｛IPrand_rem_k, Maskmax_rem｝
であるかどうかを判定し、式中、｛IPrand_rem_k, Maskmax_rem_k｝はリモートコンピュータの第kの利用可能なアドレスブロックである。
【００７１】
ローカルコンピュータの第kの選択されたIPアドレスブロックIPselected_local_kがリモートコンピュータの利用可能なアドレス集合内にないと判定される場合、インデックスkの値は、例えば、k＝k＋1に設定することによってリセットされ、再度、最大アドレスブロックサイズkmaxに照らして検査される510。インデックスkの値がリセットされた後で、プロシージャは続いて、アドレスブロック内の次のアドレス、すなわち第k＋1のアドレスブロックについて起こりうる競合を検証する。
【００７２】
しかし、ローカルコンピュータの第kの選択されたIPアドレスブロックがリモートコンピュータの利用可能なアドレス集合に含まれると判定される場合には、本明細書に記載するアドレスのネゴシエーションプロシージャは続いて、リモートコンピュータの第kの選択されたIPアドレスブロック、すなわちIPselected_remote_kが、ローカルコンピュータの利用可能なアドレス集合内にあるかどうかを判定する（例えば、そのアドレスがローカルコンピュータまたはローカルコンピュータに関連付けられた機器によって使用されている場合、そのアドレスは利用できない）535。具体的には、アドレスのネゴシエーションプロシージャは、
IPselected_remote_k∈｛IPrand_loc_k, Maskmax_loc_k｝
であるかどうかを判定し、式中、｛IPrand_loc_k, Maskmax_loc_k｝はローカルコンピュータの第kの利用可能なアドレスブロックである。
【００７３】
リモートコンピュータの第kの選択されたIPアドレスブロックIPselected_remote_kがローカルコンピュータの利用可能なアドレス集合内にないと判定される場合、インデックスkの値は、例えば、k＝k＋1に設定することによってリセットされ、再度、最大アドレスブロックサイズにkmax照らして検査される510。インデックスkの値がリセットされた後で、プロシージャは続いて、アドレスブロック内の次のアドレス、すなわち第k＋1のアドレスブロックについて起こりうる競合を検証する。
【００７４】
しかし、リモートコンピュータの第kの選択されたIPアドレスブロックがローカルコンピュータの利用可能なアドレス集合に含まれると判定される場合には、本明細書に記載するアドレスのネゴシエーションプロシージャは続いて、ローカルコンピュータの第kの選択されたIPアドレスブロック、すなわちIPselected_local_kが、リモートコンピュータの第kの選択されたIPアドレスブロック、すなわちIPselected_remote_kと同じアドレスであるかどうかを判定する540。具体的には、いくつかの態様では、プロシージャは、
IPselected_local_k！＝IPselected_remote_k
であるかどうかを判定してもよく、式中、演算子！は論理「否定」演算子である。
【００７５】
ローカルコンピュータの第kの選択されたIPアドレスブロックIPselected_local_kがリモートコンピュータの第kの選択されたIPアドレスブロック、すなわちIPselected_remote_kと同じである（すなわち、IPselected_local_k！＝IPselected_remote_kが偽である）と判定される場合、インデックスkの値は、例えば、k＝k＋1に設定することによってリセットされ、再度、最大アドレスブロックサイズkmaxに照らして検査される510。インデックスkの値がリセットされた後で、プロシージャは続いて、アドレスブロック内の次のアドレス、すなわち第k＋1のアドレスブロックについて起こりうる競合を検証する。
【００７６】
しかし、ローカルコンピュータの第kの選択されたIPアドレスブロックIPselected_local_kがリモートコンピュータの第kの選択されたIPアドレスブロック、すなわちIPselected_remote_kと同じではない（すなわち、IPselected_local_k！＝IPselected_remote_kが真である）と判定される場合、本明細書に記載するアドレスのネゴシエーションプロシージャは続いて、ローカルコンピュータの第kの選択されたIPアドレスブロック、すなわちIPselected_local_kが、ローカルコンピュータのすべての予約されたアドレス（すなわち、ローカルコンピュータまたはローカルコンピュータに関連付けられた機器によって使用されているアドレス）、およびリモートコンピュータのすべての予約されたアドレス（すなわち、リモートコンピュータまたはリモートコンピュータに関連付けられた機器によって使用されているアドレス）によって定義される集合に属するかどうかを判定する550。加えて、本明細書に記載するアドレスのネゴシエーションプロシージャは続いて、リモートコンピュータの第kの選択されたIPアドレスブロック、すなわちIPselected_remote_kが、ローカルコンピュータのすべての予約されたアドレス（すなわち、ローカルコンピュータまたはローカルコンピュータに関連付けられた機器によって使用されているアドレス）、およびリモートコンピュータのすべての予約されたアドレス（すなわち、リモートコンピュータまたはリモートコンピュータに関連付けられた機器によって使用されているアドレス）によって定義される集合に属するかどうかも判定する。具体的には、プロシージャは、
2018166345.tif 000005
であるかどうかを判定する。
【００７７】
ローカルコンピュータの第kの選択されたIPアドレスブロックIPselected_local_kが、予約されたVPNアドレスによって定義される集合（すなわち、ローカルコンピュータのすべての予約されたアドレスおよびリモートコンピュータのすべての予約されたアドレスによって定義される集合｛IPreserved_local, IPreserved_remote｝）に属すると判定される場合、すなわち、
2018166345.tif 000006
が偽であると判定される場合、またはリモートコンピュータの第kの選択されたIPアドレスブロックIPselected_remote_kが、予約されたVPNアドレスによって定義される集合（すなわち、ローカルコンピュータのすべての予約されたアドレスおよびリモートコンピュータのすべての予約されたアドレスによって定義される集合｛IPreserved_local, IPreserved_remote｝）に属すると判定される場合、すなわち、
2018166345.tif 000007
が偽であると判定される場合、インデックスkの値は、例えば、k＝k＋1に設定することによってリセットされ、再度、最大アドレスブロックサイズkmaxに照らして検査される510。インデックスkの値がリセットされた後で、プロシージャは続いて、アドレスブロック内の次のアドレス、すなわち第k＋1のアドレスブロックについて起こりうる競合を検証する。
【００７８】
しかし、ローカルコンピュータの第kの選択されたIPアドレスブロックIPselected_local_kが、予約されたVPNアドレスによって定義される集合に属さないと判定され（すなわち、
2018166345.tif 000008
が真であると判定され）、かつリモートコンピュータの第kの選択されたIPアドレスブロックIPselected_remote_kが、予約されたVPNアドレスによって定義される集合に属さないと判定される（すなわち、
2018166345.tif 000009
が真であると判定される）場合、本明細書に記載するアドレスのネゴシエーションプロシージャは続いて、IPselected_local_kおよびIPselected_remote_kを、ローカルコンピュータとリモートコンピュータとの間における通信を確立するのに使用されうる競合しないアドレスとして割り当てる530。
【００７９】
図6Aは、本明細書で開示するある態様による、アドレスのネゴシエーションで使用されうる最大アドレスブロックサイズを決定するための流れ図である。前述のように、VPN接続を確立する際に使用するために、開始アドレスstartkおよび終了アドレスendkを有するアドレスブロックが割り振られうる610。例えば、ある態様では、アドレスブロック192.168.0.0または255.255.0.0が割り振られてもよい。割り振られたアドレスブロックは、コンピュータ（ローカルコンピュータ10やリモートコンピュータ34など）およびそれに関連付けられた機器が現在使用しているいくつかのオーバーラップアドレスを含みうる。これらのオーバーラップアドレスが同定される620。残りのアドレス（すなわち競合しないアドレス）も同定される630。同定された競合しないIPアドレスの中から、競合しないアドレスの最大ブロックが同定されうる640。同定された最大ブロックが最大ブロックとして選択されうる。いくつかの態様では、その選択部分が他の競合しないブロックより大きいという条件で、同定された最大ブロックの一部分が選択されうる。いくつかの態様では、アドレスブロックの選択は、IPアドレスおよび対応する経路指定ネットワークマスクによって定義されうるアドレスブロックを制限することによってなされうる。そのようなネットワークマスクは、一般に、mask＝〜（2n-1）の形のものであり、式中、2≦n≦32であり、〜演算子は、32ビット整数の1の補数である。この場合、start＝ip＆maskであり、end＝start＋（2n-1）である。この式では、このブロック内のありとあらゆるIPアドレス（addr）が、addr＆mask＝ip＆maskを満たすことになる。
【００８０】
図6Bは、本明細書で開示するある態様による、アドレスのネゴシエーションで使用されうる最大アドレスブロックサイズを決定するための流れ図である。前述のように、最大アドレスブロックサイズを決定するために、まず初期プライベートアドレスブロックが選択される610。予約されたアドレスブロックは、コンピュータ（ローカルコンピュータ10やリモートコンピュータ34など）およびそれに関連付けられた機器がすでに使用しているアドレスを含む。次いで、利用可能なアドレスブロックが、予約されたアドレスブロックによってすでに占有されてはいない最初に選択されたプライベートアドレスのブロックを決定することにより同定される。ある態様では、利用可能なアドレスブロックは、初期アドレスブロックと予約されたアドレスブロックとの共通部分を求め、共通部分から生じる集合を初期アドレスブロック集合から差し引くことによって決定されうる。具体的には、
利用可能なIPアドレス＝初期IPアドレス−（初期IPアドレス∩予約されたIPアドレス）
であり、式中、∩は積集合演算子である。
【００８１】
最大アドレスブロックは、利用可能なIPアドレスブロック内のIPアドレスブロックを相互に比較し合い、最大のブロックを選択することによって獲得されうる640。
【００８２】
図7は、本明細書で開示するある態様による、競合しないプライベートアドレス対を生成するための流れ図である。ローカルコンピュータ10（図1）とリモートコンピュータ34（図1）の両方について競合しないアドレス対を決定するために、本明細書で開示するある態様は、ローカルコンピュータ10とリモートコンピュータ34とで共通する最大のプライベートアドレスブロックを決定しうる710。アドレス対が、共通アドレスブロックに含まれるアドレスの中から選択されうる720。ある態様では、アドレス対は、共通アドレスブロックに含まれるアドレスの中からランダムに選択されうる。ある態様では、アドレス対は、共通アドレスブロックに含まれるアドレスの中から疑似ランダムに選択されうる。いくつかの態様では、選択されたアドレスは、共通アドレスブロックに含まれるアドレスのリストの中から順次に選択されうる。当技術分野において公知の他の選択方式が使用されてもよい。
【００８３】
アドレス対が共通アドレスブロックに含まれるアドレスの中から選択された後で、選択されたアドレス対は、仮想プライベートネットワークがすでに使用しているアドレスに照らして検査されて、それらがすでに使用中であるかどうか（すなわち、予約されたアドレスであるかどうか）が判定される730。例えば、アドレスは以下のように検証されてもよい。
2018166345.tif 000010
式中、IPselected_localは、ローカルコンピュータのために選択されたアドレスを表し、IPselected_remoteは、リモートコンピュータのために選択されたアドレスを表し、IPreserved_localは、ローカルコンピュータによって予約されたアドレスを表し、IPreserved_remoteは、リモートコンピュータによって予約されたアドレスを表し、＆は論理「積」演算子である。
【００８４】
選択されたアドレス対がローカルコンピュータ10およびリモートコンピュータ34の予約されたアドレスに属するとみなされる場合（すなわち、
2018166345.tif 000011
が偽である場合）、共通アドレスブロックに含まれるアドレスの中からの別のアドレスが選択される。
【００８５】
選択されたアドレス対がローカルコンピュータ10およびリモートコンピュータ34の予約されたアドレスに属さないとみなされる場合（すなわち、
2018166345.tif 000012
が真である場合）、選択されたアドレス対、IPselected_local、IPselected_remoteの値は、仮想ネットワークドライバへの割り当てに使用される740。
【００８６】
図8は、パブリックネットワーク840にプライベートネットワークのローカル機器810を接続するためのネットワークアドレス変換機器を使用するシステムのブロック図である。プライベートネットワークの機器810は、プライベートネットワーク内での接続性を維持するためにローカルネットワークアドレスブロック815を使用しうる。機器810は、ネットワークアドレス変換（NAT）機器820およびVPNゲートウェイ830を介してパブリックネットワーク（インターネットなど）840に接続する
【００８７】
NAT820は、ローカル機器810によって使用されるローカルアドレスブロック815のローカルネットワークアドレスを、パブリックネットワーク840を介した接続を確立するためにVPNゲートウェイ830によって使用されうる対応するプライベートIPアドレス825に変換する。
【００８８】
VPNゲートウェイ830は、VPNトンネルを介したローカル機器810とリモート機器との間の通信を維持するためにプライベートアドレス825を用いる。VPNゲートウェイ830はさらに、静的または動的に割り当てられるパブリックIPアドレスを用いてパブリックネットワーク840に接続しうる。
【００８９】
図9A〜図9Cは、パブリックネットワーク840にプライベートネットワークのローカル機器810を接続するためにネットワークアドレス変換機器を使用するシステムのブロック図を含む。
【００９０】
図9Aに、ローカルコンピュータの機器810Lが仮想プライベートネットワークを介してリモートコンピュータの機器810Rと通信するネットワークを示す。具体的には、各機器810L、810Rは、ローカルIPアドレスを使用して対応するVPNゲートウェイ830L、830Rに接続する。各VPNゲートウェイ830L、830Rは、さらに、静的または動的に割り当てられるパブリックIPアドレスを使用して（例えば、ネットワークのインターネットサービスプロバイダ（ISP）によって提供される動的ホスト構成プロトコル（DHCP）を使用して）、その対応する機器をパブリックネットワーク840に接続する。
【００９１】
図9Bに、ローカルコンピュータ810Lがネットワークアドレス変換機器（NAT）820を使用するネットワークアーキテクチャを示す。具体的には、ローカルコンピュータ810Lは、ローカルアドレスのブロックを使用してNAT820Lと通信する。NAT820Lはローカルアドレスを、VPNゲートウェイ830Lによってローカルコンピュータ810Lとの接続を確立する際に使用される対応するプライベートアドレスに変換する。VPNゲートウェイ830Lは、静的または動的に割り当てられるパブリックアドレスを用いてローカルコンピュータをパブリックネットワーク840に接続する。リモートコンピュータ側で、VPNゲートウェイ830Rは、静的または動的に割り当てられるパブリックIPアドレスを使用してパブリックネットワーク840と通信する。またVPNゲートウェイ830Rは、リモートコンピュータ810Rに割り当てられたプライベートアドレスを使用してリモートコンピュータ810Rと通信する。
【００９２】
図9Cに、ローカルコンピュータ810Rおよびリモートコンピュータ810Lが、どちらも、対応するNAT機器820R、820Lを使用するネットワークアーキテクチャを示す図である。具体的には、ローカルコンピュータ810は、ローカルアドレスのブロックを使用してNAT820Lと通信する。NAT820Lはローカルアドレスを、VPNゲートウェイ830Lによってローカルコンピュータ810Lとの接続を確立する際に使用される対応するプライベートアドレスに変換する。VPNゲートウェイ830Lは、静的または動的に割り当てられるパブリックアドレスを用いてローカルコンピュータをパブリックネットワーク840に接続する。リモートコンピュータ側で、VPNゲートウェイ830Rは、プライベートアドレスのブロックを使用してその対応するNAT機器820Rと通信する。NAT機器820Rは、プライベートアドレスを、リモート機器810Rと通信するのに使用される対応するローカルアドレスに変換する。
【００９３】
例えば図9Cでは、820/830Lの背後のネットワークが192.168.1.0/255.255.255.0であり、機器810Lがアドレス192.168.1.5を有し、820/830Rの背後のネットワークが10.10.1.0/255.255.255.0であり、機器 810Rがアドレス10.10.1.4を有する場合には、2つのローカル・エリア・ネットワーク（LAN）は、VPNについてランダムに生成されるブロックの代わりに使用されうる競合しないプライベートアドレスブロックを使用している。しかし、820/830Lの背後の左側ネットワークと820/830Rの背後の右側ネットワークとがどちらも192.168.1.0/255.255.255.0を使用している場合、その既存のLANアドレスを使用した相互へのVPNトンネルは競合するアドレスを有しうる。この場合、ある態様は、各側に競合しないアドレスを生成する。例えば、左側には10.10.1.0/255.255.255.0、右側には10.10.2.0/255.255.255.0などである。左側のNAT機器は、192.168.1.0アドレスについて1対1NATを行い、それらを、VPNを介して右側LANに至る10.10.1.0アドレスとして表現し、右側のLANも、192.168.1.0アドレスに対して1対1NATを行い、それらを、VPNトンネルを介して左側LANに至る10.10.2.0アドレスとして表現する。生成されたプライベートアドレスは、LANアドレスが競合する場合に、各側がどちらも、そのローカル機器ともVPNを介してリモート機器とも通信できるように、左側と右側の両方で必要とされることに留意されたい。少数のLAN機器がVPNを介して他の相手側機器810に供与されさえすればよい場合には、NAT機器820によってVPNを表現するのに使用される生成されたアドレスブロックは、LANアドレスブロックと同じサイズである必要はない。この生成されたアドレスブロックは、VPNアクセスが可能な機器のみがNAT機器820においてVPNアクセスが可能なアドレスに変換される、より小さいアドレスブロックであってもよい。
【００９４】
いくつかの態様では、LAN間VPNのためのアドレスブロックを選択するときに、各LANは、他のLANと競合しないプライベートアドレスブロックを使用しうる。そのような態様では、アドレスブロックを（例えばランダムに）生成する必要が生じず、LANアドレスが使用されうる。各LANがいくつかの他のLANとのVPNも保持している場合、これらのアドレスブロックも、パケットを経路指定しているVPNを有するすべての相手側と競合するとは限らない。アドレスブロックの競合が生じる場合には、ある実施形態は、競合するアドレスを有するLAN上のアドレスを表現する競合しないアドレスを生成しうる。当該LANのVPN機器は1対1ネットワークアドレス変換（NAT）を行ってもよく、ここで、当該LAN上で競合する各アドレスが、ピアVPN機器に対する表現のために生成されたアドレスブロック内のアドレスに変更される。LAN上の一部のアドレスのみがVPNを介して利用可能となる必要がある場合には、より小さい生成アドレスブロックを使用してLANが表現されてもよく、その場合、VPN利用可能アドレスは、VPNを介して供与されかつ経路指定されるより小さい生成アドレスブロック内のアドレスについて1対1で変換される。
【００９５】
ある態様では、ホスト間、ホスト・ネットワーク間、またはネットワーク間のVPNトンネルのうちの少なくとも一つを行うのに一意のプライベートアドレスが使用されうる。例えば、ドメイン名サービス（DNS）に対して、VPNピアがVPNトンネルおよびDNS要求によって新しいホストを見つけることができるように、計算されたトンネルアドレスが公開されてもよい。VPN機器が複数のピアホストおよび/またはネットワークとの複数のVPNを実行しているときには、VPNトンネルアドレスまたはアドレスブロックが新しいVPN機器上で利用できない可能性のある新しいVPNが導入されうる。これらの問題を克服するために、ある態様は、様々なVPNピアが異なるアドレスによって機器に到達することを可能にしうる。そのような態様では、ピアによる複数のアドレスが安全なDNSに公開され、安全なDNSは要求側に基づいて名前を適切なアドレスに決定する。
【００９６】
いくつかの態様では、すべてのVPNが同じVPNアドレスまたはアドレスブロックを使用するようにするために既存のVPNが再ネゴシエーションされうる。これは安全なDNSに影響を及ぼす。そのような態様では、命名される機器は、要求側とは無関係なある一意のアドレスで表現され、ただ一つのアドレスがその名前についてDNSに公開される。
【００９７】
いくつかの態様では、名前とVPNアドレスとの対を含むDNSサービスが、VPN機器に対してのみ供与されうる。ある態様では、DNSサービスへのアクセスが制限されうる。例えば、DNSサービスは、ある内部ネットワーク、1組のネットワークアドレスだけに制限されてもよく、認証を必要としてもよい。
【００９８】
ある態様では、VPNアドレスが計算されてもよく、かつ/またはVPNがDNS要求に応答してインスタンス化されてもよい。そのような態様では、VPNを開始するホストまたはネットワークは、DNS要求を受け取り、ホスト/ネットワークがピアホストまたはピアネットワークとVPNを行う許可を有しているかどうかを判定し、プライベートアドレスの計算およびVPNのセットアップを行うための交換を行い、VPNをセットアップし、ピアのVPN IPアドレスがわかっている場合にこのアドレスをDNS要求のために返すことができ、ここで、新しく作成されたVPNにおいて、DNS要求をトリガした通信が次に行われる。
【００９９】
図10は、本明細書で開示するある態様による、ネットワークマスクアドレスを選択するための流れ図である。いくつかの態様では、プロシージャはまず、例えば、インデックス値kの値を0（すなわちk＝0）に設定することにより、インデックス値kを初期化しうる1001。kの値は最大アドレスブロックサイズkmaxに照らして検査される1010。
【０１００】
k≧kmaxの場合、新しい競合しないプライベートアドレス対が生成される1015。生成された競合しないプライベートアドレス対はローカルコンピュータ10の仮想ネットワークドライバ（IPselected_local_kで表す）に割り当てられ、リモートコンピュータ34の仮想ネットワークドライバ（IPselected_remote_kで表す）にも割り当てられる1025。生成されたアドレス、すなわちIPselected_local_kおよびIPselected_remote_kは、ローカルコンピュータとリモートコンピュータとの間における通信を確立するのに使用されうる最小のネットワークマスクアドレスブロックを選択するのに使用される1035。
【０１０１】
k≦kmaxの場合、本明細書に記載するプロシージャは、ローカルコンピュータの第kの選択されたIPアドレスブロック、すなわちIPselected_local_kがリモートコンピュータの利用可能なアドレス集合（例えば、リモートコンピュータまたはリモートコンピュータに関連付けられた機器によって使用されているアドレスと競合しない事前に割り振られたアドレスブロック内1020）に含まれているかどうかを判定する。具体的には、プロシージャは、
IPselected_local_k∈｛IPselected_remote, Maskmax_remote｝
であるかどうかを判定する。
【０１０２】
ローカルコンピュータの第kの選択されたIPアドレスブロックIPselected_local_kがリモートコンピュータの利用可能なアドレス集合内にない場合、インデックスkの値は、例えば、k＝k＋1に設定することによってリセットされ、再度、最大アドレスブロックサイズkmaxに照らして検査される1010。インデックスkの値がリセットされた後で、プロシージャは続いて、アドレスブロック内の次のアドレス、すなわち第k＋1のアドレスブロックについて起こりうる競合を検証する。
【０１０３】
しかし、第kの選択されたローカルIPアドレスブロックがリモートコンピュータの利用可能なアドレス集合に含まれると判定される場合には、本明細書に記載するプロシージャは続いて、リモートコンピュータの第kの選択されたIPアドレスブロック、すなわちIPselected_remote_kが、ローカルコンピュータの既存のアドレスと競合する（例えば、アドレスがローカルコンピュータもしくはローカルコンピュータに関連付けられた機器によって使用されている場合など）かどうか、またはローカルコンピュータによって予約されている最大ネットワークマスク値と競合するかどうかを判定する1030。具体的には、アドレスのネゴシエーションプロシージャは、
IPselected_remote_k∈｛IPreserved_local, Maskmax_local｝
であるかどうかを判定する。
【０１０４】
リモートコンピュータの第kの選択されたIPアドレスブロックIPselected_remote_kがローカルコンピュータの利用可能なアドレス集合内にない場合、インデックスkの値は、例えば、k＝k＋1に設定することによってリセットされ、再度、最大アドレスブロックサイズkmaxに照らして検査される1010。インデックスkの値がリセットされた後で、プロシージャは続いて、アドレスブロック内の次のアドレス、すなわち第k＋1のアドレスブロックについて起こりうる競合を検証する。
【０１０５】
しかし、第kの選択されたリモートIPアドレスブロックがローカルコンピュータの利用可能なアドレス集合に含まれると判定される場合には、本明細書に記載するプロシージャは続いて、ローカルコンピュータの第kの選択されたIPアドレスブロック、すなわちIPselected_local_kが、リモートコンピュータの第kの選択されたIPアドレスブロック、すなわちIPselected_remote_kと同じアドレスであるかどうかを判定する1040。具体的には、いくつかの態様では、プロシージャは、
IPselected_local_k！＝IPselected_remote_k
であるかどうかを判定してもよく、式中、演算子！は論理「否定」演算子である。
【０１０６】
ローカルコンピュータの第kの選択されたIPアドレスブロックIPselected_local_kがリモートコンピュータの第kの選択されたIPアドレスブロック、すなわちIPselected_remote_kと同じである（すなわち、IPselected_local_k！＝IPselected_remote_kが偽である）と判定される場合、インデックスkの値は、例えば、k＝k＋1に設定することによってリセットされ、再度、最大アドレスブロックサイズkmaxに照らして検査される1010。インデックスkの値がリセットされた後で、プロシージャは続いて、アドレスブロック内の次のアドレス、すなわち第k＋1のアドレスブロックについて起こりうる競合を検証する。
【０１０７】
しかし、ローカルコンピュータの第kの選択されたIPアドレスブロックIPselected_local_kがリモートコンピュータの第kの選択されたIPアドレスブロック、すなわちIPselected_remote_kと同じではない（すなわち、IPselected_local_k！＝IPselected_remote_kが真である）と判定される場合、本明細書に記載するプロシージャは続いて、ローカルコンピュータの第kの選択されたIPアドレスブロック、すなわちIPselected_local_kが、ローカルコンピュータのすべての予約されたアドレス（すなわち、ローカルコンピュータまたはローカルコンピュータに関連付けられた機器によって使用されているアドレス）、およびリモートコンピュータのすべての予約されたアドレス（すなわち、リモートコンピュータまたはリモートコンピュータに関連付けられた機器によって使用されているアドレス）によって定義される集合に属するかどうかを判定する1050。加えて、本明細書に記載するアドレスのネゴシエーションプロシージャは続いて、リモートコンピュータの第kの選択されたIPアドレスブロック、すなわちIPselected_remote_kが、ローカルコンピュータのすべての予約されたアドレス（すなわち、ローカルコンピュータまたはローカルコンピュータに関連付けられた機器によって使用されているアドレス）、およびリモートコンピュータのすべての予約されたアドレス（すなわち、リモートコンピュータまたはリモートコンピュータに関連付けられた機器によって使用されているアドレス）によって定義される集合に属するかどうかも判定する。具体的には、プロシージャは、
2018166345.tif 000013
であるかどうかを判定する。
【０１０８】
ローカルコンピュータの第kの選択されたIPアドレスブロックIPselected_local_kが、予約されたVPNアドレスによって定義される集合（すなわち、ローカルコンピュータのすべての予約されたアドレスおよびリモートコンピュータのすべての予約されたアドレスによって定義される集合｛IPreserved_local, IPreserved_remote｝）に属すると判定される場合、すなわち、
2018166345.tif 000014
が偽であると判定される場合、またはリモートコンピュータの第kの選択されたIPアドレスブロックIPselected_remote_kが、予約されたVPNアドレスによって定義される集合（すなわち、ローカルコンピュータのすべての予約されたアドレスおよびリモートコンピュータのすべての予約されたアドレスによって定義される集合｛IPreserved_local, IPreserved_remote｝）に属すると判定される場合、すなわち、
2018166345.tif 000015
が偽であると判定される場合、インデックスkの値は、例えば、k＝k＋1に設定することによってリセットされ、再度、最大アドレスブロックサイズkmaxに照らして検査される1010。インデックスkの値がリセットされた後で、プロシージャは続いて、アドレスブロック内の次のアドレス、すなわち第k＋1のアドレスブロックについて起こりうる競合を検証する。
【０１０９】
しかし、ローカルコンピュータの第kの選択されたIPアドレスブロックIPselected_local_kが、予約されたVPNアドレスによって定義される集合に属さないと判定され（すなわち、
2018166345.tif 000016
が真であると判定され））、リモートコンピュータの第kの選択されたIPアドレスブロックIPselected_remote_kが、予約されたVPNアドレスによって定義される集合に属さないと判定される（すなわち、
2018166345.tif 000017
が真であると判定される）場合、本明細書に記載するプロシージャは続いて、ローカルコンピュータとリモートコンピュータとの間における通信を確立するのに使用されうるネットワークマスクアドレスの最小ブロックを選択する1035。
【０１１０】
図11は、競合しないプライベートネットワークマスクアドレスブロックを選択するためのプロシージャの流れ図である。プロシージャはまず、所望のプライベートローカルアドレスの合計数を決定する1110。例えば、ある態様では、所望のアドレスの合計数を2nとすることができ、nは有限数である。また、プライベートネットワークマスクアドレスの最大数も初期化される。例えば、一態様では、所望のアドレスの合計数を提供するネットワークマスクは、（各IPアドレスは32ビットアドレスであるため）232-2nとして求められる。
【０１１１】
所望のプライベートローカルアドレスの合計数は、プライベートネットワークアドレスの最大数と比較され（Maskmax_local＜Maskprivate_local）1130、所望のプライベートローカルアドレスの数がプライベートネットワークマスクアドレスの数より大きい場合、新しい競合しないアドレス対、IPselected_local、IPselected_remoteが、図7を参照して説明したように生成される1150。
【０１１２】
しかし、所望のプライベートローカルアドレスの数がプライベートネットワークマスクアドレスの数より小さい場合には、ネットワークマスクアドレスに割り当てられた最大数が競合しないマスクアドレスとして選択される1140。
【０１１３】
図12は、本明細書で開示するある態様による、競合しないネットワークアドレス対を選択するためのプロシージャの例である。2台のネットワーク機器、すなわち機器1と機器2との間における通信を確立するのに使用されうる競合しないアドレス対を決定するために、機器1の予約済アドレス（RA1）を含まないプライベートアドレスのプール（PAP）の中から第1の機器の候補推奨アドレス（PA1）が選択される1210。具体的には、機器1の候補推奨アドレス（PA1）は、
2018166345.tif 000018
になるように選択される。
【０１１４】
同様に、第2の機器のための候補推奨アドレス（PA2）が、機器2の予約済アドレス（RA2）を含まないプライベートアドレスのプール（PAP）の中から選択される1220。具体的には、機器2の候補推奨アドレス（PA2）は、
2018166345.tif 000019
になるように選択される。
【０１１５】
適合IPアドレス対が、機器1の候補推奨アドレス（PA1）および機器1の候補推奨アドレス（PA2）に含まれるアドレスの中から選択される1230。
【０１１６】
候補アドレスについての適合アドレスが見つかる場合、当該アドレスは他方の機器の予約済アドレスに追加される1250。具体的には、機器1の選択されたアドレスIPA1が機器2の選択されたアドレスIPA2と適合すると判定される場合、機器1の選択されたアドレスIPA1が機器2の予約済アドレスRA2に追加され、機器2の選択されたアドレスIPA2が機器1の予約済アドレスRA2に追加される。
【０１１７】
候補アドレスについての適合アドレスが見つからない場合には、新しい適合アドレスIPA1が機器1のために選択される1260。新しい適合アドレス対は、機器1の予約済アドレス（RA1）および機器2の選択されたアドレスIPA2を含まないプライベートアドレスのプール（PAP）の中から選択される。機器1のために新しい適合アドレスIPA1が正常に獲得される場合、適合アドレス対が機器1の予約済アドレスおよび機器2の予約済アドレスに追加される1250。具体的には、IPA1が機器2の予約済アドレスRA2に追加され、機器2の選択されたアドレスIPA2が機器1の予約済アドレスRA2に追加される。
【０１１８】
候補アドレスについての適合アドレスが見つからない場合には、新しい適合アドレスIPA2が機器2のために選択される1270。新しい適合アドレス対は、機器2の予約済アドレス（RA2）および機器1の選択されたアドレスIPA1を含まないプライベートアドレスのプール（PAP）の中から選択される。機器2のために新しい適合アドレスIPA2が正常に獲得される場合、適合アドレス対が機器1の予約済アドレスおよび機器2の予約済アドレスに追加される。具体的には、IPA1が機器2の予約済アドレスRA2に追加され、機器2の選択されたアドレスIPA2が機器1の予約済アドレスRA2に追加される。
【０１１９】
候補アドレスについての適合アドレスが見つからない場合には、新しい適合アドレスIPA1およびIPA2が、それぞれ、機器1および機器2のために選択される1280。新しいアドレスIPA1は、機器1の予約済アドレス（RA1）を含まないプライベートアドレスのプール（PAP）の中から選択され、新しいアドレスIPA2は、機器2の予約済アドレス（RA2）を含まないプライベートアドレスのプール（PAP）の中から選択される。新しいアドレス対が、機器1の予約済アドレスおよび機器2の予約済アドレスに追加される1250。具体的には、IPA1が機器2の予約済アドレスRA2に追加され、機器2の選択されたアドレスIPA2が機器1の予約済アドレスRA2に追加される。
【０１２０】
以上では、最良の形態および/または他の例とみなされるものを説明したが、それらの中で様々な改変が行われうること、ならびに本明細書で開示する主題は様々な形態および例として実施されうること、ならびに本発明の教示は多数の用途において適用されてもよく、本明細書ではそのうちのごく一部を説明していることが理解される。添付の特許請求の範囲では、本発明の教示の正確な範囲内に含まれるありとあらゆる適用、改変および変形を特許請求することが意図されている。
【０１２１】
特に指示しない限り、本明細書で示すすべての測定値、値、定格、位置、規模、大きさ、および他の仕様は、添付の特許請求の範囲に含まれるものを含めて、近似であり、厳密なものではない。それらは、それらが関連する機能との整合性、およびそれらが関連する技術分野において慣例的なものとの整合性を有する妥当な範囲を有するものであることが意図されている。
【０１２２】
保護の範囲はもっぱら添付の特許請求の範囲によって限定される。当該範囲は、本明細書および今後の審査経過に照らして解釈されるときに特許請求の範囲において使用される文言の通常の意味との整合性を有する広さであり、あらゆる構造的、機能的均等物を包含するものであることが意図されており、そのように解釈すべきである。とはいえ、特許請求の範囲のうちのいかなる部分も、米国特許法の第101条、102条、または103条の要件を満たさない主題を含むことを意図するものではなく、そのように解釈すべきでもない。そのような主題の意図しない包含はこれにより除外される。
【０１２３】
直前に述べたものを除いて、本明細書に記載し、または例示したいかなる内容も、それが特許請求の範囲に記載されているか否かを問わず、いずれかの構成要素、工程、特徴、対象、利益、利点、またはその均等物を公共の用に供させることを意図するものではなく、そのように解釈すべきでもない。
【０１２４】
本明細書で使用する用語および表現は、特定の意味が本明細書において別の意味として記載されている場合を除き、それらが対応するそれぞれの調査研究領域に関連したそのような用語および表現に適合した通常の意味を有するものであることが理解されるであろう。第1の、第2のなどといった関係を示す用語は、もっぱら、ある実体または動作を別の実体または動作と区別するのに使用されうるものであり、必ずしも、そのような実体間または動作間の実際のそのような関係または順序を必要とし、または示唆するとは限らない。「含む（comprises）」、「含む（comprising）」、またはこれらの用語の任意の他の変形は、非排他的包含を対象とすることが意図されており、よって、要素のリストを含む（comprises）プロセス、方法、物品、もしくは装置は、それらの要素だけを含むのではなく、明示的に記載されない、またはそのようなプロセス、方法、物品、もしくは装置に固有の他の要素も含みうるものである。「1つの（a）」または「1つの（an）」から始まる要素は、さらなる制約条件がない場合には、当該要素を含むプロセス、方法、物品、または装置内のさらに別の同一の要素の存在を除外するものではない。
【０１２５】
本開示の要約は、読者が本技術的開示の本質を迅速に把握することを可能にするために提供するものである。要約は、特許請求の範囲または意味を解釈し、または限定するために使用されるものではないという理解の下に提示するものである。加えて、前記詳細な説明では、本開示を簡素化するために、様々な特徴が様々な態様においてまとめてグループ化されている場合もありうる。この開示方法は、特許請求される態様が各請求項に明示的に記載されるよりも多くの特徴を必要とするという意図を反映するものと解釈すべきではない。そうではなく、添付の特許請求の範囲が反映するように、発明の主題は、単一の開示の態様のすべての特徴よりも少ない特徴に存する。よって添付の特許請求の範囲はこれにより詳細な説明に組み入れられ、各請求項は別々に特許請求される主題として独立したものである。
【図１】
2018166345.tif 000020
【図２】
2018166345.tif 000021
【図３Ａ】
2018166345.tif 000022
【図３Ｂ】
2018166345.tif 000023
【図４】
2018166345.tif 000024
【図５】
2018166345.tif 000025
【図６Ａ】
2018166345.tif 000026
【図６Ｂ】
2018166345.tif 000027
【図７】
2018166345.tif 000028
【図８】
2018166345.tif 000029
【図９】
2018166345.tif 000030
【図１０】
2018166345.tif 000031
【図１１】
2018166345.tif 000032
【図１２】
2018166345.tif 000033
【手続補正書】
【提出日】平成30年9月3日(2018.9.3)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
リモート機器とパブリックネットワーク上で安全に通信する際にアドレスの競合を自動的に回避するための、第1のローカルネットワーク上のローカル機器であって、該リモート機器は、該ローカルネットワークの外部の第2のローカルネットワーク内に位置し、
ネットワークドライバ；および
少なくとも一つのプロセッサであって、
予約されたローカルネットワークアドレスと競合しないローカルネットワークアドレスのブロックを識別し；
ローカルネットワークアドレスの該ブロックを使用して、該リモート機器と、ネゴシエーションし、第2のローカルネットワーク上のローカルアドレスと競合しない、少なくとも一つのローカルネットワークアドレスを該ブロックから選択し；
該ネットワークドライバに、該選択された少なくとも一つのローカルネットワークアドレスを割り当て；かつ
該ネットワークドライバを使用して、該割り当てられた少なくとも一つのローカルネットワークアドレスに基づき、該リモート機器と安全に通信する
ように構成された、前記プロセッサ
を含む、前記ローカル機器。
【請求項２】
前記ローカル機器がモバイル機器である、請求項1記載のローカル機器。
【請求項３】
前記リモート機器がモバイル機器である、請求項1記載のローカル機器。
【請求項４】
前記ネットワークドライバがソフトウェアモジュールである、請求項1記載のローカル機器。
【請求項５】
前記ネットワークドライバが、安全に通信するための第1のネットワークドライバと第2のネットワークドライバを含み、かつ前記少なくとも一つのプロセッサが、前記ローカルネットワークアドレスのブロックを、該第2のネットワークドライバではなく該第1のネットワークドライバに割り当てるように構成されている、請求項1記載のローカル機器。
【請求項６】
前記ローカルネットワークアドレスが前記ローカルネットワーク上のプライベートネットワークアドレスである、請求項1記載のローカル機器。
【請求項７】
前記パブリックネットワークがローカルネットワークの外部にある、請求項1記載のローカル機器。
【請求項８】
安全に通信するために、前記少なくとも一つのプロセッサが、前記パブリックネットワーク上で前記リモート機器に送信されるパケットを暗号化するように構成されている、請求項1記載のローカル機器。
【請求項９】
安全に通信するために、前記少なくとも一つのプロセッサが、安全な通信リンクを使用して前記パブリックネットワーク上で前記リモート機器と通信すべく前記ネットワークドライバを制御するように構成されている、請求項1記載のローカル機器。
【請求項１０】
安全に通信するために、前記少なくとも一つのプロセッサが、仮想プライベートネットワーク上の通信リンクを使用して前記リモート機器と通信すべく前記ネットワークドライバを制御するように構成されている、請求項1記載のローカル機器。
【請求項１１】
前記仮想プライベートネットワーク上での通信リンクのために、前記少なくとも一つのプロセッサが、前記ローカル機器のプライベートアドレスまたは前記リモート機器のプライベートアドレスのうちの少なくとも一つを前記選択された少なくとも一つのローカルネットワークアドレスでカプセル化し、かつ該ローカル機器の該プライベートアドレスまたは該リモート機器の該プライベートアドレスのうちの少なくとも一つを暗号化するように構成されている、請求項10記載のローカル機器。
【請求項１２】
前記少なくとも一つのプロセッサが、前記選択された少なくとも一つのリモートネットワークアドレスを前記予約されたローカルネットワークアドレスに追加するように構成されている、請求項1記載のローカル機器。
【請求項１３】
前記少なくとも一つのプロセッサが、前記ローカル機器と前記リモート機器の間の通信セッションが終了する時に、前記選択された少なくとも一つのローカルネットワークアドレスを前記予約されたローカルネットワークアドレスから除外するように構成されている、請求項12記載のローカル機器。
【請求項１４】
前記ローカルネットワークアドレスのそれぞれがIPアドレスとネットワークマスクを含む、請求項1記載のローカル機器。
【請求項１５】
前記少なくとも一つのプロセッサが、ネットワークアドレス変換器を使用して、前記選択された少なくとも一つのローカルネットワークアドレスを前記ローカルネットワーク上の前記ローカル機器のプライベートアドレスに変換するようにさらに構成されている、請求項1記載のローカル機器。
【請求項１６】
前記少なくとも一つのプロセッサが、前記リモート機器に相当するネームを求めるネームサービス要求に応答して、前記識別、割り当て、およびネゴシエーション処理のうちの一つまたはそれ以上を実行するようにさらに構成されている、請求項1記載のローカル機器。
【請求項１７】
前記リモート機器との前記通信が、ホスト間接続またはホスト・ネットワーク間接続である、請求項1記載のローカル機器。
【請求項１８】
ローカルネットワーク上のローカル機器によって実行される、該ローカルネットワークの外部の第2のローカルネットワーク内に位置したリモート機器とパブリックネットワーク上で安全に通信する際にアドレスの競合を自動的に回避するための方法であって、
使用のために予約されたローカルネットワーク上のローカルネットワークアドレスを識別する段階；
該予約されたローカルネットワークアドレスと競合しないローカルネットワークアドレスのブロックを識別する段階；
ローカルネットワークアドレスの該ブロックを使用して、該リモート機器と、ネゴシエーションし、該第2のローカルネットワーク上のローカルアドレスと競合しない、少なくとも一つのローカルネットワークアドレスを該ブロックから選択する段階；
該ローカル機器の該ネットワークドライバーに、該選択された少なくとも一つのローカルネットワークアドレスを割り当てる段階；および
該ネットワークドライバを使用して、該割り当てられた少なくとも一つのローカルネットワークアドレスに基づき、該リモート機器と安全に通信する段階
を含む、前記方法。
【請求項１９】
前記ローカル機器がモバイル機器である、請求項18記載の方法。
【請求項２０】
前記リモート機器がモバイル機器である、請求項18記載の方法。
【請求項２１】
前記ネットワークドライバがソフトウェアモジュールである、請求項18記載の方法。
【請求項２２】
前記ネットワークドライバが、安全に通信するための第1のネットワークドライバと、第2のネットワークドライバとを含む、請求項18記載の方法であって、前記ローカルネットワークアドレスのブロックを該第2のネットワークドライバではなく該第1のネットワークドライバに割り当てる段階をさらに含む、前記方法。
【請求項２３】
前記ローカルネットワークアドレスが前記ローカルネットワーク上のプライベートネットワークアドレスである、請求項18記載の方法。
【請求項２４】
前記パブリックネットワークが、前記ローカルネットワークの外部にある、請求項18記載の方法。
【請求項２５】
前記安全に通信する段階が、前記パブリックネットワーク上で前記リモート機器に送信されるパケットを暗号化する段階を含む、請求項18記載の方法。
【請求項２６】
前記安全に通信する段階が、安全な通信リンクを使用して前記パブリックネットワーク上で前記リモート機器と通信する段階を含む、請求項18記載の方法。
【請求項２７】
前記安全に通信する段階が、仮想プライベートネットワーク上の通信リンクを使用して前記リモート機器と通信する段階を含む、請求項18記載の方法。
【請求項２８】
前記仮想プライベートネットワーク上の前記通信リンクを使用して安全に通信する段階が、前記ローカル機器のプライベートアドレスまたは前記リモート機器のプライベートアドレスの少なくとも一つを、該選択された少なくとも一つのローカルネットワークアドレスでカプセル化する段階、および前記ローカル機器の前記プライベートアドレスまたは前記リモート機器の前記プライベートアドレスの該少なくとも一つを暗号化する段階を含む、請求項27記載の方法。
【請求項２９】
前記選択された少なくとも一つのリモートネットワークアドレスを前記予約されたローカルネットワークアドレスに追加する段階をさらに含む、請求項18記載の方法。
【請求項３０】
前記ローカル機器と前記リモート機器の間の通信セッションが終了するときに、前記予約されたローカルネットワークアドレスから前記選択された少なくとも一つのローカルネットワークアドレスを除外する段階をさらに含む、請求項29記載の方法。
【請求項３１】
前記ローカルネットワークアドレスのそれぞれが、IPアドレスとネットワークマスクを含む、請求項18記載の方法。
【請求項３２】
ネットワークアドレス変換器を使用して、前記選択された少なくとも一つのローカルネットワークアドレスを前記ローカルネットワーク上の前記ローカル機器のプライベートアドレスに変換する段階をさらに含む、請求項18記載の方法。
【請求項３３】
前記リモート機器に相当するネームを求めるネームサービス要求に応答して、前記識別、割り当て、ネゴシエーション段階のうちの一つまたはそれ以上を実行する段階をさらに含む、請求項18記載の方法。
【請求項３４】
前記リモート機器との前記通信がホスト間接続またはホスト・ネットワーク間接続である、請求項18記載の方法。