(58)【調査した分野】(Int.Cl.,DB名)
LAN側インターフェースとWAN側インターフェースと、その間を繋ぐL3ブリッジ部と、DNSクエリーパケットを処理するDNS処理部と、テーブルを記録可能な記憶部とを有する中継装置に対して、
上記記憶部に、上記中継装置を通過するDNSクエリーパケットのうち、中継装置自身を指定したパケットのドメインを記録して、それに対するDNSレスポンスを遮断するロック状態である情報を保持するアドレスロックテーブルと、
上記アドレスロックテーブルにおいてロック状態にあるドメインの記録が一つも存在しなければ通過を許可する値とし、ロック状態にあるドメインの記録が一つ以上存在すれば通過を制限する値とするスイッチテーブルと、
を設け、
上記L3ブリッジ部を
上記LAN側インターフェースから受信したDNSクエリーパケットを上記WAN側インターフェースに転送することと並行して、当該DNSクエリーパケットをコピーして上記DNS処理部へ受け渡すクエリー中継コピー手段と、
上記WAN側インターフェースからDNSレスポンスを受信した際に、当該DNSレスポンスに含まれるドメインが上記アドレスロックテーブルに記録されてロック状態であれば当該DNSレスポンスのパケットを破棄する該当パケット破棄手段と、
上記中継装置自身の名前の解決を要求するDNSクエリーパケットの送信元へ、上記中継装置自身のアドレスを含むDNSレスポンスを送信する自己アドレス通知手段と、
上記WAN側インターフェースからDNSレスポンスを受信した際に、上記スイッチテーブルを参照するスイッチ確認手段と、
上記スイッチテーブルが通過を許可する値であれば当該DNSレスポンスを速やかにL3ブリッジしてLAN側インターフェースに転送するスイッチ参照転送手段と、
して機能させ、
上記DNS処理部を、
受け取ったDNSクエリーパケットが中継装置自身のアドレスを解決するためのものであるか否かを判断するクエリー判断手段と、
上記クエリー判断手段で中継装置自身のアドレス解決のためであると判断されたDNSクエリーパケットの送信元アドレスへ、DNSの名前を解決するDNSレスポンスを生成する自己アドレス指定手段と、
上記アドレスロックテーブルに、上記クエリー判断手段で中継装置自身のアドレス解決のためであると判断されたDNSクエリーパケットのドメインを記録してロック状態とするロックドメイン記録手段と、
上記アドレスロックテーブルの記録のうち、遮断の必要がなくなったドメインについて、上記ロック状態を解除するロック解除手段として機能させるためのプログラム。
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、一旦L3ブリッジとして設定した中継装置に対して、LAN側の配下端末から設定画面のwebページを要求する場合にドメインネームでアドレスを指定しても失敗する場合がある。ドメインネームでのアクセスにあたって、配下端末はまずDNSの名前を解決するために、DNSパケットを送信するが、L3ブリッジとなっている中継装置はこれをブリッジしてしまい、主に事業者が管理する上位のDNSサーバに送られてしまう。上位のDNSサーバは要求された中継装置の設定画面のドメイン情報を持っていないため、結果として中継装置を指定しようとするDNSの名前を解決する要求に応じることはできない。このため、L3スイッチ化した中継装置自体を指定することができないため、ドメインネームにより設定画面を呼び出すことはできない。
【0008】
これを解決するには、DNSサーバに個々のホームゲートウェイ用中継装置のドメイン情報を載せることでDNS解決を行うことが考えられる。しかし、ドメインに対して登録できるアドレスには数が限られており、DNSサーバに、返却しうる全てのホームゲートウェイ用中継装置のアドレスを登録することは、現実的ではない。
【0009】
また、別の方法としては、ホームゲートウェイ用中継装置をL3ブリッジに設定する際に、実際にはプロキシとして動作するように設定することが考えられる。プロキシとすれば、DNSの名前の解決の要求に対して、DNSサーバとして振る舞うことができるので、配下端末から中継装置自身を指定するドメインネームの要求があった場合には自身のIPアドレスを返答することで、ドメインネームによるアクセスが可能となる。しかし、プロキシとして動作させるには、全てのパケットを一旦中継装置で終端し、再生成することになるので、スループットの低下は避けられず、中継装置の処理負荷も大きくなるため、装置の能力を上げなければならない場合もある。さらに、プロキシとして活動させてしまうのは、事業者の提供するサービスの区分上、より機能の多いサービスとの差別化を難しくしてしまうことにもなりかねない。
【0010】
ところで、ドメインネームでのアクセスは不可能であるが、L3ブリッジ化しても多くの中継装置はIPアドレスを内部に保有しているため、IPアドレスを直打ちして指定すれば設定画面のwebページを呼び出すことは可能である。だが、IPv4でも初心者にとっては困難であったIPアドレスの直打ちによる指定は、可読性の低いIPv6アドレスが主流となった場合にはさらに困難になってしまう。
【0011】
さらに他の方法としては、物理的な初期化を実行することでルータモードに切り替えることが出来る中継装置もあるが、その他ユーザが設定した設定値を含めて初期化されてしまうためユーザの利便性を損なうことが多い。
【0012】
そこでこの発明は、ホームゲートウェイ用中継装置がL3スイッチとして働く際に、スループットをできるだけ低下させずに、ドメインネームによる自身宛の設定画面の要求に応答可能にして、利用者の利便性を向上させることを目的とする。
【課題を解決するための手段】
【0013】
この発明は、
LAN側インターフェースと、WAN側インターフェースと、それらの間を中継するL3ブリッジ部とを有する中継装置であって、
LAN側インターフェースから受信したDNSクエリーパケットをWAN側インターフェースに転送するとともに、当該DNSクエリーパケットを解析し、解析した結果、当該中継装置自身を指定するDNSクエリーパケットであれば、当該中継装置自身のIPアドレスを含むDNSレスポンスをDNSクエリーパケットの送信元アドレス宛に返送し、その返送に前後して、WAN側インターフェースから受信する外部のDNSサーバから返送された当該DNSクエリーパケットに対するDNSレスポンスを遮断する、中継装置により上記の課題を解決したのである。
【0014】
すなわち、DNSクエリーパケットが中継装置自身のアドレス解決を要求するものであれば、中継装置自身がDNSサーバとして中継装置自身のIPアドレスを伝えることで、要求元が中継装置自身をドメイン名により指定することが可能になる。
一方で、パケットを全て止めた上で解析するのではなく、基本的に全てのパケットをWAN側に転送することで、スループットの低下を防ぐものとする。並行して、DNSクエリーパケットについてはパケットを内部にコピーすることで、その応答がWAN側インターフェースの先にあるDNSサーバから戻ってくる間に、当該DNSクエリーパケットの解析と必要に応じた応答を進めてしまうことができる。そして、当該DNSクエリーパケットが中継装置自身を指定するものであれば、WAN側インターフェースの先にあるDNSサーバはDNSレスポンスとしてエラーを返すが、これを中継装置が遮断することで、LAN側の端末にエラー情報が届くことを防ぎ、中継装置自身が送ったIPアドレスのみが伝わることになる。
【0015】
この発明を具体的に実現する形態としては、
LAN側インターフェースと、WAN側インターフェースと、それらの間を中継するL3ブリッジ部とを有する中継装置であって、
DNSクエリーパケットを処理するDNS処理部と、
中継装置を通過するDNSクエリーパケットのうち、中継装置自身を指定したパケットのドメインを記録して、当該DNSクエリーパケットに対するDNSレスポンスを遮断するロック状態である情報を保持するアドレスロックテーブルと、
上記アドレスロックテーブルにおいてロック状態にあるドメインの記録が一つも存在しなければ通過を許可する値とし、ロック状態にあるドメインの記録が一つ以上存在すれば通過を制限する値とするスイッチテーブルと、
を有する中継装置とし、
上記L3ブリッジ部は、
上記LAN側インターフェースから受信したDNSクエリーパケットを上記WAN側インターフェースに転送するとともに、当該DNSクエリーパケットをコピーして上記DNS処理部へ受け渡す、クエリー中継コピー手段と、
上記WAN側インターフェースからDNSレスポンスを受信した際に、当該DNSレスポンスに含まれるドメインが上記アドレスロックテーブルに記録されたロック状態である情報に該当すれば当該DNSレスポンスのパケットを破棄する該当パケット破棄手段と、
上記中継装置自身の名前の解決を要求するDNSクエリーパケットの送信元アドレスへ、上記中継装置自身のアドレスを含むDNSレスポンスを送信する自己アドレス通知手段と、
上記WAN側インターフェースからDNSレスポンスを受信した際に、上記スイッチテーブルを参照するスイッチ確認手段と、
上記スイッチテーブルが通過を許可する値であれば当該DNSレスポンスを速やかにL3ブリッジしてLAN側インターフェースに転送するスイッチ参照転送手段と、
を有し、
上記DNS処理部は、
受け取ったDNSクエリーパケットが中継装置自身のアドレスを解決するためのものであるか否かを判断するクエリー判断手段と、
上記クエリー判断手段で中継装置自身のアドレス解決のためであると判断されたDNSクエリーパケットの送信元アドレスへ、中継装置自身のIPアドレスを含むDNSの名前を解決するDNSレスポンスを生成する自己アドレス指定手段と、
上記アドレスロックテーブルに、上記クエリー判断手段で中継装置自身のアドレス解決のためであると判断されたDNSクエリーパケットのドメインを記録してロック状態とするロックドメイン記録手段と
上記アドレスロックテーブルの記録のうち、遮断の必要がなくなったドメインについて、上記ロック状態を解除するロック解除手段を有する
中継装置によって、実現可能である。
【発明の効果】
【0016】
この発明により、ホームゲートウェイ用中継装置をL3スイッチとして使用する際にもスループットの低下を防ぎながら、端末からの容易な設定変更が可能となる。これにより、設置しておけばその後に当該中継装置が有する他の機能を使用するさらなるサービスを享受する契約への変更が容易にできるので、設置者にとっても事業者にとっても応用しやすくなる。
【発明を実施するための形態】
【0018】
以下、この発明について具体的に説明する。
この発明は、LANとWANとの間に設けられる中継装置である。基本的には一般家庭や小規模事業者などのLANにおいて用いられるホームゲートウェイとして利用可能な中継装置を対象とする。すなわち、大規模ネットワークで用いるような高度な演算能力を備えた中継装置ではない。中継装置としては、L3スイッチとして動作する際には、基本的にはルーティングやアドレス変換などの処理を行わないものである。ただし、これらの機能を備えたルータが設定変更によりL3スイッチとして動作するモードに切り替え可能である場合に、本発明にかかる中継装置に含まれる。このような設定変更をLAN側から行えるようにするための発明である。
【0019】
この発明にかかる中継装置1の機能ブロック図を含む周囲のネットワーク構成図を
図1に示す。家庭内ネットワークや小規模事業者ネットワークなどであるLAN5内には、中継装置1にアクセスして設定変更を行うことができるHTTPクライアント機能を有する端末2が設けられている。具体的には、webブラウザをインストールしたパソコンやタブレット、スマートフォンなどである。外部ネットワークであるWAN6は、通信事業者網やインターネットなどを含み、ネットワーク内のアクセスできる環境にDNSサーバ3が設けられ、端末2がwebアクセスをする際に問い合わせ可能となっている。
【0020】
また、LAN5側、WAN6側にその他の機器が設けられていてもよい。例えば、WAN6側にエッジルータ7を介した上で外部ネットワークに接続されていても良い。この場合、実際には当該エッジルータ7によって区切られるLAN5内に中継装置1が存在することになる。以後、この状態を例にとり説明する。
【0021】
中継装置1は、LAN5に繋がるLAN側インターフェース21と、WAN6に繋がるWAN側インターフェース22とを有し、その間を繋ぐL3ブリッジ部11を有する。また、L3ブリッジ部11からパケットを受け渡されるDNS処理部12を有する。これらは、演算部(図示せず)によって実行されるプログラムでもよいし、又は当該機能を有するハードウェアにより実装するものでもよい。
【0022】
また、中継装置1は記憶部17を有する。記憶部17自体は揮発性メモリでも不揮発性メモリでもよいが、この発明で用いる後述のテーブルには基本的に揮発性メモリを用いるとよい。記憶部17には少なくとも一つのテーブルが設けられており、DNS処理部12及びL3ブリッジ部11から参照又は書き換え可能である。
【0023】
DNS処理部12は、中継装置1自体を指定するDNSクエリーパケットを受け取ったときに、自身でDNSの名前の解決をして端末2に返答するとともに、DNSサーバ3からの当該DNSクエリーパケットに対する応答であるNoSuchName応答パケットは端末2に送らずに自らで遮断する。このため、中継装置1自身を指定するパケットを受け取った際には、その内容を記憶部17に記録しておき、L3ブリッジ部11がWAN側インターフェース22からの応答パケットを受け取ったときに、その記録を参照して必要に応じてパケットを遮断できるようにしておく。具体的には、記憶部17に必要に応じたテーブルを作成する。
【0024】
アドレスロックテーブル14は、DNSクエリーパケットをDNS処理部12が受け取った際に、そのDNSクエリーパケットが中継装置1自身の有する画面を要求するドメインについて名前の解決を求めるものであった場合に、DNSサーバ3からのNoSuchName応答パケットを破棄するためのブロック対象アドレスを記載したテーブルである。このテーブルの例を
図2に示す。受け取ったDNSクエリーパケットの宛先であるDNSサーバ3のアドレスと、リクエストされた中継装置1自身を示すドメインとの組み合わせについて、当該ドメインについて問い合わせたDNSクエリーパケットが、L3ブリッジ部11を通過した件数を、返答が来るまでカウントしておくロック回数と、タイムアウト時間であるタイマーとを有する。
【0025】
このアドレスロックテーブル14では、端末2が複数存在する場合など、複数のDNSサーバ3に対してDNSクエリーパケットが送られることがある。全てのDNSサーバ3についてのリクエストをまとめても処理可能であるが、中継装置が指定した以外のDNSサーバからのパケットであるか否かを速やかにL3レベルで判断して、効率的にパケットを処理するために、DNSサーバ3ごとにエントリを設けておく方が好ましい。
また、リクエストドメインは単数であることも多いが、例えば中継装置1が対応するサービスごとに異なるドメインを自身に割り当てる場合などには、複数種類のドメインが中継装置1自身を示すアドレスとしてテーブルに並ぶ。
さらに、画面表示に対してクリックが連発された場合や、複数の端末2から1分程度以下の短時間に中継装置1自身を指定するDNSクエリーパケットが送信された場合など、同一のドメインについての問い合わせが並行して中継装置1を通過した場合に、それぞれのDNSクエリーパケットに対してDNSレスポンスが来るため、通過した当該DNSクエリーパケットに対するDNSレスポンスのそれぞれをカウントしてロックの設定と解除ができるように、ロック回数をカウントしておくと好ましい。また、DNSクエリーパケットがUDPで送られた場合、DNSサーバ3からの返答が無い場合もあるため、タイムアウトする時間を経過したらロックを解除できるようにしておく。このタイムアウト時刻は、例えば一のドメイン名について最後のリクエストが到着してから1分後にして、その時間を経過したらエントリを削除するという方式が挙げられる。また、予め定めた秒数をデクリメントしていく方式でもよい。
【0026】
設定画面ドメインテーブル13は、要求されたドメインが中継装置1自体を指すものであるか否かを参照するためのテーブルである。また、中継装置1自身を示すドメインが複数ある場合に、個々のドメインが指定することになる画面の種類を識別するためのテーブルである。この設定画面ドメインテーブル13の例を
図3に示す。ドメインが複数ある場合とは、大規模なWEBサーバを運用しているサービス事業者が複数のHTTPサーバーを提供している場合や、ホームゲートウェイのように単純にHTTPクライアントから指定された場合の一般用(図中「Native」で示す)に加えて、中継装置がWebサーバとして実行するJava(登録商標)が提供する画面や、ルータライブラリ用のドメインなどが挙げられる。
図3中では「Native」が一般用の画面(ページ)を呼び出すことを指示し、「Java」がJava専用の保持画面(ページ)を呼び出すことを指示するものである。これらのロケーションの違いを発揮させるには、例えば、端末に対して自己のアドレスを通知する際に指定されるべきポート番号を、Nativeであれば80番ポートにし、Javaであれば8080番ポートを指定するといった形態で変更することにより、提供するWebページを変えることができる。この設定画面ドメインテーブル13と、それに付随するポート番号などの設定を参照することにより、Native側からそれ以外のWebサーバ機能のアドレスを判別したり、逆に他のWebサーバ機能から、Native側の機能のアドレスを判別したりすることが可能となる。なお、中継装置1を示すドメインが一つだけである場合、
図3のような区分を有するテーブルの代わりに、ドメインの値のみのテーブル、又は変数であればよい。
【0027】
スイッチテーブル15は、L3ブリッジ部11がDNSレスポンスをWAN側インターフェース22から受信した際に、当該パケットを通過させるか、DNS処理部12の処理に引き渡すかを決定するテーブルである。その例を
図4に示す。基本的には一項目のみであり、デフォルトは通過可能(図中「OK」で示す)である。また、1又は0の1ビットの変数として記録しておいてもよい。この項目は、アドレスロックテーブル14のロック回数に対応しており、全てのドメインの記録のロック回数が0である場合には、DNS処理部12で処理する必要が無いので、通過可能となる。アドレスロックテーブル14のテーブルを全て走査していると処理負荷が大きすぎるため、ロックがかかっていない場合はスイッチテーブル15の値のみを参照することで通過可能とすることで、スループットを維持することができる。DNS処理部12がアドレスロックテーブル14を参照して変更可能とし、L3ブリッジ部11からは閲覧のみ可能にしておくとよい。または、通過可能の値となっているときは、無条件で通過させるようにしてもよい。
【0028】
この発明にかかる中継装置1の実施形態例の処理フローを、
図5以降のフロー例を用いて説明する。
まず(S101)、LAN側インターフェース21からパケットを受信したL3ブリッジ部11は(S102)、取得したパケットのL3レイヤを確認するL3レイヤ確認手段116を実行する(S103)。このL3レイヤ確認手段として、次のS104及びS106を行う。まず、L3レイヤのアドレスが、中継装置1自身を示すIPアドレスであるか否かを判断する(S104)。中継装置1自身を示すIPアドレスであれば(S104−Yes)、下記の一連の手順を経てDNSの名前の解決がされた後に直接に端末2からアクセスされたパケットであるため、ポート番号に応じて自身の各モジュールに引き渡して設定画面の選択及びその送信といったルーティング処理を行う(S105)。
【0029】
一方、L3レイヤの宛先アドレスが中継装置1自身でない場合は(S104−No)、さらに、L3レイヤのプロトコル番号がDNSか否かを確認する(S106)。DNSでなければ(S106−No)、L3ブリッジ部11はそのまま中継して構わないため、WAN側インターフェース22にパケットを転送する(S108)。一方、L3レイヤのプロトコル番号がDNSであった場合(S106−Yes)、すなわち、DNSクエリーパケットである場合は、DNS処理部12は当該パケットをコピーしてDNS処理部12に受け渡す(S107)とともに、WAN側インターフェース22へ転送する(S108)クエリー中継コピー手段111を実行する。これにより、中継装置1としての転送は時間をかけずに行われる一方で、DNSクエリーパケットについては次のフローに記載のようにDNS処理部12で処理する並行作業が可能となる。
【0030】
次に、S107でDNSクエリーパケットを受け渡されたDNS処理部12での処理について
図6のフロー例を用いて説明する。L3ブリッジ部11からコピーされたDNSクエリーパケットを受けとると(S112)、当該DNSクエリーパケットが中継装置1自身のアドレスを解決するためのものであるか否かを判断するクエリー判断手段121を実行する。具体的にはまず、当該DNSクエリーパケットの宛先IPアドレスとドメインを抽出する(S113)。ここで、宛先IPアドレスは、基本的には端末2が使用するDNSサーバ3になる。抽出したドメインを、設定画面ドメインテーブル13に記録されたドメインと比較する(S114)。なお、設定画面ドメインテーブル13が無い場合は、この代わりに中継装置1を示すドメインを格納した固定の値を参照する。まとめて設定画面ドメインテーブル13として説明する。このドメインが中継装置1の保持する画面を指定するものである場合には(S115−Yes)、S116以降の処理へ移る。該当しなければ(S115−No)、WAN6上の他のサーバについてのDNSの名前を解決するものであり、DNSサーバ3が応答できるものであるので、そこでDNS処理部12の処理は終了する。ここまでがクエリー判断手段121である。
【0031】
上記の抽出したドメインが該当する場合、当該DNSクエリーパケットがDNSサーバ3に到達し、その応答によって返ってくるDNSレスポンスを遮断する必要がある。そのために、遮断しなければならないDNSサーバ3からのレスポンスに対応する情報を登録する、ロックドメイン記録手段123を実行する。具体的にはまず、当該DNSクエリーパケットの宛先IPアドレスとドメインの組み合わせが、アドレスロックテーブル14に登録済みのエントリに該当するか否かを判断する(S116)。
登録済みでなければ次に割り込みの処理として、アドレスロックテーブル14に、登録済みのエントリが存在するか否かを判断する(S117)。もしエントリが一つも存在しなければ、デフォルトでは通過可能「OK」になっているスイッチテーブル15の値を、通過制限「NG」へと変更する(S118)、スイッチNG切替手段125を実行する。エントリが既に存在している場合は、スイッチテーブル15の値は既に「NG」になっているので、そのまま次の処理へと進む。
【0032】
なお、S117及びS118の組み合わせからなるスイッチNG切替手段125は、S119との順序が前後しても良い。
【0033】
次に、上記ロックドメイン記録手段123の具体的手続きとして、宛先IPアドレス、すなわちDNSサーバ3のアドレスと、要求しているドメインとを、アドレスロックテーブル14に新たなエントリとして記録する(S119)。その上で、アドレスロックテーブル14の当該エントリのロック回数を+1し、DNSレスポンスが来たときには遮断できるように設定する(S120)。同時に、タイマーの数値を更新する。更新後の値は特に限定されないが、DNSクエリーパケットがUDPである場合に、パケットが破棄されたと考えられる程度の時間であると好ましい。具体的には60秒程度でよい。タイマーの設定としては、タイムアウトの時刻を登録・更新してもよいし、カウントされる秒数を1秒ごとにデクリメントしていく方式でもよい。
【0034】
一方、S116において、既に同一のIPアドレスとドメインの組み合わせのエントリが存在するのであれば(S116−Yes)、同一のDNSサーバ3への同一の問い合わせであるので、当該エントリのロック回数を+1するとともにタイマーの数値を更新する(S120)。立て続けに複数の問い合わせがあった場合にこのような状態となる。インクリメントする処理とタイマーの更新処理自体は上記と同じである。
【0035】
その上で、DNS処理部12は受け取ったDNSクエリーパケットに対する応答として、中継装置1自身のIPアドレスを付与したDNSレスポンスのパケットを生成する自己アドレス指定手段122を実行する。設定画面ドメインテーブル13におけるロケーションが複数ある場合には、ポート番号など、その他の情報を付したパケットを生成するとよい。このDNSレスポンスのパケットをL3ブリッジ部11に受け渡すと、L3ブリッジ部11は、元のDNSクエリーパケットの送信元アドレスを宛先として、当該DNSレスポンスのパケットを送信する自己アドレス通知手段113を実行する(S121)。
【0036】
このDNSレスポンスを受けとった端末2は、中継装置1のIPアドレスに対してHTTPアクセスを行う。これを受け取った中継装置1は、内蔵するHTTPサーバ機能部(図示せず)により、設定画面ドメインテーブル13にて定義したサービスに対応したwebページのデータを送信して、端末2からの設定変更を受け付け可能にする。
【0037】
これと並行して、L3ブリッジ部11が中継したDNSクエリーパケットはDNSサーバ3に到達する。このDNSクエリーパケットが問い合わせるドメインが、DNSサーバ3で名前の解決を果たせるドメインであれば対応するIPアドレスを含むDNSレスポンスを返すことができるが、中継装置1を示すものであれば、基本的にはDNSの名前の解決が不可能であるドメイン名であるので、タイムアウトの後、NoSuchNameパケットであるDNSレスポンスを返す。
【0038】
このDNSレスポンスがWAN側インターフェース22から返ってきたときの中継装置1の挙動を
図7のフロー例を用いて説明する。まず(S201)、WAN側インターフェース22からパケットを受信すると(S202)、L3ブリッジ部11はそのパケットのL3レイヤを確認する指定判別手段117を実行する(S203)。そのL3レイヤのアドレスが中継装置1自身を宛先とするものであれば(S204−Yes)、ブリッジせずにルーティング処理を行う(S205)。中継装置1自身を宛先とするものでなければ(S204−No)、ブリッジのための処理判断へと移る。
【0039】
ここで、L3ブリッジ部11は、スイッチテーブル15の値を参照するスイッチ確認手段114を実行する(S206)。スイッチテーブル15の値が通過可能(「OK」)であれば(S207−Yes)、その時点ではDNS処理部12が遮断すべきDNSレスポンスを待機しているわけではないので、L3ブリッジ部11は当該パケットをそのままL3ブリッジしてLAN側インターフェース21に転送するスイッチ参照転送手段115を実行する(S211)。スイッチテーブル15の値が通過可能でない場合(S207−No)、当該パケットが破棄すべきものか否かをDNS処理部12に問い合わせる破棄問合手段118を実行する(S208)。この問い合わせに対する処理は後述する。DNS処理部12から処理結果を通知されるまでは、当該パケットを保持したまま待機する(S209→S210)。予め定めた設定時間経過後までにDNS処理部12から通知が来なければ、当該DNSレスポンスのパケットを破棄する該当パケット破棄手段112を実行する(S210→S212)。
【0040】
なお、DNS処理部12から、当該パケットを破棄する旨の具体的な通知がL3ブリッジ部11に伝達されるようにしてもよい。この場合、S210で待機することなく、通知が到達したらパケットを転送することなくそのまま終了させるという手順で該当パケット破棄手段112を実行する(S212)。
【0041】
次に(S221)、S208で破棄問合手段118によるDNSレスポンスを受け渡されたDNS処理部12によるロック状態確認手段126の処理を
図8のフローを用いて説明する。L3ブリッジ部11より処理を引き継いだDNS処理部12は、当該DNSレスポンスのパケットに含まれる送信元IPアドレス及びドメインを抽出する(S223)。ここで送信元IPアドレスとはDNSサーバ3のアドレスである。その上でアドレスロックテーブル14を確認し(S224)、抽出したDNSサーバ3のアドレスとドメインの組み合わせがアドレスロックテーブル14にあるか否かを判断する(S225)。
【0042】
その組み合わせが存在していなければ(S225−No)、当該DNSレスポンスは中継装置1自身を指定したDNSクエリーパケットに対する応答ではなく、WAN6内のいずれかのサーバを指定したものであるため、そのまま遮断することなく転送して構わない。このため、L3ブリッジ部11へ、通過させてよい旨の返答通知を送信する(S226→S209−Yes)。上記の通り、この返答通知を受けたL3ブリッジ部11は保持していたパケットをLAN側インターフェース21に転送し、端末2にDNSレスポンスが届くことになる(S211)。
【0043】
一方、上記の組み合わせが存在していれば(S225−Yes)、当該DNSレスポンスは、中継装置1自身のドメインを指定したDNSクエリーパケットに対する応答であり、基本的にはNoSuchNameパケットである。この場合は、L3ブリッジ部11に対して転送を認める旨の通知を出さない。ただし、遮断すべきDNSレスポンスが返ってきたので、その遮断の役目を終えた分のロック状態の解除作業を行う。まず、アドレスロックテーブル14から、当該組み合わせのエントリのロック回数を−1する(S227)。当該エントリのDNSサーバ3及びドメインについて、もし待機しているDNSレスポンスの数、すなわちL3ブリッジ部を先に通過したDNSクエリーパケットが残り一つであった場合には、ロック回数が−1されて0になり、ロック状態が解除されるロック解除手段124が実行されることになる。
【0044】
その上で、DNS処理部12は、アドレスロックテーブル14の中に、ロック回数が0となっているエントリがあるか否かを確認する解除エントリ確認手段127を実行し(S228)、もし該当するエントリがあれば(S228−Yes)当該エントリを削除する(S229)。
【0045】
さらに(S228−No)、アドレスロックテーブル14のエントリのうち、終了時刻を記録する方式であればその時刻を経過しているものが存在しているか否か、残り時間をデクリメントする方式の場合はタイマーが0秒になっているものが存在しているか否かを確認するタイマー確認手段128を実行し(S230)、もし該当するエントリがあれば(S230−Yes)、当該エントリを削除する(S231)。
【0046】
これらのテーブルの整理後に(S230−No)、アドレスロックテーブル14にエントリがまだ存在するのであれば、L3ブリッジ部11はまだWAN側インターフェースから受信したパケットを遮断するか否かの判断を継続しなければならないので(S232−Yes)、そのまま処理が終了する(S234)。一方、アドレスロックテーブル14のエントリが全て削除されていれば(S232−No)、DNSレスポンスを遮断する必要がなくなったので、スイッチテーブル15の通過の可否の値を通過可能な「OK」に変更する、スイッチ許可手段129を実行する(S233)。これにより、以後は新たなエントリがアドレスロックテーブル14に追加されるまでは、L3ブリッジ部11はWAN側インターフェース22から受信した中継装置1を指定する以外のパケットについてそのままブリッジしてLAN側インターフェース21に転送するスイッチ参照転送手段115を実行することになり、ブリッジとしてスループットを維持できるようになる。
【0047】
いずれにしても、L3ブリッジ部11に対してパケットの通過を認める旨の通知を出さなかった場合、L3ブリッジ部11は、予め定められた時間のタイムアウトを待って(S210)、保留されているDNSレスポンスのパケットは破棄される該当パケット破棄手段112を実行する。
【0048】
なお、DNS処理部12は、S227に前後して、当該パケットを通過させずに破棄させる旨の通知をL3ブリッジ部11に通知してもよい。この場合、L3ブリッジ部11はタイムアウトを待つことなく、保持していた当該DNSレスポンスのパケットを破棄する該当パケット破棄手段112を実行する。
【0049】
上記の一連の流れを
図9及び
図10に示すシーケンス図により解説する。
まず端末2は、LAN5を構成するエッジルータ7に対してRS(Router Solicitation)を送信し(S301)、エッジルータ7からRA(Router Advertisement)を受信する(S302)。次いでInformation Requestを送信して、DNSサーバ3のアドレスを含む応答をエッジルータから受信する。ここまでは中継装置1は単純にL3ブリッジとして作用し、パケットを素通しする。
【0050】
次いで、端末2が中継装置1を指定するために、DNSクエリーパケットを送信する(S311)。ここでL3ブリッジ部11は、L3レイヤ確認手段116でDNSクエリーパケットと確認したら、WAN側インターフェース22(S312、S108)とDNS処理部12(S313、S107)との両方に当該パケットを渡すクエリー中継コピー手段111を実行する。中継装置1を指定したDNSクエリーパケットに対して、DNS処理部12は中継装置1自身のIPアドレスを含むDNSレスポンスを生成してL3ブリッジ部11に渡す(S314,S121)自己アドレス指定手段122を実行する。DNSレスポンスを受け取ったL3ブリッジ部11は端末2へ当該DNSレスポンスを送信する自己アドレス通知手段113を実行する(S316、S121)。また、並行して、当該DNSサーバ3のアドレスと要求したドメインとをアドレスロックテーブル14に登録してロック状態にするロックドメイン記録手段123を実行する(S315,S119,S120)。併せて、スイッチテーブル15で通過を「NG」とするスイッチNG切替手段125を実行する(S317、S118)。
【0051】
中継装置1のIPアドレスを得た端末は、中継装置1の設定画面を呼び出すためにHTTPクライアントから当該IPアドレスを指定したリクエストを送信する(S321)。このパケットはIPアドレスで直接に中継装置1を指定しているので、L3ブリッジ部11はブリッジせずに、中継装置1の内部のHTTPサーバ18にリクエストを受け渡す(S322)。HTTPサーバ18は設定画面ドメインテーブル13で定義されたサービスに従って、対応するwebページのデータを生成してL3ブリッジ部11に渡し(S325)、L3ブリッジ部11はそのデータを端末2に送信する(S326)。以下図示しないが、当該webページのフォームを用いて中継装置1の設定を変更することができる。
【0052】
一方、S312でDNSサーバ3に送られたDNSクエリーパケットについて、DNSサーバ3は当然にDNSの名前の解決ができず、タイムアウトとなって、NoSuchNameとなるDNSレスポンスを返送する(S331)。L3ブリッジ部11はこれを受信したら、スイッチテーブル15を参照してこれを保留し、所定の時間が経過したり、破棄の指示を受け取ったら該当パケット破棄手段112を実行する。
【0053】
なお、中継装置1以外についてIPアドレスを求めるDNSクエリーパケット(S351)に対しては、クエリー中継コピー手段111が実行されるものの(S352,S353)、DNS処理部12でドメインを確認して、中継装置1自身でないことが確認されれば、アドレスロックテーブル14やスイッチテーブル15の更新が行われない。一方で、DNSサーバ3からDNSレスポンスが返ってくる(S354)が、このときにスイッチ確認手段114を実行してスイッチテーブル15が通過「OK」となっていれば、L3ブリッジ部11はそのままLAN側インターフェースへと転送するスイッチ参照転送手段115を実行する。これによりDNSの名前が解決され、端末2は外部のHTTPサーバにアクセスすることができ(S355,S356)、このときに中継装置1が障害となることはない。