【解決手段】通信制御システム(10)は、ユーザが操作するユーザ端末(20)と、IPアドレスが重複する組み合わせを含む複数の対象システム(30)と、の通信を仲介する。複数のルータ(120)のそれぞれは、何れか一つの対象システム(30)と通信し、各対象システム(30)とは異なるネットワーク内に、対象システム(30)ごとに用意されている。転送手段(113)は、IPアドレスが重複する複数の対象システム(30)の何れかと通信するユーザ端末(20)から受信したパケットを、当該複数の対象システム(30)のうちユーザ端末(20)の通信先の対象システム(30)と通信するルータに転送する。転送手段(113)が転送したパケットを受信したルータ(120)は、そのパケットを、そのルータ(120)の通信先の対象システム(30)に転送する。
【発明を実施するための形態】
【0014】
[1.実施形態1]
以下、本発明の実施形態の例について図面に基づき詳細に説明する。本実施形態では、本発明に係る通信制御システムを、例えば、クラウドコンピューティングを用いた情報処理システムに適用した場合について説明する。
【0015】
[1−1.情報処理システムのハードウェア構成]
図1は、情報処理システムの全体構成の一例を示す図である。
図1に示すように、情報処理システム1は、通信制御システム10、複数のユーザ端末20、及び複数の対象システム30(以降、必要に応じて、対象システム30A及び30Bと記載して区別する。)を含む。これらは、ネットワーク(例えば、VPN:Virtual Private Network)を介してデータ送受信可能に接続されている。ユーザ端末20は、通信制御システム10を経由して対象システム30にアクセスすることになり、対象システム30と直接的にアクセスすることができないようになっている。
【0016】
通信制御システム10は、ユーザ端末20と対象システム30との通信を仲介する。通信制御システム10は、通信制御サーバ11を含む。通信制御サーバ11は、サーバコンピュータであり、例えば、所与のプロトコル(例えば、SSH:Secure ShellやRDP:Remote Desktop Protocol)のもとで各種情報を送受信する。なお、ここでは、説明の簡略化のため、通信制御サーバ11を1台として説明し、その通信制御サーバ11内で、ヴァーチャルマシンやソフトウェアルータが実現される場合を説明するが、通信制御サーバ11は複数台あってもよい。
【0017】
図1に示すように、通信制御サーバ11は、制御部12、記憶部13、及び通信部14を含む。制御部12は、例えば、一又は複数のマイクロプロセッサを含む。制御部12は、記憶部13に記憶されたオペレーティングシステムやプログラムに従って各種処理を実行する。記憶部13は、主記憶部及び補助記憶部を含む。例えば、主記憶部はRAMであり、補助記憶部は、ハードディスク又はソリッドステートドライブ等である。通信部14は、ネットワークカードを含む。通信部14は、ネットワークを介してデータ通信を行うためのものである。
【0018】
なお、通信制御サーバ11は、コンピュータ読み取り可能な情報記憶媒体(例えば、メモリカード)に記憶されたプログラムやデータを読み出すための構成要素(例えば、メモリカードスロット)を含むようにしてもよい。また、本実施形態において、記憶部13に記憶されるものとして説明するプログラムやデータは、通信部14を介して外部コンピュータから記憶部13に供給されるようにしてもよい。
【0019】
ユーザ端末20は、ユーザが操作するコンピュータであり、例えば、パーソナルコンピュータやタブレット型端末等である。なお、本実施形態では、対象システム30に実行させるコマンドを入力する作業者(例えば、メンテナンスを行う特権ユーザやシステムエンジニア)が、ユーザに相当する。
図1に示すように、ユーザ端末20は、制御部21、記憶部22、通信部23、操作部24、及び表示部25を含む。なお、制御部21、記憶部22、及び通信部23のハードウェア構成は、制御部12、記憶部13、及び通信部14と同様であるので説明を省略する。
【0020】
操作部24は、公知の入力デバイスであり、例えば、マウスやキーボード、タッチパネル等である。操作部24は、ユーザによる操作内容を制御部21に伝達する。表示部25は、例えば、液晶表示部又は有機EL表示部等である。表示部25は、制御部21の指示に従って画面を表示する。
【0021】
対象システム30は、ユーザの通信先のシステムである。例えば、各対象システム30は、複数のユーザによるアクセスが可能であり、各ユーザが入力したコマンドを実行する。また、ここでは、各対象システム30の管理主体(例えば、会社)が異なっており、それぞれで独自にIPアドレス(プライベートアドレス)の管理が行われている。このため、IPアドレスが他の対象システム30と重複する対象システム30の組み合わせが存在しているものとする。例えば、会社Aが、対象システム30Aの各装置のIPアドレスを付与し、会社Aとは異なる会社Bが、対象システム30Bの各装置のIPアドレスを付与している。
【0022】
各対象システム30は、対象サーバ31を含む。対象サーバ31は、サーバコンピュータである。なお、ここでは、説明の簡略化のため、各対象システム30内の対象サーバ31を1台とし、その対象サーバ31内で、ヴァーチャルマシンやソフトウェアルータが実現される場合を説明するが、対象サーバ30は複数台あってもよい。更に、対象システム30には、ルータなどの通信機器やデータベースサーバなどが含まれていてもよい。
【0023】
図1に示すように、対象サーバ31は、制御部32、記憶部33、及び通信部34を含む。制御部32、記憶部33、及び通信部34のハードウェア構成は、制御部12、記憶部13、及び通信部14と略同様であるので説明を省略する。例えば、情報処理システム1の利用者が利用するアプリケーションや各種データは、対象サーバ31の記憶部33で管理される。各利用者は、対象サーバ31にアクセスして、これらアプリケーションや各種データを利用する。
【0024】
[1−2.情報処理システムにおける処理の概要]
情報処理システム1では、通信制御システム10が、ユーザ端末20と対象システム30との通信を仲介することによって、例えば、ユーザの操作ログを記録するサービスを提供している。以降、ある会社Zが、新たにサービスの利用登録を行う手順に沿って、情報処理システム1が実行する処理の概要を説明する。
【0025】
まず、会社Zは、その会社Zに所属するユーザに関する各種情報(例えば、ユーザの氏名や所属、通信制御システム10へのログインアカウント等)を、通信制御システム10に登録する。そして、通信制御システム10は、各ユーザが通信制御システム10にログインするための認証情報を発行する。認証情報は、プロトコルで規定された認証時に使用する情報であればよく、例えば、認証キー(証明書)やパスワードなどである。
【0026】
そして、会社Zは、自身が管理する対象システム30(即ち、情報処理システム1に新たに追加する対象システム30)に関する情報を、通信制御システム10に登録する。例えば、その対象システム30内の各サーバ名、そのIPアドレス、使用するプロトコルの種別、そのサーバへのログインアカウント、そのサーバへの認証情報などを登録する。認証情報は、上記と同様に、プロトコルで規定された情報(認証キーやパスワード)であればよい。
【0027】
会社Zは、ユーザに関する情報と、対象システム30に関する情報と、を登録すると、これらの紐付け作業を行う。例えば、ユーザごとにアクセス可能なサーバを異ならせる場合には、会社Zは、自身の対象システム30内のサーバのうち、各ユーザがアクセス可能なサーバを指定して、通信制御システム10に登録する。
【0028】
その後、会社Zは、通信制御システム10を介して対象システム30にアクセスするためのネットワーク設定を行う。ここでは、通信制御システム10内のネットワーク設定と、対象システム30内のネットワーク設定と、が必要になる。詳細は後述するが、本実施形態では、ソフトウェアルータが用いられるので、通信制御システム10及び対象システム30のそれぞれのソフトウェアルータの設定作業が行われる。例えば、通信制御システム10内のソフトウェアルータと、新たに追加する対象システム30と、の紐付け作業が行われる。なお、通信制御システム10のソフトウェアルータは、予め用意されたものを使用してもよいし、利用登録時に新たに作成するようにしてもよい。
【0029】
上記の利用登録が完了すると、会社Zは、サービスを利用できるようになる。ここでは、ユーザが対象システム30にアクセスする場合、そのユーザは、いったん通信制御システム10にログインし、その後、通信制御システム10を介して対象システム30にログインをする。これは、SSHなどの暗号化通信が行われる場合には、ユーザが入力したコマンドやその実行結果も暗号化されているので、プロトコルを通信制御システム10でいったん終了して復号化を行うことで、操作ログを確実に取得するためである。
【0030】
本実施形態では、先述のように、IPアドレスが重複する対象システム30の組み合わせが存在するので、通信制御システム10では、対象システム30ごとに専用のソフトウェアルータを用意している。そして、通信制御サーバ11は、各対象システム30内のヴァーチャルマシンごとに、重複しないように管理用IPアドレスを割り当てている。
【0031】
このため、各対象システム30内のヴァーチャルマシンの本当のIPアドレスが重複していたとしても、管理用IPアドレスによって、これらのヴァーチャルマシンを識別できるようになっている。即ち、通信制御システム10は、ユーザ端末20から受け取ったパケットの送信先が示す管理用IPアドレスを参照することで、どの対象システム30のどのヴァーチャルマシン宛てなのかを特定することができる。
【0032】
そして、通信制御システム10は、その特定したヴァーチャルマシンを含む対象システム30の通信を担当するソフトウェアルータにパケットを振り分けることで、対象システム30どうしでIPアドレスが重複していても通信を仲介できる構成になっている。以降、当該技術の詳細について説明する。
【0033】
[1−3.情報処理システムにおいて実現される機能]
図2は、情報処理システム1で実現される機能を示す機能ブロック図である。ここでは、通信制御システム10及び対象システム30で実現される機能について説明する。なお、
図2において、ゲートウェイ110、ソフトウェアルータ120、ヴァーチャルマシン310、及びソフトウェアルータ320の名称の下に記載した数値は、それぞれのIPアドレスである。
【0034】
[対象システムで実現される機能]
各対象システム30では、ヴァーチャルマシン310及びソフトウェアルータ320が実現される。ヴァーチャルマシン310及びソフトウェアルータ320は、一つであってもよいし、複数であってもよい。これらは、制御部32、記憶部33、及び通信部34を主として実現される。
【0035】
以降、対象システム30ごとにヴァーチャルマシン310を区別する必要があるときは、ヴァーチャルマシン310A及び310Bと記載する。更に、対象システム30内でヴァーチャルマシン310を区別する必要があるときは、ヴャーチャルマシン310A1〜310A3のように記載する。同様に、対象システム30ごとにソフトウェアルータ320や後述のデータ記憶部321を区別する必要があるときは、ソフトウェアルータ320A及び320Bやデータ記憶部321A及び321Bと記載する。
【0036】
ヴァーチャルマシン310は、仮想的なサーバコンピュータである。別の言い方をすれば、ヴァーチャルマシン310は、ユーザの通信先となる仮想機器であり、ユーザが入力したコマンドを実行する。各ヴァーチャルマシン310には、その対象システム30内で有効なIPアドレス(プライベートアドレス)が割り当てられている。例えば、各ヴァーチャルマシン310のIPアドレスの割り当ては、その対象システム30内の管理者により行われる。このため、
図2に示す例では、ヴァーチャルマシン310A1〜310A3の少なくとも一つと、ヴァーチャルマシン310B1〜310B3の少なくとも一つと、はIPアドレスが重複している。
【0037】
ソフトウェアルータ320は、仮想的なルータである。ソフトウェアルータ320は、各ヴァーチャルマシン310と通信制御システム10との通信を仲介する。また、ソフトウェアルータ320は、データ記憶部321を含み、そのソフトウェアルータ320の設定情報(例えば、ルーティングテーブル)を記憶する。
【0038】
例えば、ソフトウェアルータ320の設定は、対象システム30の管理者により行われる。サービスの利用登録時に、ソフトウェアルータ320には、ゲートウェイ110向けのスタティックルートの設定が追加される。例えば、ゲートウェイ110のIPアドレスが送信先の場合のネクストホップが、そのソフトウェアルータ320のIPアドレスに設定される。
図2に示すように、ソフトウェアルータ320AのIPアドレスは、ソフトウェアルータ320BのIPアドレスと重複してもよい。
【0039】
なお、ヴァーチャルマシン310やソフトウェアルータ320を実現するための機器仮想化技術自体は、公知の種々の技術を適用可能である。後述のゲートウェイ110やソフトウェアルータ120についても同様である。更に、実施形態1では、対象システム30側のIPアドレス(ヴァーチャルマシン310やソフトウェアルータ320のIPアドレス)は、通信制御システム10側のIPアドレス(ゲートウェイ110やソフトウェアルータ120のIPアドレス)と重複しないようになっている。
【0040】
[通信制御システムで実現される機能]
通信制御システム10では、ゲートウェイ110及び複数のソフトウェアルータ120が実現される。なお、ゲートウェイ110は、複数であってもよい。これらは、制御部12、記憶部13、及び通信部14を主として実現される。以降、必要に応じて、ソフトウェアルータ120A及び120Bやデータ記憶部121A及び121Bと記載して区別する。
【0041】
ゲートウェイ110は、仮想的なサーバコンピュータである。ゲートウェイ110は、ユーザ端末20から受信したパケットを、何れかのソフトウェアルータ120に転送したり、各ソフトウェアルータ120を介して各対象システム30から受信したパケットをユーザ端末20に転送したりする。また、ゲートウェイ110は、ユーザの操作ログを取得して記録する。
【0042】
本実施形態では、ゲートウェイ110は、データ記憶部111、取得部112、及び転送部113を含む。
【0043】
データ記憶部111は、各ソフトウェアルータ120の通信先を識別するデータを記憶する。例えば、データ記憶部111は、各対象システム30に対応するIPアドレスであって、他の対象システム30とは重複しない管理用IPアドレスと、その対象システム30と通信するソフトウェアルータ120と、の関連付けを示すスタティックルートを記憶する。取得部112は、データ記憶部111の記憶内容(ここでは、スタティックルート)を取得する。
【0044】
図3は、スタティックルートの格納例を示す図である。
図3に示すように、スタティックルートには、ゲートウェイ110が管理する管理用IPアドレスと、ソフトウェアルータ120を識別する情報(例えば、そのIPアドレス)と、が関連付けられている。
【0045】
管理用IPアドレスは、各対象システム30内のヴァーチャルマシン310を一意に識別するためのプライベートアドレスである。管理用IPアドレスは、対象システム30どうしで重複しないようになっている。別の言い方をすれば、管理用IPアドレスと、各対象システム30内のヴァーチャルマシン310と、は一対一の関係にある。
【0046】
管理用IPアドレスに関連付けられているソフトウェアルータ120は、その管理用IPアドレスに対応するヴァーチャルマシン310の対象システム30と通信をするソフトウェアルータ120である。別の言い方をすれば、各ソフトウェアルータ120には、その通信先の対象システム30内の各ヴァーチャルマシン310に対応する管理用IPアドレスが関連付けられていることになる。
【0047】
図3に示すデータ格納例では、ヴァーチャルマシン310A1〜310A3の管理用IPアドレスには、対象システム30Aと通信するソフトウェアルータ120Aが関連付けられている。一方、ヴァーチャルマシン310B1〜310B3の管理用IPアドレスには、対象システム30Bと通信するソフトウェアルータ120Bが関連付けられている。
【0048】
例えば、スタティックルートは、ヴァーチャルマシン310が新たに追加されると更新される。新たにヴァーチャルマシン310が追加されると、そのヴァーチャルマシンに対応する管理用IPアドレスが発行され、その対象システム30と通信するソフトウェアルータ120に関連付けられる。新たに発行される管理用IPアドレスは、既に発行された管理用IPアドレスとは重複しないようになっている。管理用IPアドレスの設定は、通信制御システム10の管理者により行われるようにしてもよいし、通信制御システム10により自動化されていてもよい。
【0049】
転送部113は、IPアドレスが重複する複数の対象システム30の何れかと通信するユーザ端末20から受信したパケットを、IPアドレスが重複する当該複数の対象システム30のうちユーザ端末20の通信先の対象システム30と通信するソフトウェアルータ120に転送する。転送部113は、ユーザ端末20の通信先の対象システム30を特定し、複数のソフトウェアルータ120のうち、当該特定した対象システム30と通信するソフトウェアルータ120に、ユーザ端末20から受信したパケットを転送する。
【0050】
ここでは、ユーザ端末20が送信するパケットの送信先は、通信先の対象システム30のヴァーチャルマシン310の本当のIPアドレスではなく、そのヴァーチャルマシン310の管理用IPアドレスとなっている。このため、転送部113は、ユーザ端末20から受信したパケットを、そのパケットの送信先が示す管理用IPアドレスに関連付けられたソフトウェアルータ120に転送することになる。転送部113は、スタティックルートを参照することで、パケットの送信先の管理用IPアドレスに対応するヴァーチャルマシン310を特定する。そして、転送部113は、そのヴァーチャルマシン310の対象システム30との通信を行うソフトウェアルータ120にパケットを転送する。
【0051】
各ソフトウェアルータ120は、仮想的なルータである。各ソフトウェアルータ120は、何れか一つの対象システム30と通信する。各ソフトウェアルータ120は、各対象システムとは異なるネットワーク内に、対象システム30ごとに用意されている。即ち、各ソフトウェアルータ120は、対象システム30外にあってネットワークアドレスが異なっている。各ソフトウェアルータ120は、ゲートウェイ110と、自分の通信先の一の対象システム30(例えば、その対象システム30内のソフトウェアルータ320)と、の通信を仲介する。なお、各ソフトウェアルータ120は、IPアドレスが重複しないようになっている。
【0052】
各ソフトウェアルータ120は、データ記憶部121を含む。データ記憶部121は、ソフトウェアルータ120の設定情報(例えば、ルーティングテーブル)を記憶する。例えば、各ソフトウェアルータ120には、そのソフトウェアルータ120がルーティングを担当する対象システム30が一つとなるように、ルーティングテーブルが定められている。このため、各ソフトウェアルータ120は、複数の対象システム30への通信を行わないようになっている。なお、ソフトウェアルータ120と対象システム30とが、一対一の関係にある場合を説明するが、これらは多対一の関係にあってもよい。
【0053】
転送部113が転送したパケットを受信したソフトウェアルータ120は、そのパケットを、そのソフトウェアルータ120の通信先の対象システム30に転送する。即ち、各ソフトウェアルータ120は、転送部113から受信したパケットを、複数の対象システム30のうち、そのソフトウェアルータ120の通信先の対象システム30に転送する。
【0054】
本実施形態では、データ記憶部121は、管理用IPアドレスと、ヴァーチャルマシン310のIPアドレスと、の関係を示すアドレス変換テーブルを記憶する。ここでは、DNAT(Destination Network Address Translation)のルールに従って、アドレス変換がおこなわれるものとする。
【0055】
図4は、データ記憶部121Aに記憶されるアドレス変換テーブルの格納例を示す図である。
図4に示すように、アドレス変換テーブルには、対象システム30A内のヴァーチャルマシン310A1〜310A3のそれぞれに対応する管理用IPアドレスと、そのヴァーチャルマシン310A1〜310A3の本当のIPアドレス(
図4では、「元のIPアドレス」と記載する。)と、が関連付けられている。
【0056】
図5は、データ記憶部121Bに記憶されるアドレス変換テーブルの格納例を示す図である。
図5に示すように、アドレス変換テーブルには、対象システム30B内のヴァーチャルマシン310B1〜310B3のそれぞれに対応する管理用IPアドレスと、そのヴァーチャルマシン310B1〜310B3の本当のIPアドレスと、が関連付けられている。
図4及び
図5に示す例では、ヴァーチャルマシン310A1と、ヴァーチャルマシン310B1と、は本当のIPアドレスが同一であるが、管理用IPアドレスが異なるようになっている。
【0057】
各ソフトウェアルータ120のルーティングテーブルやアドレス変換テーブルは、そのソフトウェアルータ120の通信先の対象システム30に、ヴァーチャルマシン310が新たに追加されると更新される。例えば、新たにヴァーチャルマシン310が追加されると、そのヴァーチャルマシン310に対応する管理用IPアドレスと、その対象システム30のIPアドレスと、の関連付けが、アドレス変換テーブルに追加されることになる。これらの設定は、通信制御システム10の管理者により行われるようにしてもよいし、通信制御システム10により自動化されていてもよい。
【0058】
次に、通信制御システム10が対象システム30にパケットを送信して、対象システム30から通信制御システム10にパケットが戻るまでに行われるアドレス変換について説明する。
【0059】
図6は、パケットが送受信される様子を示す図である。ここでは、ユーザがヴァーチャルマシン310A3にアクセスする場合を例に挙げて説明する。まず、
図6に示すように、転送部113が転送するパケットの送信元は、ゲートウェイのIPアドレス「10.200.189.32」であり、送信先は、ヴァーチャルマシン310A3の管理用IPアドレス「10.100.1.5」となる。
【0060】
転送部113が転送したパケットを受信したソフトウェアルータ120Aは、そのパケットの送信先を、その送信先に対応する対象システム30AのIPアドレスに変換して転送する。
図6に示すように、ソフトウェアルータ120Aは、パケットの送信先を、ヴァーチャルマシン310A3の本当のIPアドレス「192.168.1.4」に書き換える。例えば、ソフトウェアルータ120は、アドレス変換テーブルを参照して、受信したパケットの送信先を、その送信先に関連付けられたIPアドレスに書き換えたうえで、そのソフトウェアルータ120の通信先の対象システム30に送信することになる。
【0061】
そして、ヴァーチャルマシン310A3が送信するパケット(戻りパケット)の送信元は、ヴァーチャルマシン310A3の本当のIPアドレス「192.168.1.4」となり、送信先はゲートウェイのIPアドレス「10.200.189.32」となる。ソフトウェアルータ120Aは、そのソフトウェアルータ120Aの通信先の対象システム30Aから受信したパケットの送信元を、その対象システム30に対応する管理用IPアドレスに変換する。
図6に示すように、ソフトウェアルータ120Aは、DNATのルールに従い、パケットの送信元を、ヴァーチャルマシン310A3の管理用IPアドレス「10.100.1.5」に書き換える。例えば、ソフトウェアルータ120は、アドレス変換テーブルを参照して、受信したパケットの送信元を、その送信元に関連付けられた管理用IPアドレスに書き換えたうえで、ゲートウェイ110に転送することになる。
【0062】
上記のように、各ソフトウェアルータ120では、DNATのルールに従い、対象システム30に送信するパケットの送信先のアドレス変換を行い、対象システム30から戻ってくるパケットの送信元のアドレス変換を行う。
【0063】
なお、各ソフトウェアルータ120がパケットを転送すべきゲートウェイ110を識別する情報(例えば、ゲートウェイ110のIPアドレス)は、そのソフトウェアルータ120のルーティングテーブル等に予め記憶されているものとする。
【0064】
ゲートウェイ110の転送部113は、送信元が変更されたパケット(即ち、対象システム30からの戻りパケット)を、ユーザ端末20に転送することになる。このため、ユーザ端末20が受け取るパケットでは、通信相手のヴァーチャルマシン310の本当のIPアドレスではなく、あくまで、管理用IPアドレスに変換されたものとなっている。
【0065】
[1−4.実施形態において実行される処理]
図7及び
図8は、情報処理システム1で実行される処理を示す図である。
図7及び
図8に示す処理が実行されることにより、各機能ブロックが実現される。制御部12,21,32が、それぞれ記憶部13,22,33に記憶されたプログラムに従って動作することにより、下記の処理が実行される。
【0066】
なお、下記に説明する処理が実行されるにあたり、通信制御システム10とユーザ端末20との間で第1の通信(例えば、SSH)が確立されており、通信制御システム10と対象システム30との間で第2の通信(例えば、SSH)が確立されているものとする。例えば、ユーザは、通信制御システム10へのログインアカウントと、ユーザ端末20の記憶部22に記憶された認証キーと、を使って通信制御システム10にログインした後に、通信先の対象システム30内のヴャーチャルマシン310へのログインアカウントと、通信制御サーバ11の記憶部12に記憶された認証キーと、を使って、そのヴァーチャルマシン310にログインしているものとする。なお、ログイン時には、ユーザは、通信先のヴァーチャルマシン310の本当のIPアドレスを指定してもよいし、管理用IPアドレスを指定してもよい。
【0067】
図7に示すように、まず、ユーザ端末20において、制御部21は、コンソール画面を表示部25に表示させる(S1)。
図9は、コンソール画面の一例を示す図である。
図9に示すように、ここでは、ユーザがすでにヴァーチャルマシン310にログインしており、そのヴァーチャルマシン310に実行させるコマンドの入力が可能な状態となっている。ユーザは、ログイン先のヴァーチャルマシン310に実行させるコマンドを、操作部24を用いてコンソール画面40から入力する。
【0068】
制御部21は、ユーザによるコマンドの入力を受け付ける(S2)。制御部21は、ユーザの入力内容を暗号化して通信制御システム10に送信する(S3)。S3においては、制御部21は、ユーザが入力したコマンドやファイル名等の記号列を、記憶部22に記憶された暗号化のための鍵(公開鍵や共通鍵)を用いて暗号化する。そして、制御部21は、接続先のヴァーチャルマシン310の管理用IPアドレスを送信先に設定したパケットに、暗号化した入力内容を格納して送信する。
【0069】
通信制御システム10においては、パケットを受信すると、制御部12は、ゲートウェイ110に、それを復号化させて操作ログを記録させる(S4)。S4においては、制御部12は、記憶部13に記憶された復号化のための鍵(秘密鍵や共通鍵)を用いて、ユーザ端末20から受信したパケットを復号化する。そして、制御部12は、ユーザのログインアカウント、ユーザが入力したコマンドやファイル名等の記号列、通信先のヴァーチャルマシン310の名称やIPアドレス、及び現在の日時に関する情報を、記憶部13に操作ログとして格納する。
【0070】
なお、操作ログに格納されるヴァーチャルマシン310のIPアドレスは、本当のIPアドレスであってもよいし、管理用IPアドレスであってもよい。また、これらの両方が格納されるようにしてもよい。また、操作ログの確認時には、管理用IPアドレスが、本当のIPアドレスに変換されたうえで表示されるようにしてもよい。
【0071】
制御部12は、ゲートウェイ110に、スタティックルートを参照させてパケットを送るべきソフトウェアルータ120を特定させる(S5)。S5においては、制御部12は、受信したパケットの送信先を参照する。そして、制御部12は、その送信先の管理用IPアドレスに関連付けられたソフトウェアルータ120を特定することになる。
【0072】
制御部12は、ゲートウェイ110に、再びパケットの暗号化をさせて、S5で特定したソフトウェアルータ120に送信させる(S6)。S6においては、制御部12は、記憶部13に記憶された暗号化のための鍵(公開鍵や共通鍵)を用いてパケットを暗号化する。なお、ゲートウェイ110と各ソフトウェアルータ120との間は、仮想IP接続されているものとする。
【0073】
制御部12は、S6で送信したパケットを受信したソフトウェアルータ120に、そのパケットのアドレス変換を実行させる(S7)。S7においては、制御部12は、変換テーブルを参照して、パケットの送信先の管理用IPアドレスを、対象サーバ30のヴァーチャルマシン310のIPアドレスに変換する。
【0074】
制御部12は、ソフトウェアルータ120に、S7でアドレス変換したパケットを対象システム30に送信させる(S8)。S8においては、制御部12は、ソフトウェアルータ120の通信先の対象システム30にパケットを送信する。
【0075】
対象システム30においては、パケットを受信すると、制御部32は、ソフトウェアルータ320に転送させる(S9)。S9においては、制御部32は、パケットの送信先のヴァーチャルマシン310に対してパケットを送信する。なお、対象システム30においても、各ヴァーチャルマシン310とソフトウェアルータとの間で仮想IP接続が確立されているものとする。
【0076】
図8に移り、制御部32は、パケットを受信したヴァーチャルマシン310に、ユーザが入力したコマンドを実行させて、その実行結果を生成させる(S10)。S10においては、制御部32は、記憶部33に記憶された復号化のための鍵(秘密鍵や共通鍵)を用いて、受信したパケットを復号化する。そして、制御部32は、ユーザが入力したコマンドの実行及びその実行結果の生成を行うことになる。
【0077】
制御部32は、コマンドを実行したヴァーチャルマシン310に、S10で生成した実行結果を暗号化させ、ソフトウェアルータ320を介して通信制御システム10に送信させる(S11)。制御部32は、記憶部33に記憶された暗号化のための鍵(公開鍵や共通鍵)を用いてパケットを暗号化する。そして、制御部32は、そのパケットの送信元を、ヴァーチャルマシン310のIPアドレスに設定して、ソフトウェアルータ320を介して通信制御システム10に送信する。
【0078】
通信制御システム10においては、パケットを受信すると、制御部12は、ソフトウェアルータ120に、アドレス変換を実行させる(S12)。S12においては、制御部12は、アドレス変換テーブルを参照して、受信したパケットの送信元を、ヴァーチャルマシン310の本当のIPアドレスから、管理用IPアドレスに変換する。
【0079】
制御部12は、ソフトウェアルータ120に、S12でアドレスを変換したパケットをゲートウェイ110に転送させる(S13)。なお、ゲートウェイ110のIPアドレスは、予め記憶部13に記憶されており、ソフトウェアルータ120はそのIPアドレスを特定可能になっている。
【0080】
制御部12は、ゲートウェイ110に、受信したパケットの復号化をさせて、操作ログを記録させる(S14)。S14においては、制御部12は、記憶部13に記憶された復号化のための鍵(秘密鍵や共通鍵)を用いて、ソフトウェアルータ120から受信したパケットを復号化し、コマンドの実行結果を操作ログとして記憶部13に記録する。
【0081】
制御部12は、ゲートウェイ110に、パケットを暗号化させてユーザ端末20に送信させる(S15)。S15においては、制御部12は、記憶部13に記憶された暗号化のための鍵(公開鍵や共通鍵)を用いて、コマンドの実行結果を暗号化して送信する。
【0082】
ユーザ端末20においては、コマンドの実行結果を受信すると、制御部21は、それを復号化して、コンソール画面40に表示させ(S16)、S2の処理に戻る。S16においては、制御部21は、記憶部22に記憶された復号化のための鍵(秘密鍵や共通鍵)を用いて、コマンドの実行結果を復号化する。以降、ユーザがログアウトするまでS2〜S16の処理が繰り返される。
【0083】
以上説明した情報処理システム1によれば、対象システム30ごとにソフトウェアルータ120を用意しておき、ユーザ端末20から受信したパケットを、ゲートウェイ110に振り分けさせることで、対象システム30どうしでIPアドレスが重複していたとしても、通信を仲介することが可能になる。
【0084】
また、通信制御システム10では、ヴァーチャルマシン310どうしで重複しないように管理用IPアドレスが管理されているので、本当のIPアドレスが重複していたとしても、管理用IPアドレスによって、どのヴァーチャルマシン310宛てのパケットなのかを特定することができる。更に、ソフトウェアルータ120に、管理用IPアドレスを本当のIPアドレスに変換させることで、正確にルーティングを行うことができる。この点、IPアドレスの変換を通信制御システム10が行うので、対象システム30側(即ち、サービスを受ける顧客側)の改修をする必要がないため、ユーザの利便性が向上する。
【0085】
また例えば、プロキシを使用すれば通信の振り分けを行うことが一応は可能であるが、実施形態で説明した手法によれば、プロキシに対応していないプロトコル(例えば、RDP)であっても、ゲートウェイ110がパケットを振り分けることで通信の仲介が可能になる。即ち、ユーザが使用するプロトコルに依存せず、通信の仲介が可能になるため、ユーザの利便性が向上する。
【0086】
また、各ソフトウェアルータ120が対象システム30から受信したパケットの送信先を管理用IPアドレスに書き換えたうえでユーザ端末20に転送されるので、ユーザ端末20は、自分の通信先のヴァーチャルマシン310の管理用IPアドレスを知ることができ、その管理用IPアドレスを送信先にしてパケットを送信すれば、ヴァーチャルマシン310にパケットを送り届けることができる。
【0087】
[2.実施形態2]
次に、情報処理システム1の別実施形態について説明する。実施形態1では、対象システム30どうしのIPアドレスが重複している場合の通信制御について説明したが、実施形態2では、通信制御システム10と対象システム30の間でIPアドレスが重複する場合の通信制御について説明する。なお、ハードウェア構成は、実施形態2と同様であるため、説明を省略する。また、他の箇所についても、実施形態1と同様の部分については説明を省略する。
【0088】
実施形態2では、通信制御システム10は、少なくとも一つの対象システム30とIPアドレスが重複している。また、ソフトウェアルータ120及びソフトウェアルータ320は、ともに、DNAT及びSNAT(Source NAT)の機能を有する。
【0089】
図10は、実施形態2において実現される機能を説明するための図である。ここでは、ゲートウェイ110のIPアドレスと、ヴァーチャルマシン310A3のIPアドレスと、が重複している場合を説明する。
図10に示すように、ゲートウェイ110から送信されたパケットの送信元は、ゲートウェイ110のIPアドレス「10.200.189.32」であり、送信先は、ヴァーチャルマシン310A3の管理用IPアドレス「10.100.1.5」となる。
【0090】
ソフトウェアルータ120Aは、パケットの送信元を、ゲートウェイ110の本当のIPアドレス「10.200.189.32」から仮のIPアドレス「172.16.1.1」に変換し、送信先を、ヴァーチャルマシン310A3の管理用IPアドレス「10.100.1.5」から仮のIPアドレス「192.168.1.4」に変換する。即ち、ソフトウェアルータ120Aは、転送部113が転送したパケットの送信元を、対象システム30のソフトウェアルータ320Aによる変換後のIPアドレスとは異なるIPアドレスに変換して転送することで、ゲートウェイ110及びヴァーチャルマシン310A3は、仮のIPアドレスが重複しないようになっている。
【0091】
ソフトウェアルータ320Aは、パケットの送信先を、ヴァーチャルマシン310A3の仮のIPアドレス「192.168.1.4」から、本当のIPアドレス「10.200.189.32」に変換する。このため、パケットをヴァーチャルマシン310A3に届けることができる。
【0092】
一方、対象システム30から通信制御システム10に戻るパケットの送信元は、ヴァーチャルマシン310A3の本当のIPアドレス「10.200.189.32」が設定され、送信先は、ゲートウェイ110の仮のIPアドレス「172.16.1.1」が設定される。ソフトウェアルータ320Aは、パケットの送信元を、ヴァーチャルマシン310A3の本当のIPアドレス「10.200.189.32」から仮のIPアドレス「192.168.1.4」に変換する。
【0093】
ソフトウェアルータ320Aは、受信したパケットの送信元をヴァーチャルマシン310A3の仮のIPアドレス「192.168.1.4」から管理用IPアドレス「10.100.1.5」に変換し、送信先を、ゲートウェイ110の仮のIPアドレス「172.16.1.1」から本当のIPアドレス「10.200.189.32」に変換する。このため、ゲートウェイ110とヴァーチャルマシン310A3とでIPアドレスが重複していても、パケットをユーザ端末20まで届けることができる。
【0094】
なお、上記では、ゲートウェイ110とヴァーチャルマシン310A3とのIPアドレスが重複する場合を例に挙げて説明したが、他のヴァーチャルマシン310のIPアドレスと重複する場合も同様に、ソフトウェアルータ120及び320で2回のアドレス変換を行うことで、通信が可能になる。即ち、通信制御システム10のIPアドレスを仮のIPアドレスに変換し、当該仮のIPアドレスとは異なるように、対象システム30のIPアドレスを仮のIPアドレスに変換するようにすればよい。また、実施形態1の技術と組み合わせた場合を説明したが、対象システム30どうしのIPアドレスが重複していない場合には、管理用IPアドレスの変換は行われないようにしてもよい。
【0095】
実施形態2の通信制御システム10によれば、通信制御システム10と対象システム30の間でIPアドレスが重複したとしても、2回のアドレス変換を行うことによって通信をすることが可能になる。
【0096】
[3.変形例]
なお、本発明は、以上に説明した実施の形態に限定されるものではない。本発明の趣旨を逸脱しない範囲で、適宜変更可能である。
【0097】
例えば、転送部113が、ユーザ端末20から受信したパケットを転送すべきソフトウェアルータ120を特定する方法は、上記の例に限られない。転送部113は、受信したパケットがどの対象システム30向けなのかを、予め定められた方法に基づいて特定すればよい。
【0098】
例えば、ユーザがログインできる対象システム30が限られている場合には、転送部113は、ユーザがログイン可能な対象システム30を特定し、ユーザ端末20から受信したパケットを、その対象システム30との通信を担当するソフトウェアルータ120に転送するようにしてもよい。この場合、データ記憶部111には、各ユーザがアクセス可能な対象システム30を定義したデータが記憶されており、転送部113は、そのデータを参照することで、ユーザがアクセス可能な対象システム30を特定することになる。
【0099】
また例えば、転送部113は、ユーザ端末20のIPアドレスに基づいて、通信先の対象システム30を特定するようにしてもよい。例えば、対象システム30ごとに、その対象システム30と通信できるユーザ端末20のIPアドレスが定められている場合には、転送部113は、パケットの送信元のIPアドレスでアクセス可能な対象システム30を特定し、その対象システム30との通信を担当するソフトウェアルータ120に転送するようにしてもよい。この場合、データ記憶部111には、各ユーザ端末20のIPアドレスでアクセス可能な対象システム30を定義したデータが記憶されており、転送部113は、そのデータを参照することで、ユーザのIPアドレスがアクセス可能な対象システム30を特定することになる。
【0100】
また例えば、ゲートウェイ110及び各ソフトウェアルータ120にプライベートアドレスが割り当てられる場合を説明するが、これらには、グローバルアドレスが割り当てられていてもよい。
【0101】
また例えば、上記実施形態では、ゲートウェイ110、ソフトウェアルータ120、ヴァーチャルマシン310、及びソフトウェアルータ320を例に挙げて説明したが、これらは、仮想機器ではなく、それぞれ実在するゲートウェイサーバ、ルータ、及びサーバコンピュータであってもよい。また例えば、サーバコンピュータがユーザのコマンドを実行する場合を説明したが、ユーザのコマンドを実行するのは、例えば、対象システム30内のネットワーク機器であってもよい。
【0102】
また例えば、通信プロトコルの一例としてSSHやRDPを説明したが、他の種々のプロトコルによる通信が適用可能である。例えば、TELNET、FTP、SCP、SFTP、HTTP、又はHTTPSにより通信が行われるようにしてもよい。また例えば、上記においては、本発明に関る通信制御システムを、クラウドコンピューティングを利用した情報処理システムに適用する例を説明したが、本発明に関る通信制御サーバは、ユーザがサーバにリモートアクセスする種々のシステムに適用可能である。