以下、本発明を実施するための最良の形態を図面に基づき説明する。図1は本発明の一つの実施の形態のネットワーク通信システムの構成を示すブロック図、図2は図1のネットワーク通信システムの通信制御装置の構成を示すブロック図である。
図1に示すように、このネットワーク通信システムは、要求を送信する側の機器であるクライアントコンピュータ3(以下、クライアント1と称す。)と、通信制御装置2と、認証サーバ3と、ドメインネームサーバ(以下、DNSサーバ4と称す。)とをネットワーク5を介して接続して構成されている。
ネットワーク5は例えばローカルエリアネットワーク(以下、LANと称す。)などのイントラネットである。またネットワーク5にゲートウェイ装置を介して外部ネットワーク(インターネットなど)が接続される場合もある。
クライアント1は、ウェブブラウザなとどのブラウザソフトウェア(以下ブラウザと称す)がインストールされた端末(機器)であり、ブラウザを使用してウェブコンテンツを見ることができる機能を有するものである。クライアント1は、コンピュータでも、テレビジョンでも、ブラウザ機能が備えられており、Ethernet(登録商標)の機能を有しているものならば、いずれのものでもよい。
クライアント1に設定されているIPアドレスを10.10.10.5、通信制御装置2に設定されているIPアドレスを10.10.10.2、認証サーバ3に設定されているIPアドレスを10.10.10.1、DNSサーバ4に設定されているIPアドレスを10.10.10.54とし、通信制御装置2では、TCPポート80を開いてhttpサービスを提供するものとする。IPアドレスは、DHCPサーバ(図示せず)による自動割当てでもよく、手動設定でも良い。
通信制御装置2は、小型のボックスユニットであり、CPU、メモリ、ローカルエリアネットワークインターフェースカード(以下、NICと称す。)などを搭載し、メモリに記憶されたオペレーティングシステム(以下、OSと称す。)および通信制御プログラムがCPUに処理動作を実行させる。つまり、この通信制御装置2では、OSおよび通信制御プログラムなどのソフトウェアとCPU、メモリなどのハードウェアが協動して動作する。
認証サーバ3およびクライアント1は、一般的なコンピュータであり、例えばCPU、メモリ、ハードディスク装置、NICなどを搭載したPC本体と、このPC本体に接続されたディスプレイ、プリンタなどの出力装置と、キーボード、マウスなどの入力装置とを有している。
クライアント1のハードディスク装置には、オペレーティングシステム(以下、OSと称す。)の他、ウェブブラウザなどのソフトウェアがインストールされている。
認証サーバ3のハードディスク装置には、OSの他、通信制御プログラムなどのソフトウェアがインストールされている。
また、認証サーバ3のハードディスク装置には、データベース(以下、DBと称す。)が構築されている。認証サーバ3のDBには、ネットワーク5に接続されたクライアント1を認証するための認証情報が登録(格納)されている。
DNSサーバ4は、ネットワーク5上でのコンピュータの名前にあたるドメイン名を、住所にあたるIPアドレス(4つの数字の列)に変換するコンピュータである。
図2に示すように、通信制御装置2は、OSの標準的なソフトウェア部分であるOS標準部分100と、このOS標準部分100に実装されたアプリケーション130、パケット判定部21、収集部22、転送判定部23、転送部24、通信横取り部としての通信制御部25、コントローラ27などの通信制御プログラムの部分と、メモリなどで構成される記憶部26とを有している。なお、この例では、パケット判定部21、収集部22、転送判定部23、転送部24、通信制御部25、コントローラ27などをソフトウェアで実現したが、ハードウェアで構成しても良い。
標準部分100は、ネットワーク5との物理的な接続を行うNIC110と、コピー部111と、このNIC110により受信されたパケットをアプリケーション毎に読めるようにするOS基本スタック120と、実際の情報処理を行い、サービスを接続先に提供するアプリケーション130とを有している。
NIC110は、物理ネットワークとのインターフェースであって、例えばEthernet用のカードである。この他、無線ネットワーク用のカードおよびBluetooth用のネットワークカードなどが適用可能であり、ネットワーク5と接続できるものであればカードの種類は問わない。なお、Bluetoothは、登録商標である。
コピー部111は、通信制御部25を含む通信制御プログラムが起動したときに通信制御プログラムによって起動され、NIC110により受信されたパケットをコピー(複製)して記憶部26に記憶する。
OS基本スタック120は、各OSに搭載されている基本スタックであって、OSI参照モデルに従うものの場合、少なくともL2スタック121と、L3スタック122と、L4スタック123とを有している。Lはレイヤーをいう。
L3スタック122は、IPアドレスによって制御を行うネットワーク層と呼ばれる部分であり、L4スタック123は、一般にトランスポート層と呼ばれる部分である。
アプリケーション130には、記憶装置131が接続されている。記憶装置131には、リダイレクト先の情報が書き込まれたページが記憶されている。具体的には、リダイレクト先として認証サーバ3のURLなどが書き込まれている。通信制御部25からのコマンド入力によりリダイレクト先のページを、スタック120を通じてNIC110へ出力する。
パケット判定部21は、コピー部111より受信されたパケットの種別がARPパケットかIPパケットかを判定する。パケット判定部21は、パケットのEtherフレームの所定位置に設定されている番号を読み取ることでパケットの種別を判定する。
収集部22は、他の端末(クライアント1、認証サーバ3など)が実施しようとする通信を、通信制御装置2との間で行われるように引き入れる制御を行う。
収集部22は、パケット判定部21によりARPパケットと判定された自己宛でないパケットから抽出した送信元のMACアドレスを読み出して、アクセス許可リスト264と比較してアクセス許可リスト264にMACアドレスがない場合、および通信制御解除リスト261にMACアドレスがない場合には、相手先のMACアドレスを自分のMACアドレスに変更した通信制御用のARPパケットを生成してNIC110へ送出する。
転送判定部23は、受信されたIPパケットが記憶部26に記憶(設定)された転送条件(図4の転送可否リスト262)に合致するか否かによって転送可否を判定する。
転送部24は、事前に設定された転送条件に合致した通信を転送する。つまり転送部24は、転送判定部23により転送許可と判定、つまり転送が許可されたIPパケットをNIC110を介してネットワーク5へ転送する。
通信制御部25は、他の端末が実施しようとするHTTP通信を自分宛のものとして処理する。通信制御部25は、記憶部26に記憶されたパケットの宛先のIPアドレスが自己のIPアドレスでない場合、OSのスタックに論理IPアドレスとして登録すると共に、記憶されたパケットを送信する。
通信制御部25は、転送判定部23により転送不許可と判定されたIPパケットが、予め設定された横取り条件(図5の通信制御条件リスト263参照)に合致した場合、通信制御対象として、送信元のIPアドレスを通信制御対象リスト261に登録し、このリストにアドレスが存在する間、通信を制御(インターセプトまたはTCPジャックという)する。
通信制御部25は、アプリケーション130を制御してアプリケーション130より、その送信元に対してリダイレクトページを返信させる機能を有している。
通信制御部25は、通信制御対象リスト261からアドレスが削除され、通信制御の対象外となった端末(機器)に対しては、通信制御を行わない。
コントローラ27は、常時自ブロードキャストドメイン内に数秒または数分おきにコマンドを送ってネットワーク5を監視し、ネットワーク5にクライアント2などの端末が接続または取り外されるタイミングを検出する。
コントローラ27は、このタイミングで接続端末管理リスト265にIPアドレスおよびMACアドレスを登録または削除するなどしてネットワーク5内の接続状況を管理する。なお、IPアドレスのみが分かっており、MACアドレスが不明な場合は、接続端末管理リスト265の情報を元にMACアドレスに変換する。
また、コントローラ27は、通信制御対象解除命令を受信した場合には、ARPを用いて正しい情報に書き換える機能を有する。コントローラ27は、図7に示す接続端末管理リスト265を管理する。制御対象外の端末がネットワーク5から外れた場合には、接続端末管理リスト265から該当端末のアドレス情報を削除する。
記憶部26には、NIC110により受信されたパケットのコピーおよびアドレス情報などが記憶される。記憶部26は、各部により情報が読み出しおよび書き込みされると共に、パケットから情報を抽出、パケットを新たに生成するなどの作業領域として利用される。
記憶部26には、通信制御対象リスト261、転送可否リスト262、通信制御条件リスト263、アクセス許可リスト264、接続端末管理リスト265などが記憶されている。
図3に示すように、通信制御対象リスト261には、通信制御対象(横取り対象)とされたIPアドレスとMACアドレスなどのアドレス情報がコントローラ27によって登録される。また通信制御対象外とされたアドレス情報がこのリストからコントローラ27によって削除される。
図4に示すように、転送可否リスト262には、転送を許可するための転送条件、例えば2者間のIPアドレスおよびポート、通信の種別がTCPかUDPか等が記憶されている。この例では、10.10.10.1のIPアドレスでTPC通信されてきたものは、転送を許可する。また、10.10.10.54のIPアドレスで54番ポートを利用してUDP通信されるものは転送を許可する。この例では、図1のアドレス設定例から、認証サーバ3とDNSサーバ4への転送が許可されている。
図5に示すように、通信制御条件リスト263は、予め設定された通信横取り条件のリストである。このリストには、通信制御対象のポート番号と通信の種別(TCPかUDPか)が記憶されている。このリストに載っている通信を通信制御部25が横取りする。
図6に示すように、アクセス許可リスト264には、予めアクセスが許可されたMACアドレスが記憶されており、収集部22およびコントローラ27によってアドレス解決が行われる際に参照される。この例では、認証サーバのMACアドレスとDNSサーバのMACアドレスが予め登録されている。
図7に示すように、接続端末管理リスト265は、ネットワークに接続する端末を管理するためのリストであり、ネットワークに接続されている端末のIPアドレスとMACアドレスを関連させて管理する。本リストは、コントローラ27により管理される。
以下、図8のシーケンスチャートを参照してこのネットワーク通信システムの動作を説明する。
ネットワーク5上に、通信制御装置2と、認証サーバ3と、DNSサーバ4が接続されている状況で、クライアント1がネットワーク5に新たに接続され、クライアント1においてブラウザが起動され、ブラウザの画面が開き、予め設定されているスタートページへのアクセス開始要求がネットワーク5へ送信されたものとする。このとき、DNS名は、DNSサーバ4によりIPアドレスに変換される。
クライアント1は、DNSサーバ4により変換されたIPアドレスを基に通信を実施するために、宛先が、自身のネットワーク5と同一であれば、その宛先のMACアドレスを解決するために、ARPリクエストを生成し、送信する(図8のステップ51:以下ステップをSと称す)。
なお、宛先が、自身のネットワーク5とは別のネットワークであれば、デフォルトゲートウェイのMACアドレスを解決するために、ARPリクエストを生成し、そのパケット送信する。
通信制御装置2では、ブロードキャストされたARPリクエストのパケットがNIC110により受信されると、OS基本スタック120へ送られる。
また、この際に、既に起動されているコピー部111によりARPリクエストのパケットがコピーされて記憶部26に記憶される。
記憶部26に記憶されたARPリクエストのパケットは、収集部22により収集されてARPリクエストの送信元、および宛先に対して通信相手が通信制御装置2であるように偽装する。つまり、収集部22は、ネットワーク5上の通信を自己のところに引き寄せるための制御対象判定処理を行う(S52)。そして、収集部22は、制御対象と判定した場合、通信制御用のパケットである偽ARPリプライを送信する(S53)。この一連の動作をARPスプーフィングという。
ARPスプーフィングについて説明する。
収集部22は、ARPリクエストのパケットから送信元のIPアドレスとMACアドレス、宛先のIPアドレスを抽出する。宛先のMACアドレスは無視される。一般的には、本部位は0で埋められる。
収集部22は、受信したARPリクエストについて、アクセス許可リスト264を確認し、アクセス許可がない場合には、ARPリクエストの送信元と宛先をだますために、送信元に対しては、宛先のIPアドレスに対応するMACアドレスを自MACアドレスとして、宛先に対しては、送信元のIPアドレスに対応するMACアドレスを自MACアドレスとしてそれぞれのパケットを生成して送信する。ARPは、リクエスト受信時と、リプライ受信時にそれぞれテーブルに書き込まれるが、後書きが優先されるため、処理を行ってから送信される偽のARPパケットにより、送信元、宛先の端末のARPテーブルがそれぞれ書きかえられる。
なお、ARPスプーフィングの詳細については、「基礎からわかるTCP/IPネットワーク実験プログラミング」(松山公保著・オーム社)第6章等に既に公開されている。
これにより、双方の通信相手のMACアドレスが、通信制御装置2になったために、ユニキャスト通信は、通信制御装置2に対して行われるようになる。
偽ARPリプライを受信したクライアント1は、同一ブロードキャストドメイン内での送信先が、まずは通信制御装置2であると認識するため、MACアドレスの宛先を通信制御装置2に設定し、HTTPリクエストを発信するために、はじめにTCPセッションを張ろうと、SYNパケットを送信する(S54)。
OS基本スタック120では、SYNパケットを受信しても、通常ならば自身のIPアドレスへのパケットではないために、IPスタックで破棄してしまうが、これをTCPジャックの機能を使用して強制的に標準スタックで受信させる(S55)。これをセッションジャックという。
なお、TCPジャックについては、既にいくつかの実装の仕方が公開されており、いずれの方法を利用しても良い。
これにより、クライアント1と通信制御装置2間でTCPセッションが確立し、その後は、続いて送信されてくるHTTPリクエストを受信できる。
HTTPリクエストを受信すると、その内容、宛先、その他の情報に関係なく、所定の事前にインプットされたウェブサーバへのリダイレクト送信するためのページを送信する。送信が終了した時点で、TCPジャックにおいて、設定情報を変更していた場合には、設定を元に戻す。
クライアント1は、通信制御装置2より認証サーバ3へのリダイレクトページを受信したために、認証サーバ3へHTTPリクエストを送信しようとする。
クライアント1のブラウザは、認証サーバ3が同一ドメイン内にいるか、別ネットワークへいるかを判定し、前述したようなロジックにより、接続先のMACアドレスを解決する。このとき、通信制御装置2は、ARPリクエストに対して偽の応答を行い、通信相手を自身宛に変更する制御を行う。
クライアント1は、始めにHTTPリクエストを発信する前にTCPセッションを確立するため、のSYNパケットを送信する(S58)。通信制御装置2では、SYNパケットをNIC110が受信すると、記憶部26にそのコピーが記憶されるので、転送判定部23は、記憶部26から読み出したSYNパケットから抽出した情報(IPアドレス、ポート、TCP/UDP等)と転送可否リスト262とを比較して、転送条件を満たしているかどうかを確認し転送可否を判定する(S59)。
図4に示したように、転送可否リスト262は、例えば2者間のIPアドレスおよびポート、通信の種別がTCPかUDPか等が設定されており、転送判定部23は、この転送可否リスト262の内容で転送を制御しており、その転送条件に合致しているかどうかを確認する。
ここで、今、認証サーバ3のIPアドレスが、図1に示したように10.10.10.1であったとすると、クライアント1からはHTTPリクエストを発信しようとするので、TCP SYNパケットの宛先は通常TCP80番のポートである。
すると、転送可否リスト262の転送条件に合致したため、転送判定部23では、転送許可と判定される。すると、転送判定部23は、SYNパケットを転送部24に渡し、SYNパケットは、転送部24で、宛先が本来の宛先に変更された上で宛先の認証サーバ3へ転送される(S60)。
認証サーバ3は、これを受け、SYN+ACKを返送する(S61)。SYN+ACKもSYN同様に通信制御装置2に対して、一旦は送信されることになる。
通信制御装置2は、これを受信し、転送判定部23により、再び転送可否リスト262との比較処理である転送可否判定が行われる(S62)。
転送可否リスト262は、送信者と受信者の向きをしていない2者間の関係だけを示すリストになっているため、ここでは、リストの設定条件に合致する。
よって、転送部24は、再び、この宛先MACアドレスを正しい宛先MACアドレス(クライアント1のもの)に書き換えて認証用のページをクライアント1へ転送する(S63)。
クライアント1は、これを受信すると、TCPセッションが確立したために、ようやくHTTPリクエストを送信できることになる。これを、SYNを送信した場合と同様のシーケンスに従い、転送部24を介して、認証サーバ3へ転送される。
認証サーバ3は、このリクエストに対して認証ページを返す。このページについても、前述したSYN+ACKと同様のシーケンスに従いクライアント1まで転送される。また、この後、TCPセッションがきるための通信が行われ、SYNやSYN+ACK同様の転送処理により、実行される。
クライアント1は、これを受信すると、ブラウザにより認証ページが表示されるので、ユーザが認証ページに設けられたユーザIDおよびパスワードなどの入力欄に、自身に付与されたユーザIDおよびパスワードを入力し確定操作を行う(S64)。これが、HTTPリクエストとして認証サーバ3へ送信されることになる。
このとき再びTCPセッションをクライアント1と認証サーバ3の間で確立する必要があるために、SYNのパケットが送信され、前記転送処理が行われる。SYN+ACKを受け取ったクライアント1は、HTTPリクエストとしてユーザIDとパスワードをサーバ3へ送信する。
以後、この繰り返しで、通信制御装置2を介した認証サーバ3とクライアント1との通信が行われ、認証サーバ3により認証処理が実施される(S65〜S70)。
ユーザ認証処理の後は、クライアント1と認証サーバ3との通信を横取りする必要がなくなるため、通信制御装置2は、横取り中の通信を解除する必要がある。
横取り中の通信の解除については、所定のトリガで通信制御解除命令を発行するようにしておき、任意のタイミングで、認証サーバ3やその他のサーバなどから通信制御装置2に対して、通信制御解除命令を発行すればよい。
この例では、ウェブ上でユーザ認証を実施したので、認証サーバ3が認証終了時に通信制御解除命令を発行する(S71)。通信制御解除命令は、1台でも全ての機器に対してでも制御できる形にすればよい。
ここで、S71の通信制御解除命令発行動作について説明する。通信制御対象解除命令は、制御対象となっている端末を制御対象から解除するための命令であって、認証サーバ3から通信制御装置2へ送信される命令である。
この通信制御解除命令は、通信制御対象の端末であるクライアント1のIPアドレスと制御情報(制御、解除)を含む。制御情報は、命令中に含まれるIPアドレスへの通信制御の内容を指示するものであり、「解除」、「制御」などが挿入される。
通信制御対象解除命令は、通信制御装置2のコントローラ27によって受信される。通信制御対象解除命令を受信したコントローラ27は、受信したパケットから抽出したIPアドレスをキーにして、通信制御対象リスト261およびアクセス許可リスト264を参照して、MACアドレスを導出し、MACアドレスが通信制御対象リスト261に登録されているか否かを確認する。
制御情報が「解除」の場合には、MACアドレスが通信制御対象リスト261に登録されている場合には該当アドレスをリストから消去し、制御情報が「制御」とされており、かつMACアドレスが通信制御対象リスト261に登録されてない場合にはリストに登録する。収集部22は、通信制御対象リスト261に記載されているものに対しては、通信収集動作を実施するために、通信制御対象リスト261が変更されるのに伴い動作が変わる。
認証サーバ3によってユーザ認証が成功した場合は、通信制御対象解除命令内の制御情報が「解除」になっているために、コントローラ27は、受信された認証サーバ3、クライアントのIPアドレスからMACアドレスを導出した後に、そのMACアドレスを通信制御対象リスト261から削除する。
このようにこの実施形態のネットワーク通信システムによれば、同一ブロードキャストドメイン内に通信制御装置2を設置することで、クライアント1がネットワーク5に接続され、ブラウザを起動させたときに、スタートページの設定いかんによらず、ブラウザの画面にある特定のページ、この例では、認証サーバ3から送られた認証画面を表示させ、ユーザ認証を行った上でイントラネット内のコンテンツにアクセスさせることができる。
(第2実施形態)
以下、図9乃至図15を参照して他の実施形態について説明する。
図9は通信制御装置の通信制御部の内部構成の一つの実施の形態を示すブロック図、図10はIPアドレス・セッション数対応テーブル(一時登録テーブル)を示す図、図11はFIN発信登録テーブルを示す図である。
通信制御部25は、自己宛ての通信でない通信を基本スタックで受信できるように動的に設定する装置であって、処理を決定する制御部210と、動的な設定を実施するJack部220と、動的な設定を解除する後処理部230を有している。
この例では、通信制御部25をソフトウェアで実装したが、ハードウェアで実装してもよい。
制御部210は、受信フレームの宛先アドレスを検出する宛先IPアドレス検出部211と、パケットの内容から実施すべき処理を判定する処理判定部212とを有している。
宛先IPアドレス検出部211は、取得されたフレームから、パケットの宛先を示すIPアドレスを検出(抽出)する。
処理判定部212は、宛先IPアドレス検出部211により検出(抽出)された宛先IPアドレスと、予めメモリに登録された自己のIPアドレスとを比較してパケットの宛先が自己宛てか否かを判定する判定部として機能する。
すなわち、制御部210は、NIC110から渡された受信フレームより宛先IPアドレスを抽出し、抽出した宛先IPアドレスと自身に設定されているアドレスとの比較結果に応じて、処理を実施すべきか否かを判定し、この判定の結果、処理を実施する場合には、予め設定された内容の処理を実行する。
つまり、宛先IPアドレスと自身に設定されているアドレスとが一致した場合は、設定された内容の処理を実行し、不一致の場合は、処理を実行しないと判定する。
設定された内容の処理とは、例えばユーザ認証用の特定ページを、アクセス要求を送ってきた要求送信元の機器(この場合、クライアント1)へ返すような処理である。
Jack部220は、一時登録アドレス確認部222、IPアドレス一時登録部223、およびコピーフレーム再送部224を有している。
一時登録アドレス確認部222は、DB240に記憶された一時登録アドレステーブル241(図10参照)の一時登録アドレスを確認し、既に登録されている場合にはアクティブセッション数を増加させる。
また、一時登録アドレス確認部222は、一時登録アドレスを確認した結果、一時登録アドレステーブル241に一時登録アドレスが登録されていない場合にはIPアドレス一時登録部223を呼び出す。
IPアドレス一時登録部223は、受信フレームの宛先IPアドレスを一時アドレス(Unix(登録商標)系OSでいうAlias:エイリアス)としてOSに登録し、かつOSに登録したIPアドレスをDB240へ格納する。エイリアスとは、OSがそのアドレスとして振る舞うことが可能な2番目のIPアドレス、つまり論理アドレスである。
すなわち、IPアドレス一時登録部223は、処理判定部212により自己宛てでないと判定されたフレームから抽出した宛先IPアドレスをDB240の一時登録アドレステーブル241に登録しつつ宛先IPアドレスをNIC110に割り当てるアドレス登録部として機能する。
コピーフレーム再送部224は、記憶部26にコピーして記憶されたコピーフレームを、自分自身に対して再送する。すなわち、コピーフレーム再送部224は、コピーフレームをNIC110へ送る再送部として機能する。
すなわち、Jack部220は、本来破棄され、処理対象とならない受信したフレームを、OSが自分に送られてきたフレームであるかのように見せかける偽装機能を備えている。
後処理部230は、一時登録アドレス確認部231と、一時登録IPアドレス削除部232とを有している。
一時登録アドレス確認部231は、一時登録アドレスをDB240から検出して、削除するかアクティブセッションを減少させるかを判定する。一時登録IPアドレス削除部232は、一時登録アドレス確認部231により「一時登録IPアドレスを削除する」と判定された場合にOSおよびDB240から一時登録アドレスを削除する。
すなわち、一時登録IPアドレス削除部232は、コピーフレーム再送部224により再送されたフレームがOS標準部分100により受信されてから所定のタイミングで一時登録IPアドレステーブル241に一時登録されたIPアドレスを消去する消去部として機能する。所定のタイミングとは、一時登録アドレス確認部231によりクライアント1の通信終了が検出されたタイミングである。
つまり、一時登録アドレス確認部231は、フレームの送信元の機器であるクライアント1が通信を終了したことを検出する通信終了検出部として機能する。
一時登録IPアドレス削除部232は、一時登録アドレス確認部231により通信終了が検出された場合にそのタイミングで一時登録アドレステーブル241に一時登録されたIPアドレスを消去するアドレス消去部として機能する。
すなわち、後処理部230は、通信終了が検出された、一時登録されたIPアドレスについて、OSおよびDB240より登録内容を削除する削除機能を有している。
一時登録用のアドレス記憶部としてのDB240には、図10に示すように、一時登録を実施しているIPアドレスとアクティブセッション数とを対応付けて格納する一時登録アドレステーブル241が記憶されている。このDB240の機能は、ソフトウェアベースでもハードウェアベースによる実装でもどちらでもよい。
すなわち、通信制御装置2は、ネットワーク5に接続された他の機器から送信された通信開始要求のパケットを受信するNIC110により受信されたパケットから抽出した宛先IPアドレスと予め登録された自己のIPアドレスとを比較してパケットの宛先が自己宛てか否かを判定し、自己宛てのパケットを受信処理する一方、それ以外のフレームについては破棄する基本機能である標準部分100を有するオペレーティングシステムがインストールされた通信制御装置である。
次に、図11を参照して通信制御装置の動作を説明する。ネットワーク環境としては、図1に示したように、クライアント1のIPアドレスを10.10.10.5、通信制御装置2のIPアドレスを10.10.10.2、認証サーバ3のIPアドレスを10.10.10.1、DNSサーバ4のIPアドレスを10.10.10.54とし、通信制御装置2では、TCPポート80を開いてhttpサービスを提供するものとする。
また、通信制御装置2のNIC110は、プロミスキャスモードに設定されているものとする。さらに、クライアント1から発信される通信が、通信制御装置2にも届く場合を考える。
なお、このような環境としては、例えばARPスプーフィングで通信が通信制御装置2に引き込まれるような場合や、ネットワークがリピーターハブでのみ構成されている場合などがある。
上記のような条件下において、クライアント1で起動したブラウザが、ユーザ認証用ページなどのコンテンツを蓄積した認証サーバ3とは異なるページに接続しようとしたケースを考えてみる。この場合、クライアント1は、TCP通信を実施しようとしている。
クライアント1のブラウザは、通信制御装置2のIPアドレス10.10.10.2ではない、別のIPアドレス、例えば10.10.10.10などに対してhttp通信の標準ポートであるTCP80番ポートでアクセスを実施したものとする。このとき、通信は、通信制御装置2に届く。
通信制御装置2では、アクセス要求のパケットがNIC110により受信されると、NIC110によりパケットから読み込まれたフレームがOS基本スタック120に渡される。OS基本スタック120内においては、そのフレームは、初めにL2スタック121に渡される。
L2スタック121は、渡されたフレームから宛先MACアドレスを抽出し(図11のS101)、予め設定されている自身のMACアドレスと比較することで、宛先MACアドレスが自分宛てか否かを確認する。
この確認の結果、宛先MACアドレスが自分宛てではない場合(S102のNo)、L2スタック121は、通常、このフレームを破棄する(S103)。
このネットワーク通信システムにおいては、先に説明したようにプロミスキャスモードに設定するためにこのL2スタック121による検査をパスし、フレームは、L2スタック121からL3スタック122へ渡される。
L3スタック122は、渡されたフレームから宛先IPアドレスを抽出し(S104)、宛先IPアドレスが自分自身のアドレスとして記憶されているものか否かを確認する。この例では、宛先アドレスが10.10.10.2になっているか否かが確認される。
この確認の結果、宛先アドレスが、自分自身のIPアドレス10.10.10.2でない場合(S104のNo)、L3スタック122は、このパケットを破棄する。通常、L3レベルでは、L2におけるプロミスキャスモードのような機能は存在しないため、宛先IPアドレスが自分自身であった場合(S104のYes)、L3スタック122は、受信パケットをL4スタック123に渡す。
L4スタック123は、渡されたパケットからポート番号を抽出して、抽出したポート番号から既存のどのポート宛の通信かを判定し、該当するポートを利用するアプリケーションへ通信を渡す。
この例では、宛先アドレスが10.10.10.10であるために、通信制御装置2のアドレス10.10.10.2と異なっていることから、L3スタック122においてこのパケットは破棄されることになる。
よって、L4スタック123の上に位置するアプリケーションは、この通信では、クライアント1に対してサービスを実施することができない。
続いて、図12のフローチャートを参照して、基本スタックによりサービスを提供するための、通信制御部25の処理動作を説明する。
通信制御部25内では、RAWSocketなどと呼ばれるモニタリング機能が動作しており、NIC110で受信されるパケットを常にモニタリングしており、NIC110によりフレームが読み込まれると、そのフレームを取得する。この他、モニタリング機能としては、BPFなどもある。RAWSocketにより取得されたフレームは、制御部210により読み込まれる(S201)。
制御部210では、処理判定部212において実施処理の判定が行われる。この場合、宛先IPアドレス検出部211は、RAWSocketから読み込んだフレームから宛先IPアドレスを抽出し、宛先IPアドレスが、予め登録されている自分のIPアドレスであるかどうかを確認することで、自分宛の通信か否かを判定する(S202)。この例の場合、抽出した宛先IPアドレスが10.10.10.2であるか否かが確認される。
この確認の結果、自分宛の通信である場合(S202のYes)、宛先IPアドレス検出部211は、読み込んだフレームをそのまま破棄する。
一方、自分宛でない場合(S202のNo)、宛先IPアドレス検出部211は、続いてTCPパケットの種類を判別する(S203)。なお、ここで言う自分宛のIPアドレスとは、一時登録のIPアドレスを含まない。
TCPパケットの種類としては、例えばTCP SYN、TCP FIN、TCP RSTなどがある。TCPでは、まずクライアント1がアクセス対象のサーバに対してTCP SYN、つまり「SYNパケット」を送り、該当サーバがクライアント1に対してTCP ACK、つまり「ACKパケット」を返信し、最後にクライアント1がサーバにACKパケットを送ることで接続が確立する。最後にクライアント1からTCP RST、つまり「RSTパケット」(リセット)を送信することにより、接続を中断する。TCP FINは、接続が終了したことを通知するパケット、つまり「FINパケット」である。
TCPパケットの種類が、例えばTCP SYNである場合(S203のSYN)、宛先IPアドレス検出部211は、Jack部220へフレームを渡す。
FINもしくはRSTの場合(S203のFIN or RST)、宛先IPアドレス検出部211は、後処理部230へフレームを渡す。その他の場合、フレームは破棄される。なお、このとき、処理対象のTCPポートを予め設定しておき、ポート単位で本サービスを実施するようにしても良い。
まず、TCPパケットの種類がTCP SYNである場合(S203のSYN)のJack部220の動作を説明する。
Jack部220では、フレームを受け取ると、一時登録アドレス確認部222が、DB240を参照して、受け取ったフレームの宛先IPアドレスが、既に一時登録されているか否かを確認する(S204)。
この確認の結果、DB240にあて先IPアドレスが既に一時登録されている場合(S204のYes)、一時登録アドレス確認部222は、DB240のアクティブセッション数を1つ増加させて(S205)、フレームを破棄した後、終了する。
また、上記確認の結果、DB240に宛先IPアドレスが一時登録されていない場合(S204のNo)、コピー部111によりフレームがメモリの一時領域にコピーされる(S206)。これと同時にIPアドレス一時登録部223が呼び出される。呼び出されたIPアドレス一時登録部223は、一時アドレスとしてOSに宛先アドレスを登録する(S207)。この例の場合、IPアドレス10.10.10.10がエイリアス(2番目のIPアドレス)としてOSに一時登録される。
アドレス一時登録部223は、OSにIPアドレス10.10.10.10を一時登録した後、DB240へ一時登録アドレスを格納する(S208)。このとき、DB240上の一時登録アドレステーブル241には、例えば図10に示すように、ID3の欄にIPアドレスが10.10.10.10と登録され、このときのアクティブセッション数である1が登録される。
最後にコピーフレーム再送部224は、記憶部26の一時領域にコピーしておいたフレームをRAWSocketやBPFなどを用いて直接送信する(S209)。
すると、OSの標準部分100においてNIC110によりフレームが受信されて基本スタック120で処理される(S210)。
基本スタック120では、L2スタック121は、プロミスキャスモードで稼動しているため、そのままフレームを受信し、L3スタック122へ渡す。
DB240上の一時登録アドレステーブル241には、一時登録アドレスとして10.1.1.2が既に登録されているため、L3スタック122は、そのパケットを自分自身に宛てられたパケットとして認識し、L4スタック123へ渡す。
L4スタック123は、渡されたパケットを通常のTCP SYNとして読み込んでいるため、TCPコネクションを構築するためにSYN,ACKをクライアント1へ返す。この後、クライアント1側からの通信は、OS基本スタック120で標準的に読み取られ、通信が可能となる。
次に、受信されたパケットがTCPパケットであり、その種類がTCP FINである場合(S203のFIN or RST)の後処理部230の動作を説明する。
なお、HTTPにおいては、TCPセッションは、必ず通信制御装置2側からFINが発信され、通信制御装置2側の通信をハーフクローズした後にクライアント1側からFINが発信され、クライアント1側からの通信をクローズする仕様になっている。これを前提に以下の説明を行う。
受信されたパケットが、TCP FINのパケットであった場合(S203のFIN orRST)、そのフレームは後処理部230に渡される。
後処理部230では、フレームを受け取った一時登録アドレス確認部231により、宛先IPアドレスが抽出され、抽出された宛先IPアドレスをキーワードにしてDB240を参照して、一時登録アドレステーブル241に一時登録済みのものか否かを確認する(S211)。
この確認の結果、一時登録済みでない場合(S211のNo)、一時登録アドレス確認部231は、このフレームを破棄する(S212)。また、一時登録済みである場合(S211のYes)、一時登録アドレス確認部231は、DB240の一時登録アドレステーブル241のアクティブセッション数を1減少させる(S213)。
そして、一時登録アドレス確認部231は、一時登録アドレステーブル241のアクティブセッション数を減少させた結果、現在のアクティブセッション数が0になったか否かを確認する(S214)。
この確認の結果、現在のアクティブセッション数が0でない場合(S214のNo)、一時登録アドレス確認部231は、フレームを破棄し(S212)、このまま処理を終了する。
また、現在のアクティブセッション数が0である場合(S214のYes)、一時登録アドレス確認部231は、一時登録アドレステーブル241の該当アドレスを削除するために、一時登録IPアドレス削除部232を呼び出す。
この例の場合、一時登録アドレステーブル241に登録されていたIPアドレス10.10.10.10は、一時アドレスであり、これに対するFINを受け取るため、一時登録アドレス確認部231は、DB240上の一時登録アドレステーブル241のIPアドレスリストの10.10.10.10に関するアクティブセッションを1つ減らす。この結果、アクティブセッションが0となり、削除対象とされることになる。
一時登録IPアドレス削除部232は、所定の時間待機した後、DB240上の一時登録アドレステーブル241を参照してアクティブセッション数が0であることを再度確認してから、削除対象のIPアドレス(エイリアス)をOSから削除すると共に(S215)、DB240上から10.10.10.10に関するレコードを削除する。
なお、ここで、所定の時間待機するのは、TCPセッションを正しくクローズさせるためである。TCPにおいてFINをクライアント1から受信した後、通信制御装置2からACKを返す必要があり、ACKを確実に返すために、一時アドレスの削除に対して待機をかける必要がある。
この例の場合であれば、所定の時間待機した後、アクティブセッションが0であることが確認できることから、削除対象のIPアドレスをOSから削除すると共に、DB240から削除する。
このようにこの第1実施形態のネットワーク通信システムによれば、通信制御装置2の通信制御部25にJack部220を設け、クライアント1から他の機器へ宛てて送信されたフレームが受信されたとき、そのフレームから抽出した宛先IPアドレスをDB240の一時登録アドレステーブル241に登録した後、コピーしたフレームを再送し、他の機器に成りすまして応答を返した後で、所定のタイミングで一時アドレスを削除することで、OSの基本スタックを変更することなく、他の機器に対する通信を一時的に自分への通信のように扱うことができる。
具体的には、例えばホテルなどにおいて、内部のネットワーク(イントラネット)のLANポートにPCが接続され、PCのブラウザが起動したときにブラウザを強制的に認証サーバへアクセスさせて、ログイン画面をブラウザに表示させてユーザ認証を行ってから、ネットワーク5上のコンテンツへアクセスさせたり、または外部のインターネットへアクセスさせることができる。
つまり、PCから初めにネットワーク5上の他の機器へアクセス要求が行われた場合にそれを通信制御装置2へ誘導し、ユーザ認証用のページを返すといった制御を行うことができる。
(第3の実施形態)
上記第2の実施形態の一時アドレス削除手法によると、TCPのハーフクローズをサポートできない。
すなわち、クライアント1側からのFINを検知しているため、クライアント1側からソケットクローズが実施された場合に、初めにクライアント1側のコネクトがクローズされるために、通信制御装置2側からのFINが発信される前に一時アドレスの削除が行われる可能性がある。
この結果、一時アドレスが削除された場合には、ソケットのクローズ処理が実行できなくなる可能があると共に、一時アドレスの削除が失敗する可能性もある。
そこで、この第2の実施形態では、DB240に、図13に示すように、各一時登録アドレスに対する通信制御装置2側からのFIN発信と、クライアント1側からのFIN発信とを管理するためのFIN発信管理テーブル242を設ける。このFIN発信管理テーブル242は、ネットワーク5上の機器のTCPセッションのシャットダウン状況を確認(管理)するためのテーブルである。
つまり、このFIN発信管理テーブル242は、送信側の機器であるクライアント1のFIN発信と自己からのFIN発信とを対応させて管理するための管理テーブルである。一時登録アドレス確認部231は、FIN発信管理テーブル242においてクライアント1と自己のFIN発信が共に生じたタイミングで通信の終了を検出する。
このFIN発信管理テーブル242に、通信制御装置2側からのFIN発信とクライアント1側からのFIN発信とが記憶された場合、一時登録アドレス確認部231は、コネクションが完全クローズしたものと判定し、一時登録IPアドレス削除部232を呼び出すものとする。
すなわち、一時登録アドレス確認部231は、FIN発信管理テーブル242を参照することで、コネクションが完全クローズした場合に限り、FIN発信管理テーブル242より該当エントリを削除すると共に、図10における一時登録アドレステーブル241の該当IPアドレスのアクティブセッション数を1つ減少させる。
そして、呼び出された一時登録IPアドレス削除部232は、アクティブセッション数が0になったことを確認した上で、一時登録されたIPアドレスを一時登録アドレステーブル241より削除する。
このようにこの第3実施形態のネットワーク通信システムによれば、第1実施形態では、通信制御装置2側からのFINが発信される前に一時アドレスの削除が行われる可能性があり、この場合、ソケットのクローズ処理や一時アドレスの削除処理が失敗に終わる可能性もあるが、FIN発信管理テーブル242を設けて、通信制御装置2側とクライアント1側のFIN発信状況を監視することで、コネクションが完全クローズした場合に限り該当エントリを削除できるようになり、動作不良に陥ることがなくなる。
(第4の実施形態)
上記第2および第3の実施形態においては、いずれもTCPを用いた通信を前提としていたため、UDPのようなコネクションレスの通信に関しては、上記手法を使用することができなかった。
そこで、この第4の実施形態では、UDPのようなコネクションレスの通信に対応可能とするようシステムを構成する。
すなわち、この第4の実施形態のネットワーク通信システムは、図14に示すように、後処理部230に削除命令受信部233を備えると共に、DB240には、図10の一時登録IPアドレステーブル241にUDPフィールドを追加した形の一時登録IPアドレステーブル241a(図15参照)を設ける。なお、図14において図9と同じ構成について同一の符号を付しその説明は省略する。
この他、図9に示した実施形態と異なる構成は、制御部210内の処理判定部212において、TCPパケットのみではなく、UDPパケットも検知するようにし、Jack部220において、IPアドレス一時登録部223は、位置アドレスをメモリに登録するようにする。
すなわち、この第3の実施形態は、制御部210と後処理部230の機能の関連付けがなくなり、その代わりに後処理部230に削除命令受信部233を増設したものである。
削除命令受信部233は、他プロセスなどの外部から一時登録IPアドレスの削除要求を受け付ける機能であり、削除要求が受信されたタイミングで、通信の終了を検出し、一時登録IPアドレステーブル241aに一時登録されたIPアドレスを削除する。
図15に示すように、一時登録IPアドレステーブル241aは、一時登録されるIPアドレスおよびセッション数などのフィールドの他に、UDPフィールドを有し、UDP通信によって、新たな位置アドレスがメモリに登録された場合に、Jack部220のIPアドレス一時登録部223により、一時登録IPアドレステーブル241aの該当UDPフィールドにフラグが立てられる。その他の動作は、第1の実施形態と同様である。
ここで、一時アドレス削除処理を実施するときの詳細動作について説明する。例えばクライアント1などの外部機器より一時登録IPアドレスの削除要求があったものとする。この削除要求には、少なくとも削除するIPアドレスが含まれていなければならない。
削除命令を受け取った削除命令受信部233は、受信したIPアドレスを一時登録アドレス確認部231へ渡す。
一時登録アドレス確認部231は、渡されたIPアドレスをキーワードにしてDB240を参照し、IPアドレス10.10.10.5に対する削除命令であれば、DB240におけるステータスは、UDPによる登録であることが記述されているために、外部からの命令により消去されるものと判定する。
この例では、外部から、IPアドレス10.10.10.5に対する消去命令が受信されているので、一時登録アドレス確認部231は、一時登録IPアドレス削除部232に対して消去要求を送出する。
つまり、外部から消去命令が来ているので、そのIPアドレスは、既に利用が終了しているものと判断できるので、消去要求を受け取った一時登録IPアドレス削除部232は、削除対象のIPアドレスをOSから削除すると共に、DB240からIPアドレス10.10.10.5に関するレコードを削除する。
このようにこの第4実施形態のネットワーク通信システムによれば、一時登録したIPアドレスに対する消去命令を外部から受信する削除命令受信部233を設けたことで、削除命令を受信した段階でそのIPアドレスは、既に利用が終了しているものと判断できるので、消去要求を受け取った削除対象のIPアドレスを不具合なく安全に消去することができる。
1…クライアント、2…通信制御装置、3…認証サーバ、4…DNSサーバ、5…ネットワーク、21…パケット判定部、22…収集部、23…転送判定部、24…転送部、25…通信制御部、26…記憶部、100…OS標準部分、110…ネットワーク・インターフェース・カード(NIC)、111…コピー部、120…OS基本スタック、121…L2スタック、122…L3スタック、123…L4スタック、130…アプリケーション、200…通信制御部、210…制御部、211…宛先IPアドレス検出部、212…処理判定部、222…一時登録アドレス確認部、223…アドレス一時登録部、224…コピーフレーム再送部、230…後処理部、231…一時登録IPアドレス確認部、232…一時登録IPアドレス削除部、233…削除命令受信部、241…一時登録IPアドレステーブル、241a…一時登録IPアドレステーブル、242…FIN発信管理テーブル。