図1は、通信システムの概略構成の例を示すブロック図である。図1に例示する通信システムは、それぞれ異なるファイアウォール10−1,10−2,…,10−N(以下、「ファイアウォール10」と総称する)を介してインターネット20に接続された複数の情報処理装置30−1,30−2,…,30−N(以下、「情報処理装置30」と総称する)と、ノード管理サーバ40と、中継サーバ50−1,…,50−M(以下、「中継サーバ50」と総称する)と、を含む。ノード管理サーバ40及び中継サーバ50は、インターネット20に接続される。
本例では、各ファイアウォール10は、その配下の情報処理装置30から送信される送信データパケットとその送信データパケットに対する応答データパケットとを通過させ、その他のデータパケットは通過させないよう設定される。各情報処理装置30は、他の情報処理装置30との間でVPNによる通信を行う。以下、情報処理装置30をVPNノードとも呼ぶ。ノード管理サーバ40は、情報処理装置30間の通信を管理する管理装置である。中継サーバ50は、情報処理装置30間の通信を中継する中継装置である。
図2は、ノード管理サーバ40の内部構成の概略の例を示すブロック図である。ノード管理サーバ40は、制御部42、記憶部44、及び通信部46がバス48により互いに接続された構成を有する。
記憶部44は、制御部42における処理で用いられる情報を記憶する。記憶部44は、例えば、ノード管理テーブル、中継サーバ管理テーブル、及びセッション管理テーブルなどを記憶する。ノード管理テーブルは、ノード管理サーバ40に登録されたVPNノードに関する情報を保持するテーブルである。ノード管理テーブルは、例えば、登録された各VPNノードのノードID(識別子)を含む。中継サーバ管理テーブルは、インターネット上の中継サーバ50に関する情報を保持するテーブルである。中継サーバ管理テーブルは、例えば、各中継サーバ50のグローバルIPアドレスのリストであってよい。中継サーバ管理テーブルの値は、例えば、各中継サーバ50の管理者などにより設定される。セッション管理テーブルについては後述する。
通信部46は、中継サーバ50や情報処理装置30などの他の装置との間の通信データを送受信するインタフェースとして機能する。通信部46は、例えば、他の装置からデータを受信すると、バス48を介して受信データを制御部42に渡す。また例えば、通信部46は、バス48を介して制御部42から受け取った送信データを他の装置に対して送り出す。
制御部42は、ノード管理サーバ40における各種の処理を実行する。制御部42は、バス48を介して記憶部44から情報を読み出したり記憶部44に情報を書き込んだりすることで各種の処理を実行する。制御部42は、ノード登録手段420、接続要求処理手段422、接続方式指示手段424、待受指示手段426、及びNAT(Network Address Translation)指示手段428を備える。
ノード登録手段420は、VPNノードからのノード登録要求に応じて、要求元のVPNノードをノード管理サーバ40に登録する。ノード登録手段420は、例えば、ノード登録要求に含まれる要求元のVPNノードのノードIDを記憶部44中のノード管理テーブルに登録する。
接続要求処理手段422は、VPNノードからの接続要求に応じた処理を行う。VPNノードからの接続要求は、その要求元のVPNノードが接続を求める相手先のVPNノードを特定する情報を含む。本実施形態の例では、接続要求は、要求元のVPNノードのノードIDと相手先のVPNノードのノードIDとを含むものとする。接続要求処理手段422は、例えば、要求元のVPNノードと相手先のVPNノードとの間の通信を確立するために用いる情報を記憶部44中のセッション管理テーブルに登録する。
セッション管理テーブルは、VPNノード間の通信に関する情報を保持するテーブルである。図3に、セッション管理テーブルの内容の例を示す。図3の例の表の1行は、特定の2つのVPNノードの間の通信に関する情報を表すレコードである。
図3を参照し、セッション管理テーブルの各レコードは、セッションID、中継サーバIP、SRCノードID、DSTノードID、中継サーバ仮想IP、SRCノード仮想IP、SRC用待受ポート、DST用待受ポート、及び状態の各項目を有する。セッションIDは、当該レコードに対応するVPNノード間の通信のために形成される接続セッションの識別子である。中継サーバIPは、当該レコードに対応するVPNノード間の通信を中継する中継装置のグローバルIPアドレスである。SRCノードIDは、当該レコードに対応する2つのVPNノードのうち、先にノード管理サーバ40に対して接続要求を行ったVPNノードのノードIDである。DSTノードIDは、当該レコードに対応する2つのVPNノードのうち、SRCノードIDが表すノード(以下、「SRCノード」と言う)の他のVPNノードのノードIDである。言い換えると、DSTノードIDは、SRCノードがノード管理サーバ40に対して行った接続要求に含まれる相手先のVPNノードのノードIDである。中継サーバ仮想IPは、中継サーバ50の仮想的なIPアドレスである。SRCノード仮想IPは、SRCノードの仮想的なIPアドレスである。中継サーバ仮想IP及びSRCノード仮想IPは、後述するように、中継サーバ50とSRCノードとの間のVPN接続の形成に用いられる。SRC用待受ポートは、SRCノードと中継装置との間のVPN接続で用いられるポート番号を表す。DST用待受ポートは、DSTノードIDが表すVPNノード(以下、「DSTノード」と言う)と中継サーバ50との間の通信で用いられるポート番号を表す。状態の項目は、ノード管理サーバ40において、SRCノードIDを接続の相手先のノードIDとして含む接続要求をDSTノードから受けたか否かを表す。図3の例では、状態の項目の値が「待ち」であれば、ノード管理サーバ40がDSTノードからSRCノードへの接続要求を未だ受けていないことを表し、「確定」であれば、DSTノードからSRCノードへの接続要求をノード管理サーバ40が受けたことを表す。
再び図2を参照し、接続要求処理手段422は、VPNノードから接続要求を受けると、例えば、セッション管理テーブルを参照し、要求元のVPNノードのノードIDをDSTノードIDとして含み、かつ接続要求中の相手先のVPNノードのノードIDをSRCノードIDとして含むVPNレコードを検索する。そのようなレコードがセッション管理テーブルに存在すれば、そのレコードにおいて状態の項目の値を「確定」に設定する。そのようなレコードが存在しなければ、新たなセッションIDを含むレコードを生成してセッション管理テーブルに登録する。そして、この新規登録されたレコードにおいて、要求元のVPNノードのノードIDをSRCノードIDに設定し、接続要求中の相手先のVPNノードのノードIDをDSTノードIDに設定し、状態の項目の値を「待ち」に設定する。さらに、記憶部44中の中継サーバ管理テーブルに登録された中継サーバ50のうちから1つを選択し、選択した中継サーバ50のIPアドレスを新規登録されたレコードの中継サーバIPに設定する。また、接続要求処理手段422は、新規登録されたレコードにおいて、中継サーバ仮想IP、SRCノード仮想IP、SRC用待受ポート、及びDST用待受ポートの各項目につき、予め設定された規則に従って割り当てた値を設定する。
接続要求処理手段422は、さらに、接続方式指示手段424に対し、受け取った接続要求の要求元のVPNノードがセッション管理テーブルにおいてSRCノードであるかDSTノードであるかを通知する。また、接続要求処理手段422は、要求元のVPNノードがSRCノードであれば待受指示手段426に対してその旨を通知し、DSTノードであればNAT指示手段428に対してその旨を通知する。
接続方式指示手段424は、接続要求の要求元のVPNノードに対して、中継サーバ50に接続する接続方式を指示する。本実施形態の例では、接続方式指示手段424は、要求元のVPNノードに対し、中継サーバ50のグローバルIPアドレス、中継サーバ50に接続する際の接続先ポート番号、及び、通信データの暗号化の有無を指示する。中継サーバ50のグローバルIPアドレスとしては、要求元のVPNノードが登録されたセッション管理テーブルのレコード中の中継サーバIPの値を指示する。接続先ポート番号及び通信データの暗号化の有無については、接続方式指示手段424は、要求元のVPNノードがSRCノードであるかDSTノードであるかによって異なる値を指示する。本例では、要求元のVPNノードがSRCノードである場合、対応するセッション管理テーブルのレコード中のSRC用待受ポートの値を接続先ポート番号として指示し、かつ、通信データの暗号化を行わないことを指示する。要求元のVPNノードがDSTノードである場合は、対応するセッション管理テーブルのレコード中のDST用待受ポートの値を接続先ポート番号として指示し、かつ、通信データの暗号化を行うことを指示する。以上より、本実施形態の例の接続方式指示手段424は、要求元のVPNノードに対し、SRCノードとして接続する接続方式又はDSTノードとして接続する接続方式を指示するものであると言える。
待受指示手段426は、接続要求の要求元のVPNノードがSRCノードである場合に、このSRCノードと対応するDSTノードとの間の通信を中継する中継サーバ50に対して、このSRCノードからのVPN接続を待ち受けることを指示する待受指示を行う。待受指示手段426は、例えば、セッション管理テーブルにおいて当該SRCノードが登録されたレコード中の中継サーバIPを有する中継サーバ50に対し、待受指示とともに、対応するセッションID、SRCノードID、中継サーバ仮想IP、SRCノード仮想IP、及びSRC用待受ポートの値を渡す。
NAT指示手段428は、接続要求の要求元のVPNノードがDSTノードである場合に、このDSTノードと対応するSRCノードとの間の通信を中継する中継サーバ50に対して、このDSTノードから受信したデータパケットの宛先を、SRCノードを表す宛先に書き換えることを指示するNAT指示を行う。本実施形態の例では、NAT指示手段428は、対応するセッション管理テーブルのレコード中のセッションID、DST用待受ポート、SRCノード仮想IP、及びSRC用待受ポートの値を中継サーバ50に渡すとともに、DST用待受ポートのポート番号で受信したデータパケットの宛先を、SRCノード仮想IP及びSRC用待受ポートの組を含む宛先に書き換えることを指示する。
図4は、中継サーバ50の内部構成の概略例を示すブロック図である。中継サーバ50は、制御部52、記憶部54、及び通信部56がバス58により互いに接続された構成を備える。
記憶部54は、制御部52における処理で用いられる情報を記憶する。記憶部54は、例えば、後述の待受用VPNセッションテーブル及びNAT処理用テーブルなどを記憶する。
通信部56は、情報処理装置30やノード管理サーバ40などの他の装置との間の通信データを送受信するインタフェースとして機能する。
制御部52は、中継サーバ50における各種の処理を実行する。制御部52は、VPNサーバ起動手段520及びNAT処理手段522を備える。
VPNサーバ起動手段520は、ノード管理サーバ40から上述の待受指示を受けた場合に、SRCノードからのVPN接続を待ち受けるVPNサーバを起動する。VPNサーバは、VPNスポークとして機能する装置からのVPN接続開始の要求を待ち受けて、その装置との間でVPN接続を形成するVPNハブとして機能するソフトウエアであってよい。このVPNサーバが形成するVPN接続に関する情報は、例えば、記憶部54の待受用VPNセッションテーブルに登録される。
図5に、待受用VPNセッションテーブルの内容の例を示す。図5を参照し、待受用VPNセッションテーブルには、待受指示とともにノード管理サーバ40から受信したセッションID、SRCノードID、SRC用待受ポート、中継サーバ仮想IP、及びSRCノード仮想IPが登録される。
再び図4を参照し、NAT処理手段522は、ノード管理サーバ40からの上述のNAT指示に従った処理を行う。NAT処理手段522は、例えば、ノード管理サーバ40からNAT指示を受けると、そのNAT指示に従って、アドレス変換の規則(NATルール)を記憶部54中のNAT処理用テーブルに登録する。また、NAT処理手段522は、NAT処理用テーブルに登録されたNATルールに従って、通信部56が受信したデータパケットのヘッダ情報中の宛先アドレス又は送信元アドレスを書き換える。
図6に、NAT処理用テーブルの内容の例を示す。図6の例の表の1行は、1つのNATルールを表す。図6を参照し、NAT処理用テーブルの各NATルールは、セッションID、DST用待受ポート、リダイレクト先IP、及びリダイレクト先ポートを含み、それぞれ、NAT指示とともにノード管理サーバ40から受信したセッションID、DST用待受ポート、SRCノード仮想IP、及びSRC用待受ポートの値に設定される。図6の例のNATルールは、DST用待受ポートのポート番号で受信したデータパケットの宛先アドレスを、リダイレクト先IP及びリダイレクト先ポートを含む宛先アドレスに書き換えることを表す。
次に、図7を参照し、VPNノードとなる情報処理装置30について説明する。図7に、各情報処理装置30の概略構成の例を示す。情報処理装置30は、制御部32、記憶部34、及び通信部36がバス38により互いに接続された構成を有する。
記憶部34は、制御部32における処理に必要な情報を記憶する。例えば、記憶部34は、ノード管理サーバIP(Internet Protocol)、自ノード情報、接続相手先情報、及びVPN接続セッション情報などを記憶する。ノード管理サーバIPは、ノード管理サーバ40のグローバルIPアドレス(インターネット上の各装置に一意なアドレス)である。自ノード情報は、自装置に関する情報であり、例えば、自装置のノードID及びIPアドレスなどを含む。接続先相手情報は、接続相手となる他のVPNノードに関する情報であり、例えば、そのVPNノードのノードIDなどを含む。接続先相手情報は、例えば、図示しない入力装置を介してシステムの管理者などによる入力を受け付けて記憶部34に記憶される。また例えば、制御部32がノード管理サーバ40に対して、自装置と接続可能なVPNノードのノードIDを問合わせることで接続先相手情報を取得してもよい。VPN接続セッション情報は、VPNクライアント起動手段324が起動するVPNクライアントにより形成されるVPN接続に関する情報を含む。VPNサーバ起動手段326がVPNサーバを起動する場合、VPN接続セッション情報は、さらに、VPNサーバが形成するVPN接続に関する情報を含む。
通信部36は、他の装置との間の通信データを送受信するインタフェースとして機能する。
制御部32は、VPNノードにおける各種の処理を実行する。制御部32は、ノード登録要求手段320、接続要求手段322、VPNクライアント起動手段324、及びVPNサーバ起動手段326を備える。
ノード登録要求手段320は、ノード管理サーバ40に対し、自装置を登録することを要求する。ノード登録要求手段320は、例えば、自装置に付与されたノードIDをノード管理サーバ40に対して送信する。ノードIDは、各VPNノードの識別子であって、通信システム内で一意な識別子である。
接続要求手段322は、ノード管理サーバ40に対し、他のVPNノードとの接続を要求する。接続要求手段322は、例えば、自装置のノードIDと接続する相手先のVPNノードのノードIDとを含む接続要求をノード管理サーバ40に対して送信する。
VPNクライアント起動手段324は、接続要求手段322が行った接続要求に応じてノード管理サーバ40から指示される接続方式に従って中継サーバ50に接続するVPNクライアントを起動する。VPNクライアントは、例えば、VPNハブとして機能する装置に対してVPN接続を行うVPNスポークとして機能するソフトウエアであってよい。VPNクライアント起動手段324が起動するVPNクライアントは、ノード管理サーバ40から指示された中継サーバIP及び接続先ポート番号に対してVPN接続する。このVPN接続において、ノード管理サーバ40から指示された暗号化の有無に従って、通信データの暗号化を行うか否かが決定される。
VPNサーバ起動手段326は、ノード管理サーバ40から指示された接続方式に応じて、他のVPNノードで起動されたVPNクライアントからのVPN接続を待ち受けるVPNサーバを起動する。本実施形態の例では、VPNサーバ起動手段326は、中継サーバ50との間の通信データの暗号化を行わないことをノード管理サーバ40から指示された場合にVPNサーバを起動する。これは、すなわち、中継サーバ50に接続する際の接続先ポート番号としてDST用待受ポートを指定された場合である。VPNサーバは、例えば、VPNスポークとして機能する装置からのVPN接続開始の要求を待ち受けて、その装置との間にVPN接続を形成する機能を有するソフトウエアであってよい。通信データの暗号化を行うことをノード管理サーバ40から指示された場合、つまり、接続先ポート番号としてSRC用待受ポートを指定された場合は、VPNサーバ起動手段326は、VPNサーバの起動を行わない。
以上で説明した例の情報処理装置30、ノード管理サーバ40、及び中継サーバ50は、それぞれ、例えば、汎用のコンピュータによって実現される。例えば、制御部32,42,52は、コンピュータのCPU(中央演算装置)によって実現され、記憶部34,44,54は、ハードディスクなどの固定記憶装置や、CDやDVDなどの記録媒体を読み取るディスクドライブによって実現される。制御部32,42,52の各手段による処理の手順を記述したプログラムを記憶部34,44,54に記憶させておき、このプログラムをCPUがコンピュータの一時記憶装置(メモリ)に読み出して実行することで、CPUは上述の制御部32,42,52として機能する。
以下、通信システムの動作の例を説明する。
図8は、通信システムの動作の例を表すシーケンス図である。図8は、2つのVPNノード間のVPN接続を形成するときの通信システムの動作手順の例を示す。図8の例では、これら2つのVPNノードをVPNノードA(ノードIDは“NODE-A”)及びVPNノードB(ノードID“NODE-B”)と表す。なお、以下では、図8のシーケンスの開始時にはセッション管理テーブルは空であるものとして説明する。
図8を参照し、まず、VPNノードA及びVPNノードBのそれぞれが自装置をノード管理サーバ40に登録する(ステップS10,S12)。VPNノードA及びVPNノードBのそれぞれにおいて、制御部32のノード登録要求手段320がバス38及び通信部36を介して自装置のノードIDを含む登録要求をノード管理サーバIP宛に送信する。登録要求を含むデータパケットは、各VPNノードから送信されるものであるため、ファイアウォールを通過し、インターネット20を介してノード管理サーバ40の通信部46により受信される。ノード管理サーバ40の制御部42のノード登録手段420は、各VPNノードのノードID“NODE-A”,“NODE-B”を記憶部44中のノード管理テーブルに登録する。
その後、VPNノードAは、ノード管理サーバ40に対し、VPNノードBを接続の相手先として特定する接続要求を行う(ステップS14)。この接続要求は、VPNノードAのノードID“NODE-A”を要求元のノードIDとして、VPNノードBのノードID“NODE-B”を相手先のノードIDとして含む。接続要求を含むデータパケットは、VPNノードAの制御部32の接続要求手段322によりノード管理サーバIP宛に送信される。
VPNノードAからの接続要求を受けたノード管理サーバ40は、要求元のVPNノードAの認証処理を行う(ステップS16)。例えば、ノード管理サーバ40の制御部42の接続要求処理手段422において、接続要求に含まれる要求元のノードIDが記憶部44中のノード管理テーブルに登録されたノードIDと一致するか否かによって認証処理を行う。あるいは、例えば、ノードIDの他にパスワードなどの認証用のデータをさらに用いて認証処理を行ってもよい。ノードIDとともに認証用のデータを用いて認証処理を行う例の場合、VPNノードの登録時に、各VPNノードは、自装置のノードIDとともに認証用のデータをノード管理サーバ40に送信し、ノード管理サーバ40のノード管理テーブルにはノードIDと認証用のデータとの組が登録される。本例では、ノードID中に認証データが含まれているものとする。
認証処理(ステップS16)が成功すると、接続要求処理手段422は、記憶部44中のセッション管理テーブルを参照し、要求元のノードID“NODE-A”をDSTノードIDとし、相手先のノードID“NODE-B”をSRCノードIDとするレコードを検索する。本例では、この時点でセッション管理テーブルは空であるので、そのようなレコードは検索結果として得られない。そこで、接続要求処理手段422は、VPNノードAからの接続要求に対応する通信セッションに新たにセッションIDを付与し、このセッションIDのレコードをセッション管理テーブルに新規登録する。新規登録したレコードにおいて、SRCノードIDを要求元のノードID“NODE-A”に、DSTノードIDを相手先のノードID“NODE-B”に設定し、状態の項目の値を「待ち」に設定する。また、記憶部44中の中継サーバ管理テーブルに登録された中継サーバ50から1つ選択した中継サーバ50のIPアドレスを新規登録レコードの中継サーバIPとして設定する。そして、中継サーバ仮想IP、SRCノード仮想IP、SRC用待受ポート、及びDST用待受ポートの各値を予め設定された規則に従って割り当てる。本例では、接続要求処理手段422は、これらの各値を以下の[例1]の規則に従って割り当てるものとする。
[例1]
中継サーバ仮想IP = 172.0.0.0 + セッションID* 2 - 1
SRCノード仮想IP = 172.0.0.0 + セッションID * 2
SRC用待受ポート = 10001 (固定)
DST用待受ポート = 10001 + セッションID
[例1]の規則によると、中継サーバ仮想IP、SRCノード仮想IP、及びDST用待受ポートについては、セッションIDに応じて異なる値が割り当てられる。SRC用待受ポートには、セッションIDにかかわらず一定の値“10001”が割り当てられる。SRC用待受ポートは、中継サーバ50で起動されるVPNサーバにおいてVPNクライアントからのVPN接続を待ち受けるポート番号として用いられる。よって、SRC用待受ポートの値を固定値に設定しておけば、中継サーバ50において異なるセッションIDに対応する複数のVPNサーバが起動される場合に、複数のVPNサーバが共通して1つの待受ポートを用いてVPN接続を待ち受けることになり、中継サーバ50において、複数のVPNサーバそれぞれについて異なる待受ポートを設定する必要がない。
図3の例のセッション管理テーブルのセッションID“1”の行は、VPNノードAからの接続要求(図8のステップS14)に応じてセッション管理テーブルに登録されるレコードの例を示し、[例1]の規則に従って各仮想IP及び待受ポートの値が割り当てられている。
図8のシーケンスの例の説明に戻り、セッション管理テーブルにレコードを登録すると、ノード管理サーバ40の制御部42において、接続要求処理手段422は、接続要求の要求元であるVPNノードAがセッション管理テーブルにおいてSRCノードであることを接続方式指示手段424に通知する。さらに、要求元がSRCノードであることから、その旨を待受指示手段426に通知する。
待受指示手段426は、セッション管理テーブルの対応するレコード(セッションID“1”)における中継サーバIPの中継サーバ50に対し、バス48及び通信部46を介して、SRCノード“NODE-A”からのVPN接続を待ち受けることを指示する待受指示を出す(ステップS18)。この待受指示とともに、中継サーバ50においてVPN接続の待ち受けの設定に用いられる設定情報を中継サーバ50に送信する。本例では、設定情報として、セッションID“1”、SRCノードID“NODE-A”、中継サーバ仮想IP“172.0.0.1”、SRCノード仮想IP“172.0.0.2”、及びSRC用待受ポート“10001”を送信する。
待受指示を受けた中継サーバ50は、VPN接続の待ち受けの設定を行う(ステップS20)。中継サーバ50の制御部52において、通信部56及びバス58を介してノード管理サーバ40から取得される待受指示及び設定情報に従って、VPNサーバ起動手段520は、VPN接続を待ち受けるVPNサーバを起動する。取得した設定情報は記憶部54中の待受用VPNセッションテーブルに登録される。VPNサーバの起動には、例えば、Linux(登録商標)などのOS(Operating System)でVPN接続の形成に用いられるソフトウエアの1つである「vtun」を利用してよい。「vtun」ソフトウエアを利用してVPNサーバを起動する場合の設定データの一例を次の[例2]に示す。
[例2]
仮想インタフェース名:tun1
待受ポート:10001
ローカル仮想IP:172.0.0.1
リモート仮想IP:172.0.0.2
認証データ:NODE-A
暗号:なし
[例2]において、仮想インタフェース名は、制御部52が当該VPNサーバに付与する名称である。[例2]では、ノード管理サーバ40から取得したセッションID“1”を含む仮想インタフェース名としている。待受ポートは、VPNクライアントからのVPN接続を待ち受けるポート番号を表す。ここでは、ノード管理サーバ40から取得したSRC用待受ポート“10001”に設定される。ローカル仮想IPは、自己(つまり、VPNサーバ)の仮想的なアドレスである。本例では、ノード管理サーバ40から取得した中継サーバ50の仮想IP“172.0.0.1”がローカル仮想IPとなる。また、リモート仮想IPは、VPN接続の相手のVPNクライアントの仮想的なアドレスである。本例では、ノード管理サーバ40から取得したSRCノード仮想IP“172.0.0.2”に設定される。認証データは、VPN接続の相手のVPNクライアントの認証情報である。本例では、SRCノードID“NODE-A”に設定される。暗号の項目は、VPN接続において通信データを暗号化するか否かを表す。本実施形態の例では、SRCノードと中継サーバ50との間のVPN接続において通信データの暗号化を行わないため、VPNサーバ起動手段520が起動するVPNサーバの設定データにおける暗号の項目の値は、「なし」に固定される。
以上、中継サーバ50におけるVPN待受設定処理(ステップS20)の例を説明した。
ノード管理サーバ40の制御部42において、さらに、接続方式指示手段424は、VPNノードAに対し、ステップS14の接続要求に対する応答として、中継サーバ50に接続する接続方式を指示する(ステップS22)。ここで、接続方式指示手段424は、VPNノードAがセッション管理テーブルにおいてSRCノードであることから、SRCノードとして中継サーバ50に接続する接続方式を指示する。具体的には、中継サーバ50に接続するポート番号として、対応するセッション管理テーブルのレコードのSRC用待受ポート“10001”を指定する。また、中継サーバ50との間の通信データの暗号化の有無を表す接続種別として、暗号化を行わないことを意味する「非暗号」を指示する。さらに、対応する中継サーバIP“211.xxx.yyy.1”も送信する。接続方式を指示する情報を含むデータパケットは、バス48及び通信部46を介してインターネット20に送り出され、VPNノードAが行った接続要求(ステップS14)に対する応答であることからVPNノードAとインターネット20との間に設けられたファイアウォール10を通過してVPNノードAの通信部36により受信される。
接続方式の指示を受けたVPNノードAの制御部32では、この指示に従って、VPNクライアント起動手段324によりVPNクライアントが起動される。本例では、接続方式の指示において指定されたポート番号(ここでは、SRC用待受ポート“10001”)及び指定された中継サーバIP“211.xxx.yyy.1”に対して、暗号化を行わずにVPN接続するVPNクライアントが起動される。VPNクライアント起動手段324は、上述の「vtun」ソフトウエアを利用してVPNクライアントを起動してよい。「vtun」ソフトウエアを利用する場合の設定データの例を次の[例3]に示す。
[例3]
仮想インタフェース名:tunN
接続先VPNサーバ:211.xxx.yyy.1:10001
ローカル仮想IP: -
リモート仮想IP: -
認証データ:NODE-A
暗号:なし
[例3]において、仮想インタフェース名は、制御部32が当該VPNクライアントに割り当てる名称である。接続先VPNサーバは、ノード管理サーバ40から取得した中継サーバIP“211.xxx.yyy.1”及びポート番号“10001”を表す。ローカル仮想IP及びリモート仮想IPは、それぞれ、自己(VPNクライアント)の仮想的なアドレス及びVPN接続の相手のVPNサーバ(ここでは、中継サーバ50で起動されるVPNサーバ)の仮想的なアドレスを表す。ローカル仮想IP及びリモート仮想IPの値は、VPNクライアントがVPNサーバに対してVPN接続開始の要求を行ったときにVPNサーバから取得される。よって、VPNクライアント起動手段324によりVPNクライアントが起動されたときには、未だローカル仮想IP及びリモート仮想IPの値は空である。認証データは、VPNサーバにVPN接続するときにVPNサーバに渡す自己の認証情報であり、自装置のノードID“NODE-A”に設定される。暗号の項目の値は、ノード管理サーバ40から取得した接続種別に従って設定される。本例では、接続種別として「非暗号」が指示されているため、暗号の項目は「なし」に設定されている。
以上、ノード管理サーバ40からの接続方式の指示に従ってVPNクライアント起動手段324が起動するVPNクライアントの例を説明した。
SRCノードとして接続する接続方式をノード管理サーバ40から指示された場合、さらに、制御部32のVPNサーバ起動手段326は、ノード管理サーバ40に対して行った接続要求の相手先のVPNノードBからのVPN接続を待ち受けるVPNサーバを起動する。指示された接続方式がSRCノードとして接続する接続方式であるか否かは、接続種別として「非暗号化」を指示されたか否かによって判定すればよい。本実施形態の例において、ノード管理サーバ40の接続方式指示手段424は、SRCノードに対しては「非暗号化」を、DSTノードに対しては「暗号化」を接続種別として指示するからである。
VPNサーバの起動は、上述と同様に「vtun」ソフトウエアを利用してよい。次の[例4]に、VPNサーバ起動手段326が「vtun」ソフトウエアを利用する場合のVPNサーバの設定データの例を示す。
[例4]
仮想インタフェース名:tunN
待受ポート:10001
ローカル仮想IP:10.255.0.1
リモート仮想IP:10.255.0.2
認証データ:NODE-B
暗号:あり
[例4]に示す各項目の意味は、上述の中継サーバ50で起動されるVPNサーバに関して[例2]で説明したのと同様である。仮想インタフェース名は、制御部32が自動的に割り当てる。待受ポートは、接続方式の指示においてノード管理サーバ40から取得したポート番号“10001”に設定する。本実施形態の例では、VPNノードのVPNサーバ起動手段326が起動するVPNサーバは、ローカル仮想IP及びリモート仮想IPについて、それぞれ、当該VPNノードにおいて他に使用されていないローカルIPアドレスを固定値として割り当てる。[例2]では、それぞれ、“10.255.0.1”及び“10.255.0.2”に設定される。また、認証データは、接続の相手先のVPNノードBのノードID“NODE-B”に設定する。さらに、本例では、VPNサーバ起動手段326が起動するVPNサーバの設定データにおける暗号の項目は、「あり」で固定される。
以上、VPNサーバ起動手段326が起動するVPNサーバの例を説明した。
図8のシーケンスの例の説明に戻り、VPNノードAは、VPNクライアント起動手段324が起動したVPNクライアントにより、中継サーバ50に対してVPN接続する(ステップS24)。VPNノードAで起動されたVPNクライアント([例3])は、中継サーバ50で起動されたVPNサーバ(図8のステップS20、[例2])に対して、VPN接続開始の要求を行う。この要求は、認証データ“NODE-A”(VPNノードAのノードID)を含む。この要求を含むデータパケットは、VPNノードAから送信されるものであるため、ファイアウォール10を通過し、インターネット20を介して中継サーバ50の通信部で受信される。中継サーバ50において、VPNサーバは、受信したVPN接続開始の要求に応じて、この要求に含まれる認証データ“NODE-A”と自己の設定データ中の認証データ“NODE-A”([例2]参照)との照合によりVPNノードAの認証を行う。そして、当該VPNクライアントとの間でVPN接続を形成する処理を行う。このとき、中継サーバ50のVPNサーバがVPNノードAのVPNクライアントに対して送信する情報を含むデータパケットは、VPNノードAが行ったVPN接続開始の要求に対する応答であることから、ファイアウォール10を通過してVPNノードAの通信部36で受信される。また、ここで、VPNノードAのVPNクライアントは、ローカル仮想IP及びリモート仮想IPの値([例3]では空)を中継サーバ50のVPNサーバから取得する。VPNクライアントにおいて、ローカル仮想IP及びリモート仮想IPは、それぞれ、[例2]に示すVPNサーバのリモート仮想IP“172.0.0.2”及びローカル仮想IP“172.0.0.1”に設定される。
以上、ステップS24までの処理により、VPNノードAと中継サーバ50との間でVPN接続が形成される。図9は、図8のステップS14〜S24の処理に関し、通信システムにおける通信の様子の例を示す。図9中の破線矢印は、それぞれ、図8のステップS14,S18,S22,S24における通信データパケットの流れを表す。図8及び図9を参照し、VPNノードAからノード管理サーバ40への接続要求(ステップS14)に対するノード管理サーバ40の応答(ステップS22)に従って、VPNノードAでは、VPNクライアントCa及びVPNサーバSaが起動される。また、ノード管理サーバ40からのVPN待受指示(ステップS18)に従って、中継サーバ50では、VPNサーバSrが起動される。VPNクライアントCaは、中継サーバ50のグローバルIPアドレス“211.xxx.yyy.1”及び中継サーバ50におけるVPNサーバSrの待受ポート“10001”を接続先サーバとして、VPN接続開始の要求を行う(ステップS24)。これに応じて、中継サーバ50のVPNサーバSrとVPNノードAのVPNクライアントCaとの間でVPN接続が形成される。言い換えると、中継サーバ50とVPNノードAとの間に、ファイアウォール10を通過するVPNトンネルT1が形成される。
VPNトンネルT1が形成されると、中継サーバ50とVPNノードAとの間で、VPNトンネルT1を通じてデータパケットの送受信が行われる。例えば、VPNノードAから中継サーバ50に対して送信されるデータパケット(送信元としてVPNクライアントCaの仮想IP“172.0.0.2”を含む)は、VPNクライアントCaにおいて、接続先サーバ(中継サーバIP:待受ポート“211.xxx.yyy.1:10001”)を宛先としVPNノードAのグローバルIPアドレスを送信元として含むヘッダ情報を付加され(カプセル化され)て、中継サーバ50に対して送信される。このデータパケットを受信した中継サーバ50では、宛先のポート番号がVPNサーバSrの待受ポート“10001”であることから、VPNサーバSrで受信データパケットが処理される。VPNサーバSrは、受信したデータパケットから、VPNクライアントCrが付加したヘッダ情報を取り除く(カプセル解除)。逆に、中継サーバ50からVPNノードAに対して送信されるデータパケットについては、VPNサーバSrでカプセル化が行われて(つまり、VPNノードAのグローバルIPアドレスを宛先とするヘッダ情報が付加されて)、VPNノードA宛に送り出され、VPNクライアントCaにおいてカプセル解除が行われる。
再び図8を参照し、ステップS24の後、VPNノードBからノード管理サーバ40に対し、VPNノードAを相手先として特定する接続要求が行われる(ステップS26)。ステップS26において、VPNノードBの制御部32及び通信部36などにおける処理の詳細は、VPNノードAからの接続要求(ステップS14)に関して上述した処理と同様である。
VPNノードBからの接続要求を受けたノード管理サーバ40は、制御部42の接続要求処理手段422において、要求元のVPNノードBの認証処理を行う(ステップS28)。この認証処理の詳細は、ステップS16の認証処理に関して上述した処理と同様である。
認証処理(ステップS28)が成功すると、接続要求処理手段422は、記憶部44中のセッション管理テーブルを参照し、要求元のノードID“NODE-B”をDSTノードIDとし、相手先のノードID“NODE-A”をSRCノードIDとして含むレコードを検索する。本例では、図3の例の表のセッションID“1”のレコードが検索結果として得られる。そこで、接続要求処理手段422は、検索結果のレコードの「状態」の項目の値を「待ち」から「確定」に書き換える。さらに、接続要求処理手段422は、接続要求の要求元であるVPNノードBがセッション管理テーブルにおいてDSTノードであることを接続方式指示手段424に通知する。また、要求元がDSTノードであることから、その旨をNAT指示手段428に通知する。
NAT指示手段428は、セッション管理テーブルの対応するレコード(セッションID“1”)における中継サーバIPの中継サーバ50に対し、バス48及び通信部46を介して、DSTノードからの受信データパケットの宛先の変換を表すNAT指示を出す(ステップS30)。本例では、NAT指示は、セッション管理テーブルの対応するレコード中のセッションID“1”、DST用待受ポート“10002”、SRCノード仮想IP“172.0.0.2”、及びSRC用待受ポート“10001”の各値を含み、DST用待受ポートで受信したデータパケットの宛先を、SRCノード仮想IPとSRC用待受ポートとの組に変換するNAT処理を行うことを指示する。
NAT指示を受けた中継サーバ50は、NAT処理のための設定を行う(ステップS32)。中継サーバ50の制御部52において、通信部56及びバス58を介してノード管理サーバ40から取得されるNAT指示に従って、NAT処理手段522は、記憶部54中のNAT処理用テーブルにNATルールを登録する。図7の例のNAT処理用テーブルに示すNATルールは、ステップS32で登録されるNATルールの例である。
以上、中継サーバ50におけるNAT設定処理(ステップS32)の例を説明した。
ノード管理サーバ40の制御部42において、さらに、接続方式指示手段424は、VPNノードBに対し、ステップS26の接続要求に対する応答として、中継サーバ50に接続する接続方式を指示する(ステップS34)。ここで、接続方式指示手段424は、VPNノードBがセッション管理テーブルにおいてDSTノードであることから、DSTノードとして中継サーバ50に接続する接続方式を指示する。具体的には、中継サーバ50に接続するポート番号として、対応するセッション管理テーブルのレコードのDST用待受ポート“10002”を指定する。また、接続種別として、中継サーバ50との間の通信データの暗号化を行うことを表す「暗号」を指示する。さらに、対応する中継サーバIP“211.xxx.yyy.1”も送信する。
接続方式の指示を受けたVPNノードBの制御部32では、この指示に従って、VPNクライアント起動手段324によりVPNクライアントが起動される。本例では、接続方式の指示において指定されたポート番号(ここでは、DST用待受ポート“10002”)及び指定された中継サーバIP“211.xxx.yyy.1”を接続先のサーバとして、暗号化を行ってVPN接続するVPNクライアントが起動される。以下の[例5]に、上述の「vtun」ソフトウエアを利用してVPNクライアントを起動する場合の設定データの例を示す。
[例5]
仮想インタフェース名:tunN
接続先VPNサーバ:211.xxx.yyy.1:10002
ローカル仮想IP:10.255.0.2
リモート仮想IP:10.255.0.1
認証データ:NODE-B
暗号:あり
[例5]の設定データにおいて、各項目の意味は、VPNノードAで起動されるVPNクライアントに関して[例3]を参照して説明したとおりである。[例5]の接続先VPNサーバの値は、中継サーバIP“211.xxx.yyy.1”は[例3]と同様であるが、ポート番号“10002”が[例3]の“10001”と異なる。ノード管理サーバ40からの応答(ステップS34)において、DST用待受ポート“10002”を指定されるためである。[例5]では、ローカル仮想IP及びリモート仮想IPは、それぞれ、“10.255.0.2”及び“10.255.0.1”に固定して設定される。ここでのローカル仮想IP及びリモート仮想IPは、それぞれ、SRCノードとして中継サーバ50に接続する場合にVPNサーバ起動手段326が起動するVPNサーバにおけるリモート仮想IP及びローカル仮想IPの値([例4]参照)に対応させておく。また、認証データとしては、自装置のノードID“NODE-B”を設定する。暗号の項目の値は、ノード管理サーバ40から指示された接続種別「暗号」に従って、「あり」に設定する。
以上、VPNノードBで起動されるVPNクライアントの例を説明した。VPNノードBでは、DSTノードとして接続することをノード管理サーバ40から指示されているため、制御部32のVPNサーバ起動手段326はVPNサーバを起動しない。なお、DSTノードとして接続することをノード管理サーバ40から指示されていることは、接続種別が「暗号」であることから判定すればよい。
VPNノードBで起動されたVPNクライアントは、VPNノードAのVPNサーバに対しVPN接続する(ステップS36)。[例5]に示すVPNクライアントは、接続先VPNサーバとして設定された宛先“211.xxx.yyy.1:10002”(中継サーバIP:DST用待受ポート)に対して、VPN接続開始の要求を行う。この要求は、認証データ“NODE-B”を含む。この要求を含むデータパケットは、VPNノードBから送信されるものであるため、ファイアウォール10を通過し、インターネット20を介して、宛先の中継サーバ50の通信部で受信される。中継サーバ50において、受信したデータパケット中の宛先のポート番号“10002”と、NAT処理用テーブルにステップS32で登録されたNATルール中のDST用待受ポート“10002”と、が一致することから、NAT処理手段522により、対応するNATルールに従って宛先アドレスの変換が行われる。本例では、VPNノードBからのデータパケットの宛先を、“211.xxx.yyy.1:10002”から、リダイレクト先IP:リダイレクト先ポート“172.0.0.2:10001”に変換する。変換後の宛先は、中継サーバ50中のVPNサーバSrにおけるリモート仮想IP(VPNノードAのVPNクライアントCaの仮想IP)である。したがって、NAT処理手段522がNAT処理を行った後のデータパケットは、VPNサーバSrにおいてカプセル化されてVPNトンネルT1を通ることで、VPNノードAとインターネット20との間に設けられるファイアウォール10を通過し、VPNノードAへ転送される。
VPNノードAでは、VPNノードBのVPNクライアントからのVPN接続開始の要求を含むデータパケットを受けて、これを待ち受けていたVPNサーバSaにより、VPNノードBのVPNクライアントとの間でVPN接続を形成する処理が行われる。
図10に、図9に例示する状態の後、図8のステップS26〜S36が行われたときの通信システムにおける通信の様子の例を示す。図10中の破線矢印は、それぞれ、図8のステップS24,S26,S30,S34,S36における通信データパケットの流れを表す。図8及び図10を参照し、VPNノードBからノード管理サーバ40への接続要求(ステップS26)に対するノード管理サーバ40の応答(ステップS34)に従って、VPNノードBでは、VPNクライアントCbが起動される。また、ノード管理サーバ40からのNAT指示(ステップS30)に従って、中継サーバ50では、NAT処理(“211.xxx.yyy.1:10001”→“172.0.0.2:10001”)の設定が行われる。
上述のように、VPNノードBのVPNクライアントCbからのVPN接続開始の要求を含むデータパケット(宛先はクライアントCbの設定データ中の接続先VPNサーバ“211.xxx.yyy.1:10002”、送信元はVPNノードBのグローバルIPアドレス)は、まず、中継サーバ50においてNAT処理され、VPNノードAのVPNクライアントCaの仮想IP“172.0.0.1”及びポート番号“10001”を宛先とするデータパケットになる。そして、中継サーバ50のVPNサーバSaでカプセル化され、VPNトンネルT1を通ってVPNノードAで受信され、VPNクライアントCaでカプセル解除される。ここでVPNノードAが受信するデータパケットの宛先のポート番号“10001”は、VPNノードAのVPNサーバSaの待受ポート“10001”と一致する。よって、このデータパケットは、VPNサーバSaにおいて、VPN接続の相手のVPNクライアントからのデータパケットとして処理される。このデータパケットは、VPNノードBのVPNクライアントCbからのVPN接続の開始の要求を含むので、VPNサーバSaは、要求中の認証データ“NODE-B”と自己の設定データ中の認証データ“NODE-B”([例4]参照)とを照合して認証処理を行う。その上で、VPNサーバSaは、VPNクライアントCbとの間でVPN接続を形成する処理を行う。
このとき、VPNサーバSaがVPNクライアントCbに対して送信するデータパケットは、VPNノードBから受信したデータパケットに対する返信である。よって、受信したデータパケット中の宛先“172.0.0.1:10001”及び送信元(VPNノードBのグローバルIPアドレス)が、それぞれ、返信として送信されるデータパケットの送信元及び宛先として設定される。すると、送信データパケットの送信元はVPNノードAのVPNクライアントCaの仮想IPであることから、VPNクライアントCaで送信データパケットのカプセル化が行われてVPNトンネルT1を通って中継サーバ50で受信され、VPNサーバSrでカプセル解除される。カプセル解除されたデータパケットの送信元は“172.0.0.1:10001”であるため、NATルールに従ってNAT処理手段522が送信元を“211.xxx.yyy.1:10002”に変換し、当該データパケットはバス58及び通信部56を介してインターネット20に送り出される。このデータパケットは、送信元が“211.xxx.yyy.1:10002”であるため、VPNノードBが(ステップS36で)送信したデータパケットの応答としてインターネット20とVPNノードBとの間のファイアウォール10を通過し、VPNノードBの通信部36で受信され、VPNクライアントCbに届く。
以上のように、VPNノードBのVPNクライアントCbからのVPN接続開始の要求に応じて、VPNノードAのVPNサーバSaとVPNクライアントCbとの間でVPN接続が形成される。つまり、VPNノードBとインターネット20との間のファイアウォール10を通過するVPNトンネルT2が形成される。また、VPNトンネルT2は、中継サーバ50におけるNAT処理により、中継サーバ50のVPNサーバSrとVPNノードAのVPNクライアントCaとの間で形成されたVPNトンネルT1を通ることになる。
VPNトンネルT2が形成されると、VPNノードAとVPNノードBとの間で、VPNトンネルT2を通じてデータパケットの送受信が行われる。なお、VPNトンネルT2を形成するVPNサーバSa及びVPNクライアントCbの間の通信では、通信データの暗号化が行われる。例えば、VPNクライアントCb及びVPNサーバSaのそれぞれは、送信するデータパケットの通信データ部分(宛先、送信元などを含むヘッダ情報の他の部分)を暗号化した上で、カプセル化したデータパケットを送り出す。また、このように暗号化された通信データ部分を含むデータパケットを受信すると、VPNクライアントCb及びVPNサーバSaのそれぞれは、受信したデータパケットのカプセル解除と共に通信データ部分の復号処理を行って平文の通信データを取得する。
以上のように、本実施形態の例では、中継サーバ50を経由してVPNノードAとVPNノードBとの間を接続するVPNトンネルT2の両端(VPNクライアントCb,VPNサーバSa)において暗号化/復号処理が行われる。したがって、VPNノードAと中継サーバ50との間のVPNトンネルT1を形成するVPNクライアントCa及びVPNサーバSrにおいて暗号化処理を行わなくても、VPNノードAとVPNノードBとの間で送受信される通信データは、VPNトンネルT1を通るときにはすでに暗号化されていることになる。
以上で説明した実施形態の例では、ノード管理サーバ40は、SRCノード(VPNノードA)に対しては中継サーバ50への接続種別として「非暗号」を指示し、DSTノード(VPNノードB)に対しては中継サーバ50への接続種別として「暗号」を指示する。例えば、SRCノードとDSTノードとの間の通信データの暗号化が必要ない場合、いずれのVPNノードに対しても「非暗号」を指示してもよい。この例の場合、例えば、ノード管理サーバ40において、各VPNノードからの接続要求に対し、中継サーバIP及び接続先ポート番号と共に、当該VPNノードがSRCノードであるかDSTノードであるかを示す情報を応答として返せばよい。この情報によりVPNノードにおいてSRCノードとして接続するかDSTノードとして接続するかを判定し、SRCノードの場合はVPNクライアント及びVPNサーバを、DSTノードの場合はVPNクライアントのみを起動することで、上述の例と同様のVPNトンネルT1,T2が形成される。ただし、この例では、SRCノードで起動されるVPNサーバ及びDSTノードで起動されるVPNクライアントのいずれも通信データの暗号化を行わない。
なお、以上の説明では、利用可能な中継サーバ50が複数存在し、各VPNノード対の通信を中継する中継サーバ50をノード管理サーバ40が選択して各VPNノード及び選択された中継サーバ50に通知するが、中継サーバ50が1つだけであっても本実施形態の例の通信システムは上記で説明したのと同様に機能する。
また、以上の実施形態の例において、各VPNノードは、ノード管理サーバ40に対し、自ノードをDSTノードとする「待ち」状態のセッションが存在するか否かを問合わせてもよい。ノード管理サーバ40からその問合せに対する応答を受けた上で、該当するセッションのSRCノードを接続の相手先として特定する接続要求をノード管理サーバ40に対して行ってもよい。
10 ファイアウォール、20 インターネット、30 情報処理装置、32,42,52 制御部、34,44,54 記憶部、36,46,56 通信部、38,48,58 バス、40 ノード管理サーバ、50 中継サーバ、320 ノード登録要求手段、322 接続要求手段、324 VPNクライアント起動手段、326,520 VPNサーバ起動手段、420 ノード登録手段、422 接続要求処理手段、424 接続方式指示手段、426 待受指示手段、428 NAT指示手段、522 NAT処理手段。