(57)【要約】      （修正有）【課題】ＤＤｏＳ（Ｄｉｓｔｒｉｂｕｔｅｄ  Ｄｅｎｉａｌ  ｏｆ  Ｓｅｒｖｉｃｅ）攻撃を受けた場合でもサービスが継続できる装置、方法およびプログラムを提供する。【解決手段】クラウドコントローラ５０が、仮想Ｌ２ネットワーク２１により相互に接続されるデータセンタの境界ルータ３０から、当該境界ルータ３０配下のＶＭへの攻撃通知を受信したとき、各データセンタの境界ルータ３０に対し、攻撃対象のＶＭのＮＡＴの設定を行う。その後、ＶＭのホスト名の名前解決を行うＤＮＳサーバ４０に対し、ＮＡＴで割り当てたＶＭのグローバルＩＰアドレス群を通知する。当該ＶＭのホスト名の名前解決を行う際、これらのグローバルＩＰアドレス群を用いたＤＮＳラウンドロビンにより名前解決を行うよう指示する。【選択図】図１
2016015674.tif 000002
【特許請求の範囲】
【請求項１】
仮想ネットワークにより相互に接続される複数の拠点に設置され、当該拠点内の機器と外部ネットワークとの通信を中継する境界ルータに対し、各種制御を行う制御装置であって、
いずれか拠点の境界ルータから、前記拠点内の機器へのパケットの集中を検知した旨の通知を受信する通知受信部と、
前記通知受信部により前記通知を受信したとき、当該機器のホスト名の名前解決を行うＤＮＳサーバに対し、前記境界ルータそれぞれのＮＡＴ（Network  Address  Translation）テーブルに設定された当該機器のグローバルＩＰアドレス群を通知し、当該機器のホスト名の名前解決を行う際、前記グローバルＩＰアドレス群を用いたＤＮＳラウンドロビンを行うよう指示する指示部とを備えることを特徴とする制御装置。
【請求項２】
前記通知受信部により前記通知を受信したとき、前記拠点ごとに、当該拠点に割り当てられたグローバルＩＰアドレスの中から当該機器に割り当てるグローバルＩＰアドレスを選択し、前記選択したグローバルＩＰアドレスと、当該機器のプライベートＩＰアドレスとを対応付けたＮＡＴテーブルを当該拠点の境界ルータに設定するＮＡＴ設定部をさらに備えることを特徴とする請求項１に記載の制御装置。
【請求項３】
前記制御装置は、さらに、
前記ＤＮＳサーバへのＤＮＳラウンドロビンの指示から所定時間経過後、前記パケットの集中を検知した境界ルータにおけるパケットの集中が解消されたか否かを判定する判定部を備え、
前記指示部は、前記判定部により、前記所定時間経過しても、前記パケットの集中が解消されないと判定されたとき、前記ＤＮＳサーバに対し、前記パケットの集中を検知した境界ルータのＮＡＴテーブルに設定された当該機器のグローバルＩＰアドレスを、前記ＤＮＳラウンドロビンの対象から外すよう指示すること特徴とする請求項１または２に記載の制御装置。
【請求項４】
前記パケットが集中した機器を、他の拠点へマイグレーションさせるマイグレーション実行部をさらに備えることを特徴とする請求項３に記載の制御装置。
【請求項５】
前記パケットの集中を検知した旨の通知は、前記拠点の境界ルータにおいて、ＤＤｏＳ(Distributed  Denial  of  Service）攻撃を検知した場合、予め設定された閾値を超えるパケットの受信を検知した場合、および、前記境界ルータの外部ネットワーク側のインタフェースに設定された帯域を超えるトラヒック量のパケットの受信を検知した場合、のいずれかにおける通知であることを特徴とする請求項１〜４のいずれか１項に記載の制御装置。
【請求項６】
仮想ネットワークにより相互に接続される複数の拠点のうちいずれか拠点の境界ルータから、前記拠点内の機器へのパケットの集中を検知した旨の通知を受信するステップと、
前記通知を受信したとき、当該機器のホスト名の名前解決を行うＤＮＳサーバに対し、前記境界ルータそれぞれのＮＡＴ（Network  Address  Translation）テーブルに設定された当該機器のグローバルＩＰアドレス群を通知し、当該機器のホスト名の名前解決を行う際、前記グローバルＩＰアドレス群を用いたＤＮＳラウンドロビンを行うよう指示するステップとを含んだことを特徴とする制御方法。
【請求項７】
仮想ネットワークにより相互に接続される複数の拠点のうちいずれか拠点の境界ルータから、前記拠点内の機器へのパケットの集中を検知した旨の通知を受信するステップと、
前記通知を受信したとき、当該機器のホスト名の名前解決を行うＤＮＳサーバに対し、前記境界ルータそれぞれのＮＡＴ（Network  Address  Translation）テーブルに設定された当該機器のグローバルＩＰアドレス群を通知し、当該機器のホスト名の名前解決を行う際、前記グローバルＩＰアドレス群を用いたＤＮＳラウンドロビンを行うよう指示するステップとをコンピュータに実行させることを特徴とする制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置、制御方法、および、制御プログラムに関する。
【背景技術】
【０００２】
仮想環境を構築する技術としてOpenStack（登録商標）と呼ばれる技術が普及している。また、このOpenStack（登録商標）を用い、複数のデータセンタ等、複数の拠点を仮想Ｌ２（レイヤ２）ネットワークで接続する技術も提案されている（非特許文献１〜３）。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】OpenStack、[online]、[平成26年6月16日検索]、インターネット<URL：http://www.openstack.org/>
【非特許文献２】石井久治他、「オープンソースIaaS  クラウド基盤OpenStack」、ＮＴＴ技術ジャーナルVol.23、No.8、2011.
【非特許文献３】北爪秀雄他、「クラウドサービスを支えるネットワーク仮想化技術」、ＮＴＴ技術ジャーナルVol.23、No.10、2011.
【非特許文献４】永渕幸雄他、「データセンタ間ライブマイグレーションにおける冗長経路回避に向けた経路制御方式の提案」、信学技報、IN2013-48、pp.71-76、Jul.2013.
【非特許文献５】DDoS攻撃の軽減対策、[online]、[平成26年6月16日検索]、インターネット<URL：http://www.cisco.com/web/JP/product/hs/security/tad/tech/pdf/dda_wp.pdf>
【非特許文献６】DNSラウンドロビン、[online]、[平成26年6月16日検索]、インターネット<URL：http://ja.wikipedia.org/wiki/DNS%E3%83%A9%E3%82%A6%E3%83%B3%E3%83%89%E3%83%AD%E3%83%93%E3%83%B3>
【非特許文献７】Cricket  Liu他、「DNS&BIND」、オライリー・ジャパン、2008年12月
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ここでデータセンタ内の特定のＩＰ（Internet  Protocol）機器が、大量のパケットＤＤｏＳ(Distributed  Denial  of  Service）攻撃を受けた場合、当該データセンタへの入り口に設置されたＦＷ(FireWall)に攻撃パケットが集中する。その結果、当該データセンタ内のＩＰ機器が正規ユーザ（攻撃者以外のユーザ）に対し、継続してサービスを提供できないおそれがあった。そこで、本発明は前記した問題を解決し、ＤＤｏＳ攻撃等の攻撃を受けた場合でも継続してサービスを提供することを課題とする。
【課題を解決するための手段】
【０００５】
前記した課題を解決するため、本発明は、仮想ネットワークにより相互に接続される複数の拠点に設置され、当該拠点内の機器と外部ネットワークとの通信を中継する境界ルータに対し、各種制御を行う制御装置であって、いずれか拠点の境界ルータから、前記拠点内の機器へのパケットの集中を検知した旨の通知を受信する通知受信部と、前記通知受信部により前記通知を受信したとき、当該機器のホスト名の名前解決を行うＤＮＳサーバに対し、前記境界ルータそれぞれのＮＡＴ（Network  Address  Translation）テーブルに設定された当該機器のグローバルＩＰアドレス群を通知し、当該機器のホスト名の名前解決を行う際、前記グローバルＩＰアドレス群を用いたＤＮＳラウンドロビンを行うよう指示する指示部とを備えることを特徴とする。
【発明の効果】
【０００６】
本発明によれば、ＤＤｏＳ攻撃等の攻撃を受けた場合でも継続してサービスを提供することができる。
【図面の簡単な説明】
【０００７】
【図１】図１は、システムの全体構成の一例を示す図である。
【図２】図２は、ＤＮＳラウンドロビン実行後のシステムの状態の一例を示す図である。
【図３】図３は、境界ルータの構成を示す図である。
【図４】図４は、境界ルータのＮＡＴテーブルの一例を示す図である。
【図５】図５は、ＤＮＳサーバの構成を示す図である。
【図６】図６は、クラウドコントローラの構成を示す図である。
【図７】図７は、グローバルＩＰアドレス帯情報の一例を示す図である。
【図８】図８は、第１の実施形態のクラウドコントローラの処理手順を示すフローチャートである。
【図９】図９は、第１の実施形態のシステムの効果を説明する図である。
【図１０】図１０は、第２の実施形態のシステムの全体構成の一例を示す図である。
【図１１】図１１は、第２の実施形態のクラウドコントローラの処理手順を示すフローチャートである。
【図１２】図１２は、制御プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【０００８】
以下、図面を参照しながら、本発明を実施するための形態（実施形態）について説明する。なお、本発明は本実施形態に限定されない。
【０００９】
（第１の実施形態）
（全体構成）
まず、図１を用いてシステムの全体構成を説明する。システムは、データセンタ（データセンタ１，２，３）と、ユーザ端末１０（１０Ａ〜１０Ｅ）と、ＤＮＳ（Domain  Name  System）サーバ４０と、クラウドコントローラ５０とを備える。これらは、インターネット等のネットワーク６０で接続される。
【００１０】
データセンタはそれぞれ、境界ルータ３０と１以上のＶＭ（Virtual  Machine）とを備える。ここでは、データセンタ１は境界ルータ３０Ａを備え、データセンタ２は境界ルータ３０Ｂを備え、データセンタ３は境界ルータ３０Ｃを備える場合を例に説明する。
【００１１】
境界ルータ３０（３０Ａ，３０Ｂ，３０Ｃ）は、ネットワーク６０に接続され、ユーザ端末１０と各データセンタの各ＶＭとの通信を中継する。なお、各境界ルータ３０は、仮想Ｌ２（レイヤ２）ネットワーク２１で構成されるデータセンタ１，２，３の共通のネットワークセグメント２２とネットワーク６０を分割する。
【００１２】
例えば、境界ルータ３０Ａのインタフェース３１には、データセンタ１に割り当てられたＩＰアドレス帯「aaa.bbb.ccc.0/24」から選択されたＩＰアドレス（グローバルＩＰアドレス）「aaa.bbb.ccc.101」が設定される。同様に、境界ルータ３０Ｂにも、当該境界ルータ３０Ｂの属するデータセンタ２に割り当てられたＩＰアドレス帯から選択されたＩＰアドレスが設定され、境界ルータ３０Ｃにも、当該境界ルータ３０Ｃの属するデータセンタ３に割り当てられたＩＰアドレス帯から選択されたＩＰアドレスが設定される。
【００１３】
境界ルータ３０は、ＮＡＴ（Network  Address  Translation）機能を備え、ＮＡＴテーブルにより、各ＶＭのグローバルＩＰアドレス−プライベートＩＰアドレス間の相互変換を行う。例えば、境界ルータ３０Ａは、ＶＭ（Ａ）宛のパケットを受信すると、パケットの宛先のグローバルＩＰアドレス（例えば、「aaa.bbb.ccc.101」）を、当該ＶＭ（Ａ）のプライベートＩＰアドレス（例えば、「xxx.yyy.zzz.101」）に変換して、データセンタ１の内部のＶＭ（Ａ）へ転送する。なお、各データセンタ間は仮想Ｌ２ネットワーク２１で接続されており、どの境界ルータ３０がパケットを受信した場合でも、当該パケットは宛先のＶＭへ転送される。
【００１４】
また、境界ルータ３０は、いわゆるＦＷ(FireWall)としての機能も備え、ＤＤｏＳ(Distributed  Denial  of  Service）攻撃等の攻撃を検知した場合、攻撃パケットのフィルタリングを行う。また、境界ルータ３０は、攻撃を検知した旨を、クラウドコントローラ５０へ通知する。この境界ルータ３０は、物理マシンにより実現されてもよいし、仮想マシンにより実現されてもよい。
【００１５】
ＶＭは、仮想Ｌ２ネットワーク２１および境界ルータ３０を介してユーザ端末１０との通信を実行する。このＶＭは、例えば、ＷｅｂサーバやＤＢサーバ等を実行する仮想マシンである。このＶＭは、データセンタ内に設置される物理リソースにより実現される。なお、物理リソースは、通信インタフェース、プロセッサ、メモリ、ハードディスク等である。
【００１６】
なお、各データセンタ内の境界ルータ３０およびＶＭは、仮想スイッチ(図示省略)により仮想Ｌ２ネットワーク２１に接続される。この仮想Ｌ２ネットワーク２１は、各データセンタ間を接続する論理的なＬ２ネットワークである。この仮想Ｌ２ネットワーク２１はいわゆる仮想化技術により実現してもよいし、それ以外の技術により実現してもよい。
【００１７】
ユーザ端末１０は、ネットワーク６０経由で各データセンタ内のＶＭにアクセスし、ＶＭから各種サービスの提供を受ける。このユーザ端末１０は、例えば、パーソナルコンピュータやスマートフォン等である。
【００１８】
ＤＮＳサーバ４０は、アクセス先のホスト名の名前解決を行う。例えば、ＤＮＳサーバ４０は、ユーザ端末１０からアクセス先のＶＭのホスト名の名前解決の要求を受け付けると、このホスト名に対応するＩＰアドレスを返す。そして、ユーザ端末１０は、当該ＩＰアドレスを用いてＶＭへアクセスする。また、このＤＮＳサーバ４０は、クラウドコントローラ５０からの指示に基づきＤＮＳラウンドロビンを設定する。そして、ＤＮＳサーバ４０はＤＮＳラウンドロビンによりホスト名に対応するＩＰアドレスの選択を行う。つまり、ＤＮＳサーバ４０は、同じホスト名（例えば、「hoge.xxxx.co.jp」）に対し複数のＩＰアドレス（例えば、「aaa.bbb.ccc.101」、「ddd.eee.fff.101」、「ggg.hhh.iii.101」）を割り当てておき、当該ホスト名の名前解決の要求を受けたときに、このホスト名に対応するＩＰアドレスをラウンドロビンにより選択する。
【００１９】
クラウドコントローラ５０は、データセンタ内の各機器（例えば、境界ルータ３０やＶＭ）や、ＤＮＳサーバ４０の制御を行う。例えば、クラウドコントローラ５０は、境界ルータ３０に対するＮＡＴ用のＩＰアドレスの設定や、ＤＮＳサーバ４０に対するＤＮＳラウンドロビンの設定を行う。
【００２０】
次に、上記のシステムにおける動作概要を説明する。ここでは、データセンタ１の境界ルータ３０Ａが、ＶＭ（Ａ）に対するＤＤｏＳ攻撃を検知した場合を例に説明する。例えば、データセンタ１の境界ルータ３０ＡがＤＤｏＳ攻撃を検知すると（Ｓ１）、クラウドコントローラ５０へＤＤｏＳ攻撃の検知を通知する（Ｓ２）。この通知を受けたクラウドコントローラ５０は、データセンタ２，３それぞれに割り当てられたグローバルＩＰアドレス帯から、ＮＡＴ用のＩＰアドレスを選択する（Ｓ３）。そして、クラウドコントローラ５０は、各境界ルータ３０にＮＡＴの設定を行う（Ｓ４）。つまり、クラウドコントローラ５０は、境界ルータ３０Ａ，３０ＢそれぞれのＮＡＴテーブルにＳ３で選択したＶＭ（Ａ）のグローバルＩＰアドレスを設定する。
【００２１】
その後、クラウドコントローラ５０は、Ｓ４で設定したグローバルＩＰアドレスを用いてＤＮＳラウンドロビンを設定するようＤＮＳサーバ４０に対し指示し、ＤＮＳサーバ４０はこの指示に基づきＤＮＳラウンドロビンを設定する（Ｓ５）。例えば、図１の符号１０１の「設定前」に示すように、ＤＮＳサーバ４０に、「hoge.xxxx.co.jp  IN  A  aaa.bbb.ccc.101」、つまり、ＶＭ（Ａ）のホスト名が「hoge.xxxx.co.jp」であり、このホスト名に対するＩＰアドレスが「aaa.bbb.ccc.101」である旨が設定されていた場合を考える。この場合、ＤＮＳラウンドロビンの指示を受けたＤＮＳサーバ４０は、図１の符号１０２の「設定後」に示すように、「hoge.xxxx.co.jp  IN  A  aaa.bbb.ccc.101」に「hoge.xxxx.co.jp  IN  A  ddd.eee.fff.101」と「hoge.xxxx.co.jp  IN  A  ggg.hhh.iii.101」を追加する。つまり、ＤＮＳサーバ４０は、このホスト名に対するＩＰアドレスとして「ddd.eee.fff.101」および「ggg.hhh.iii.101」を追加する。そして、ＤＮＳサーバ４０は、ユーザ端末１０からホスト名「hoge.xxxx.co.jp」の名前解決の要求を受信したとき、ラウンドロビンにより「aaa.bbb.ccc.101」、「ddd.eee.fff.101」、「ggg.hhh.iii.101」の中から選択したＩＰアドレスを返す。
【００２２】
これにより、例えば、図２に示すように各ユーザ端末１０からＶＭ（Ａ）へトラヒックは、境界ルータ３０Ａ，３０Ｂ，３０Ｃに分散される。例えば、攻撃者のユーザ端末１０（１０Ａ，１０Ｂ，１０Ｃ）からＶＭ（Ａ）への攻撃パケットは境界ルータ３０Ａ，３０Ｂ，３０Ｃに分散される。その結果、境界ルータ３０Ａへの攻撃パケットの集中が緩和され、正規ユーザのユーザ端末１０（例えば、ユーザ端末１０Ｄ，１０Ｅ）はＶＭ（Ａ）へアクセスしやすくなる。つまり、システムは、ＤＤｏＳ攻撃を受けた場合でもユーザ端末１０に対し継続してサービスを提供することができる。
【００２３】
（境界ルータ）
次に、システムの各構成要素を詳細に説明する。まず、図３を用いて境界ルータ３０を説明する。
【００２４】
前記したとおり、境界ルータ３０は、ネットワーク６０に接続され、ユーザ端末１０と各データセンタの各ＶＭとの通信を中継する。この境界ルータ３０は、インタフェース３１，３４と、記憶部３２と、制御部３３とを備える。
【００２５】
インタフェース３１は、境界ルータ３０とネットワーク６０とを接続するインタフェースである。このインタフェース３１には、この境界ルータ３０の属するデータセンタのＩＰアドレス帯から選択されたグローバルＩＰアドレスが設定される。インタフェース３４は、境界ルータ３０と仮想Ｌ２ネットワーク２１、ＶＭを接続するインタフェースである。
【００２６】
記憶部３２は、ＮＡＴテーブルを記憶する。ＮＡＴテーブルは、ＶＭのグローバルＩＰアドレスとプライベートＩＰアドレスとを対応付けた情報である。例えば、図４に示すＮＡＴテーブルは、境界ルータ３０ＡにおけるＮＡＴテーブルであり、このＮＡＴテーブルにおいて、グローバルＩＰアドレス「aaa.bbb.ccc.101」に対するプライベートＩＰアドレスは「xxx.yyy.zzz.101」であることを示す。このＮＡＴテーブルは、経路制御部３３２（後記）がＮＡＴを行うときに参照される。また、このＮＡＴテーブルは、クラウドコントローラ５０からの指示に基づき変更される。
【００２７】
制御部３３は、ＮＡＴテーブル管理部３３１と、経路制御部３３２と、攻撃通知部３３３と、フィルタリング部３３４とを備える。
【００２８】
ＮＡＴテーブル管理部３３１は、外部装置からの指示に基づきＮＡＴテーブル（図４参照）を更新する。例えば、クラウドコントローラ５０から、ＮＡＴテーブルに、ＶＭ（Ａ）のプライベートＩＰアドレスに対するグローバルＩＰアドレスの設定変更指示があった場合、これに応じてＮＡＴテーブルの設定変更を行う。
【００２９】
経路制御部３３２は、インタフェース３１，３４経由で入力されたパケットの経路制御を行う。例えば、インタフェース３１経由でユーザ端末１０からＶＭへのパケットを受信すると、このパケットを当該ＶＭへ転送する。このとき経路制御部３３２は、ＮＡＴテーブル（図４参照）を参照して、パケットに付されたグローバルＩＰアドレスとプライベートＩＰアドレスとのＮＡＴ変換を行う。
【００３０】
攻撃通知部３３３は、自身の境界ルータ３０を経由するＶＭへのＤＤｏＳ攻撃等の攻撃を検知した場合、攻撃を検知した旨を、クラウドコントローラ５０へ通知する。
【００３１】
フィルタリング部３３４は、攻撃パケットのフィルタリングを行う。例えば、フィルタリング部３３４は受信したパケットのヘッダ情報を参照し、攻撃パケットと推定されるパケットを廃棄する。
【００３２】
なお、この境界ルータ３０は、いわゆるＦＷ機能を備えるルータにより実現されるものとして説明したが、ルータとＦＷとの２つの装置により実現してももちろんよい。
【００３３】
（ＤＮＳサーバ）
次に、図５を用いてＤＮＳサーバ４０を説明する。ＤＮＳサーバ４０は、前記したとおり、アクセス先のホスト名の名前解決を行う。このＤＮＳサーバ４０は、通信制御部４１と、記憶部４２と、制御部４３とを備える。
【００３４】
通信制御部４１は、他の装置との通信を制御する。例えば、通信制御部４１は、ユーザ端末１０やクラウドコントローラ５０との間で行われる通信を制御する。
【００３５】
記憶部４２は、ＤＮＳ情報を記憶する。このＤＮＳ情報は、ホスト名に対応するＩＰアドレス（グローバルＩＰアドレス）の情報を含む。このＤＮＳ情報は、ホスト名解決部４３２（後記）がホスト名の名前解決を行う際に参照される。このＤＮＳ情報は、例えば、図１の符号１０１に示す情報や、符号１０２に示す情報等である。
【００３６】
制御部４３は、ＤＮＳ情報管理部４３１と、ホスト名解決部４３２とを備える。
【００３７】
ＤＮＳ情報管理部４３１は、クラウドコントローラ５０からの指示に基づき、ＤＮＳ情報を更新する。例えば、ＶＭ（Ａ）のホスト名「hoge.xxxx.co.jp」に対するＩＰアドレスとして「ddd.eee.fff.101」および「ggg.hhh.iii.101」を追加する旨の指示を受け付けたとき、これに応じてＤＮＳ情報のＶＭ（Ａ）のホスト名「hoge.xxxx.co.jp」に対するＩＰアドレスに「ddd.eee.fff.101」および「ggg.hhh.iii.101」を追加する（図１の符号１０１→符号１０２参照）。
【００３８】
ホスト名解決部４３２は、ＤＮＳ情報を参照して、ホスト名の名前解決を行う。例えば、ホスト名解決部４３２は、ユーザ端末１０からＶＭ（Ａ）のホスト名の名前解決の要求を受け付けると、ＤＮＳ情報を参照して、当該ホスト名に対応するＩＰアドレスを返す。このホスト名解決部４３２は、ＤＮＳラウンドロビン実行部４３３を備え、外部装置（例えば、クラウドコントローラ５０）からＤＮＳラウンドロビンの指示を受けたとき、ＤＮＳラウンドロビンによりホスト名に対応するＩＰアドレスを選択する。
【００３９】
例えば、ＤＮＳラウンドロビン実行部４３３は、クラウドコントローラ５０からＤＮＳラウンドロビンの指示を受けた後、ＶＭ（Ａ）のホスト名「hoge.xxxx.co.jp」の名前解決の要求を受け付けたとき、ＤＮＳ情報に示される当該ホスト名に対応するＩＰアドレス群（例えば、「aaa.bbb.ccc.101」、「ddd.eee.fff.101」、「ggg.hhh.iii.101」）の中からラウンドロビンによりＶＭ（Ａ）のＩＰアドレスを選択する。そして、ホスト名解決部４３２は、ＤＮＳラウンドロビン実行部４３３が選択したＶＭ（Ａ）のＩＰアドレスをユーザ端末１０へ返す。
【００４０】
（クラウドコントローラ）
次に、図６を用いてクラウドコントローラ５０を説明する。クラウドコントローラ５０は、前記したとおりデータセンタ内の各機器（境界ルータ３０やＶＭ）や、ＤＮＳサーバ４０の制御を行う。
【００４１】
クラウドコントローラ５０は、通信制御部５１と、記憶部５２と、制御部５３とを備える。通信制御部５１は、他の装置との通信を制御する。例えば、通信制御部５１は、境界ルータ３０やＤＮＳサーバ４０との間で行われる通信を制御する。
【００４２】
記憶部５２は、境界ルータ情報と、グローバルＩＰアドレス帯情報とを記憶する。
【００４３】
境界ルータ情報は、境界ルータ３０ごとに当該境界ルータ３０の属するデータセンタと、当該境界ルータ３０のＩＰアドレスとを示した情報である。
【００４４】
グローバルＩＰアドレス帯情報は、各データセンタに割り当てられたグローバルＩＰアドレス帯を示した情報である。例えば、図７に示すグローバルＩＰアドレス帯情報において、データセンタ１に割り当てられたグローバルＩＰアドレス帯は「aaa.bbb.ccc.0/24」であり、データセンタ２に割り当てられたグローバルＩＰアドレス帯は「ddd.eee.fff.0/24」であることを示す。このグローバルＩＰアドレス帯情報は、ＮＡＴ設定部５３２（後記）が、各境界ルータ３０にＮＡＴの設定を行うときに参照される。
【００４５】
制御部５３は、攻撃通知受信部５３１と、ＮＡＴ設定部５３２と、ＤＮＳラウンドロビン指示部５３３とを備える。破線で示す判定部５３４およびマイグレーション実行部５３５は装備される場合と装備されない場合とがあり、装備される場合については、後記する。
【００４６】
攻撃通知受信部５３１は、境界ルータ３０からの攻撃通知を受信する。
【００４７】
ＮＡＴ設定部５３２は、攻撃通知受信部５３１により攻撃通知を受信したとき、各データセンタの境界ルータ３０に対し、攻撃対象のＶＭのＮＡＴの設定を行う。なお、攻撃対象のＶＭの属するデータセンタ（例えば、データセンタ１）の境界ルータ３０には既に当該ＶＭ（Ａ）のＮＡＴの設定はされているので、ＮＡＴ設定部５３２は、攻撃対象のＶＭの属するデータセンタ以外の各データセンタの境界ルータ３０のＮＡＴの設定をする。
【００４８】
例えば、攻撃対象のＶＭがデータセンタ１のＶＭ（Ａ）である場合を例に説明する。この場合、ＮＡＴ設定部５３２は、データセンタ２，３の各境界ルータ３０に対し、グローバルＩＰアドレス帯情報（図７参照）を参照して、ＶＭ（Ａ）のＮＡＴ用のＩＰアドレスを選択する。例えば、ＮＡＴ設定部５３２は、グローバルＩＰアドレス帯情報（図７参照）を参照して、データセンタ２に割り当てられたグローバルＩＰアドレス帯「ddd.eee.fff.0/24」から、「ddd.eee.fff.101」を選択し、データセンタ３に割り当てられたグローバルＩＰアドレス帯「ggg.hhh.iii.0/24」から、「ggg.hhh.iii.101」を選択する。そして、ＮＡＴ設定部５３２は、ＶＭのプライベートＩＰアドレス（例えば、「xxx.yyy.zzz.101」）に対し、「ddd.eee.fff.101」を対応付けたＮＡＴの設定を、データセンタ２の境界ルータ３０Ｂに行う。また、そして、ＮＡＴ設定部５３２は、ＶＭのプライベートＩＰアドレス（例えば、「xxx.yyy.zzz.101」）に対し、「ggg.hhh.iii.101」を対応付けたＮＡＴの設定を、データセンタ３の境界ルータ３０Ｃに対し行う。なお、ＮＡＴ設定部５３２は、ＮＡＴに設定済みの各ＶＭのＩＰアドレスを記憶部５２に記憶しておき、ＮＡＴの設定において各ＶＭ間でＩＰアドレスの重複がないようにする。
【００４９】
ＤＮＳラウンドロビン指示部５３３は、ＤＮＳサーバ４０に対し、ＤＮＳラウンドロビンの実行指示を送信する。この実行指示は、攻撃対象のＶＭのホスト名（例えば、ホスト名「hoge.xxxx.co.jp」）と、ＮＡＴ設定部５３２が選択した当該ＶＭのグローバルＩＰアドレスとを含む。例えば、ＮＡＴ設定部５３２が選択したＶＭ（Ａ）のグローバルＩＰアドレスが「ddd.eee.fff.101」および「ggg.hhh.iii.101」である場合、ＤＮＳラウンドロビン指示部５３３は、攻撃対象のＶＭのホスト名（例えば、ホスト名「hoge.xxxx.co.jp」）と、「ddd.eee.fff.101」および「ggg.hhh.iii.101」をＤＮＳサーバ４０へのＤＮＳラウンドロビンの実行指示に含めて送信する。
【００５０】
以上説明したシステムによれば、ＶＭへの攻撃発生後、ユーザ端末１０から当該ＶＭのホスト名の名前解決の要求を受けたＤＮＳサーバ４０は、当該ＶＭのＩＰアドレスをＤＮＳラウンドロビンにより選択して返す。その結果、攻撃パケットは各データセンタの境界ルータ３０に分散される。よって、システムは、正規ユーザからのトラヒックに対するＤＤｏＳ攻撃の影響を低減できる。
【００５１】
（処理手順）
次に、図８を用いてクラウドコントローラ５０の処理手順を説明する。クラウドコントローラ５０の攻撃通知受信部５３１は、境界ルータ３０からＶＭへの攻撃通知を受信すると（Ｓ１１）、ＮＡＴ設定部５３２は、グローバルＩＰアドレス帯情報（図７参照）を参照して、当該ＶＭのＮＡＴ用のＩＰアドレスを選択する（Ｓ１２）。そして、ＮＡＴ設定部５３２は、Ｓ１２で選択したＩＰアドレスを、各境界ルータ３０（攻撃対象のＶＭの属するデータセンタ以外の各データセンタの境界ルータ３０）のＮＡＴテーブルに設定する（Ｓ１３）。その後、ＤＮＳラウンドロビン指示部５３３は、ＤＮＳサーバ４０に対し、ＤＮＳラウンドロビンの指示を行う（Ｓ１４）。すなわち、ＤＮＳラウンドロビン指示部５３３は、ＤＮＳサーバ４０に対し、Ｓ１３でＮＡＴテーブルに設定した攻撃対象のＶＭのＩＰアドレスを含むＤＮＳラウンドロビンの指示を送信する。
【００５２】
このようなＤＮＳラウンドロビンの指示を受信したＤＮＳサーバ４０は、ユーザ端末１０から当該ＶＭのホスト名の名前解決の要求を受けたとき、当該ＶＭのＩＰアドレスをＤＮＳラウンドロビンにより選択して返す。その結果、攻撃パケットを各データセンタの境界ルータ３０に分散させることができる。
【００５３】
図９を用いて、第１の実施形態のシステムによる効果を説明する。図９に示すシステムは、図１に示すシステムと同様であるが、説明を簡単にするためユーザ端末１０Ｆが追加されている。このシステムにおいて、各データセンタとネットワーク６０とを接続するアクセス回線の帯域が１０Ｇｂｐｓ、攻撃者のユーザ端末１０（１０Ａ，１０Ｂ，１０Ｃ）からの攻撃トラヒックがそれぞれ６Ｇｂｐｓ、正規ユーザのユーザ端末１０（１０Ｄ，１０Ｅ，１０Ｆ）からのトラヒックがそれぞれ１Ｇｂｐｓである場合を例に考える。
【００５４】
この場合、データセンタ１のアクセス回線の負荷は、６Ｇｂｐｓ×３＋１Ｇｂｐｓ×３＝２１Ｇｂｐｓである。一方、データセンタ１とネットワーク６０とを接続するアクセス回線の帯域は１０Ｇｂｐｓであるので、このままでは、正規ユーザのユーザ端末１０からのトラヒックを含め１１Ｇｂｐｓ分のトラヒックが廃棄されることなる。
【００５５】
ここで、ＤＮＳサーバ４０が上記のＤＮＳラウンドロビンを実行することで、各ユーザ端末１０からのトラヒックは３つのデータセンタの境界ルータ３０に分散される。その結果、各データセンタの境界ルータ３０へのトラヒックは２１÷３＝７Ｇｂｐｓとなる。つまり、１０Ｇｂｐｓ以下となるので、各境界ルータ３０にトラヒックが届くことになる。その後、各境界ルータ３０で攻撃トラヒックのフィルタリングが行われ、正規ユーザのユーザ端末１０からのトラヒックはＶＭに到達する。このように、攻撃検知後、クラウドコントローラ５０がＤＮＳサーバ４０にＤＮＳラウンドロビンを実行させることで、ＤＤｏＳ攻撃から正規ユーザのユーザ端末１０からのトラヒックを守ることができる。
【００５６】
また、上記のように攻撃トラヒックが各データセンタの境界ルータ３０に分散されるので、境界ルータ３０で用意すべきリソースや帯域を低減できる。また、従来は１つのデータセンタ（拠点）では耐えられなかったＤＤｏＳ攻撃に耐えることができる。
【００５７】
さらに、境界ルータ３０が攻撃パケットをフィルタリングすることで、この仮想Ｌ２ネットワーク２１内のトラヒック量を低減できる。また、通常のＤＮＳラウンドロビンでは、名前解決により得られた通信先のサーバが毎回異なることになる。このため、このサーバに通信の継続性が求められる場合に問題が生じる可能性があった。しかし、本システムでは、各データセンタ内には仮想Ｌ２ネットワーク２１が構築され、異なる入口（境界ルータ３０）からパケットが入った場合でも、同じＶＭ（サーバ）に転送されるので、このような問題は生じない。
【００５８】
（第２の実施形態）
次に、本発明の第２の実施形態を説明する。第２の実施形態のシステムは、ＤＮＳラウンドロビン実行後、所定時間経過しても攻撃パケットの集中が解消されなかったとき、攻撃対象のＶＭの属するデータセンタの境界ルータ３０（攻撃対象の境界ルータ３０）が受け持つ当該ＶＭのＩＰアドレスをＤＮＳラウンドロビンから外すことを特徴とする。
【００５９】
このようにすることで、攻撃者が、攻撃対象のＶＭに対しＩＰアドレスの直打ちで攻撃をしていたとき、正規ユーザから当該ＶＭへのパケット（宛先に当該ＶＭのホスト名を用いたパケット）については、攻撃対象の境界ルータ３０以外の境界ルータ３０群に振り分けられる。
【００６０】
例えば、図１０に示すデータセンタ１のＶＭ（Ａ）に対し、ＩＰアドレスを指定したＤＤｏＳ攻撃が行われていた場合を考える。この場合、ＤＮＳサーバ４０においてＤＮＳラウンドロビンを実行しても、攻撃パケットは他のデータセンタ（例えば、データセンタ２，３）の境界ルータ３０に分散しない。そこで、クラウドコントローラ５０がＤＮＳサーバ４０におけるＤＮＳラウンドロビンの設定を変更し、データセンタ１の境界ルータ３０Ａが受け持つＶＭ（Ａ）のＩＰアドレスの情報（「hoge.xxxx.co.jp  IN  A  aaa.bbb.ccc.101」）を外す（符号１０３に示す「変更前」→符号１０４に示す「変更後」参照）。このようにすることで、攻撃パケットはデータセンタ１の境界ルータ３０Ａで受信する一方、正規ユーザからのパケットは、ＤＮＳラウンドロビンにより他のデータセンタ（例えば、データセンタ２，３）の境界ルータ３０に振り分けられる。つまり、正規ユーザからのパケットは攻撃対象の境界ルータ３０Ａを経由せずに、境界ルータ３０Ｂまたは境界ルータ３０Ｃを経由してＶＭ（Ａ）に到達することになる。その結果、正規ユーザからのトラヒックに対してＤＤｏＳ攻撃の影響を低減することができる。
【００６１】
（構成）
第２の実施形態のシステムにおけるクラウドコントローラ５０は、図６に示す判定部５３４をさらに備える。この判定部５３４は、ＤＮＳラウンドロビン指示部５３３によるＤＮＳサーバ４０へのＤＮＳラウンドロビンの指示から所定時間経過後、攻撃対象の境界ルータにおける攻撃パケットの集中が解消されたか否かを判定する。ここでの判定は、例えば、判定部５３４がネットワーク６０経由で各境界ルータ３０の通信状況を確認することにより行われる。
【００６２】
また、ＤＮＳラウンドロビン指示部５３３は、判定部５３４により、ＤＮＳラウンドロビンの指示後、所定時間経過しても、攻撃対象の境界ルータにおける攻撃パケットの集中が解消されないと判定されたとき、ＤＮＳサーバ４０に対し、攻撃対象のＶＭの属するデータセンタの境界ルータ３０（攻撃対象の境界ルータ３０）が受け持つ当該ＶＭのＩＰアドレスをＤＮＳラウンドロビンから外すよう指示する。
【００６３】
（処理手順）
次に、図１１を用いて、第２の実施形態のクラウドコントローラ５０の処理手順を説明する。
【００６４】
クラウドコントローラ５０の判定部５３４は、ＤＮＳラウンドロビンの指示から所定時間経過したとき（Ｓ２１でＹｅｓ）、攻撃対象の境界ルータ３０の通信状況を確認し、当該境界ルータ３０におけるパケットの集中（攻撃パケットの集中）が解消されたか否かを判定する（Ｓ２２）。なお、ＤＮＳラウンドロビンの指示からまだ所定時間経過していなければ（Ｓ２１でＮｏ）、Ｓ２１へ戻る。Ｓ２２でパケットの集中が解消されていれば（Ｓ２２でＹｅｓ）、処理を終了し、集中が解消されていなければ（Ｓ２２でＮｏ）、ＤＮＳラウンドロビン指示部５３３は、ＤＮＳサーバ４０に対し、攻撃対象の境界ルータ３０が受け持つ攻撃対象のＶＭのＩＰアドレスをＤＮＳラウンドロビンの対象から外すよう指示する（Ｓ２３）。
【００６５】
このような指示を受けたＤＮＳサーバ４０は攻撃対象の境界ルータ３０が受け持つ当該ＶＭのＩＰアドレスをＤＮＳラウンドロビンの対象から外す。その結果、正規ユーザのユーザ端末１０からのホスト名を用いた当該ＶＭへのアクセスについては、攻撃対象の境界ルータ３０以外の境界ルータ３０を経由することになるので、当該ＶＭへアクセスしやすくなる。つまり、正規ユーザのトラヒックに対するＤＤｏＳ攻撃の影響を低減することができる。
【００６６】
なお、上記の実施形態では、クラウドコントローラ５０は、ＤＮＳラウンドロビンの指示から所定時間経過してもパケットの集中が解消されなったときに、ＶＭへの攻撃がＩＰアドレスを指定したＤＤｏＳ攻撃であると判定し、図１１のＳ２３の処理を行うこととしたがこれに限定されない。例えば、クラウドコントローラ５０が、ＤＮＳサーバ４０のログを調査し、攻撃対象のＶＭのホスト名の名前解決がされた形跡がなかったとき、当該ＶＭへの攻撃はＩＰアドレスを指定したＤＤｏＳ攻撃であると判定し、Ｓ２３の処理を行うようにしてもよい。
【００６７】
（その他の実施形態）
また、クラウドコントローラ５０は、ＤＮＳサーバ４０に対しＤＮＳラウンドロビンの対象から攻撃対象の境界ルータ３０が受け持つ攻撃対象のＶＭのＩＰアドレスを外すよう指示した後、攻撃対象の境界ルータ３０における当該ＶＭのＮＡＴの設定を削除してもよい。このようにすることで、攻撃対象のＶＭに攻撃パケットが到達しなくなるので、攻撃対象のＶＭを攻撃者のＤＤｏＳ攻撃から守ることができる。なお、当該境界ルータ３０を経由したＶＭへの攻撃がなくなった後、クラウドコントローラ５０は、当該境界ルータ３０に当該ＶＭのＮＡＴの再設定を行う。これにより、当該境界ルータ３０から当該ＶＭへのＮＡＴを使った通信を再開できる。
【００６８】
さらに、クラウドコントローラ５０は、ＤＮＳサーバ４０に対し攻撃対象の境界ルータ３０（例えば、境界ルータ３０Ａ）が受け持つ攻撃対象のＶＭ（例えば、ＶＭ（Ａ））のＩＰアドレスをＤＮＳラウンドロビンの対象から外すよう指示した後、当該ＶＭを、他のデータセンタ（例えば、データセンタ２）にマイグレーションさせてもよい。この場合、クラウドコントローラ５０は、図６に示すマイグレーション実行部５３５を備え、このマイグレーション実行部５３５により当該ＶＭのマイグレーションを実行する。
【００６９】
例えば、クラウドコントローラ５０のマイグレーション実行部５３５は、図１０に示すように、攻撃対象のＶＭ（Ａ）をデータセンタ１からデータセンタ２にマイグレーションさせる。このようなマイグレーションを実行することで、境界ルータ３０Ｂまたは境界ルータ３０Ｃ経由でＶＭ（Ａ）へアクセスしてきた正規ユーザは、データセンタ１まで通信を行う必要がなくなるので、ＶＭ（Ａ）との通信時間を短縮することができる。
【００７０】
また、各データセンタには境界ルータ３０が１台設置される場合を例に説明したが、各データセンタに境界ルータ３０が複数台設置されていてももちろんよい。この場合、クラウドコントローラ５０は上記と同様の処理手順により、各境界ルータ３０にＮＡＴの設定を行い、ＤＮＳサーバ４０にＤＮＳラウンドロビンを設定し、攻撃パケットを分散させる。
【００７１】
なお、境界ルータ３０がＤＤｏＳ攻撃を検知したときに攻撃通知を送信することとしたが、これに限定されない。例えば、当該境界ルータ３０で中継するＶＭへのパケットが所定の閾値を超えて送信されたときに攻撃通知を送信するようにしてもよい。ここでの閾値は、例えば、境界ルータ３０からネットワーク６０へ接続するインタフェース３１に設定される帯域の値を用いる。
【００７２】
なお、前記した各実施形態において、クラウドコントローラ５０は、攻撃を検知したとき、各境界ルータ３０のＮＡＴの設定変更を行うものとして説明したが、これに限定されない。例えば、予め各境界ルータ３０に各データセンタのＶＭへのＮＡＴを設定しておき、クラウドコントローラ５０が攻撃を検知したとき、ＤＮＳサーバ５０へのラウンドロビンの設定のみを行うようにしてもよい。
【００７３】
（プログラム）
また、上記実施形態に係るクラウドコントローラ５０が実行する処理をコンピュータが実行可能な言語で記述したプログラムを作成することもできる。この場合、コンピュータがプログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、かかるプログラムをコンピュータに読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータに読み込ませて実行することにより上記実施形態と同様の処理を実現してもよい。以下に、クラウドコントローラ５０と同様の機能を実現する制御プログラムを実行するコンピュータの一例を説明する。
【００７４】
図１２は、制御プログラムを実行するコンピュータを示す図である。図１２に示すように、コンピュータ１０００は、例えば、メモリ１０１０と、ＣＰＵ（Central  Processing  Unit）１０２０と、ハードディスクドライブインタフェース１０３０と、ディスクドライブインタフェース１０４０と、シリアルポートインタフェース１０５０と、ビデオアダプタ１０６０と、ネットワークインタフェース１０７０とを有する。これらの各部は、バス１０８０によって接続される。
【００７５】
メモリ１０１０は、ＲＯＭ（Read  Only  Memory）１０１１およびＲＡＭ（Random  Access  Memory）１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、ディスクドライブ１１００に接続される。ディスクドライブ１１００には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース１０５０には、例えば、マウス１１１０およびキーボード１１２０が接続される。ビデオアダプタ１０６０には、例えば、ディスプレイ１１３０が接続される。
【００７６】
ここで、図１２に示すように、ハードディスクドライブ１０９０は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３およびプログラムデータ１０９４を記憶する。上記実施形態で説明した各テーブルは、例えばハードディスクドライブ１０９０やメモリ１０１０に記憶される。
【００７７】
また、制御プログラムは、例えば、コンピュータ１０００によって実行される指令が記述されたプログラムモジュールとして、ハードディスクドライブ１０９０に記憶される。具体的には、上記実施形態で説明したクラウドコントローラ５０が実行する各処理が記述されたプログラムモジュールが、ハードディスクドライブ１０９０に記憶される。
【００７８】
また、制御プログラムによる情報処理に用いられるデータは、プログラムデータとして、例えば、ハードディスクドライブ１０９０に記憶される。そして、ＣＰＵ１０２０が、ハードディスクドライブ１０９０に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出して、上述した各手順を実行する。
【００７９】
なお、制御プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０９０に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ１１００等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、制御プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ＬＡＮ（Local  Area  Network）やＷＡＮ（Wide  Area  Network）等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【符号の説明】
【００８０】
１，２，３    データセンタ
１０    ユーザ端末
２１    仮想Ｌ２ネットワーク
２２    ネットワークセグメント
３０    境界ルータ
３１，３４    インタフェース
３２，４２，５２    記憶部
３３，４３，５３    制御部
４０    ＤＮＳサーバ
４１，５１    通信制御部
５０    クラウドコントローラ
６０    ネットワーク
３３１  ＮＡＴテーブル管理部
３３２  経路制御部
３３３  攻撃通知部
３３４  フィルタリング部
４３１  ＤＮＳ情報管理部
４３２  ホスト名解決部
４３３  ＤＮＳラウンドロビン実行部
５３１  攻撃通知受信部
５３２  ＮＡＴ設定部
５３３  ＤＮＳラウンドロビン指示部
５３４  判定部
５３５  マイグレーション実行部
【図１】
2016015674.tif 000003
【図２】
2016015674.tif 000004
【図３】
2016015674.tif 000005
【図４】
2016015674.tif 000006
【図５】
2016015674.tif 000007
【図６】
2016015674.tif 000008
【図７】
2016015674.tif 000009
【図８】
2016015674.tif 000010
【図９】
2016015674.tif 000011
【図１０】
2016015674.tif 000012
【図１１】
2016015674.tif 000013
【図１２】
2016015674.tif 000014