以下に添付図面を参照して、この発明にかかる通信装置、通信方法および通信プログラムの最良な実施の形態を詳細に説明する。
(本実施の形態)
本実施の形態にかかる通信装置は、ルータのNAT機能のタイプの検査を、Port Restricted Cone NATタイプではないことを判定できるまで、または、検査するためのメッセージに対する応答のメッセージが受信できなくなるまで繰り返し行い、応答のメッセージが受信できなくなった場合には、さらに判別を行うためのメッセージを送信して、それに対する応答のメッセージの受信可否によりルータのNAT機能がPort Restricted Cone NATタイプであるか否かを判別するものである。
図1は、本実施の形態にかかる通信装置100の構成を示すブロック図である。同図に示すように、通信装置100は、LAN(Local Area Network)120内に設置され、ルータ110を介してインターネット130に接続され、インターネット130に接続された通信相手であるサーバ140と通信を行う装置である。ルータ110は、本発明におけるネットワーク中継装置に相当する。
ルータ110は、送信が要求されたパケットに含まれる宛先のIPアドレスを参照して送信経路を選択する機能を有し、当該パケットを他のネットワークに中継する装置であり、プライベートIPアドレスをグローバルIPアドレスに変換するネットワークアドレス変換(NAT)機能を有するものも、有さないものも含まれる。ルータ110のインターネット130に接続する側のネットワークインタフェースには、1つまたは複数のグローバルIPアドレスが割り当てられている。なお、本実施の形態においては、ルータがNAT機能を有するか否かを判定することもできる。ルータがNAT機能を有するか否かを判定する処理については後述する。
サーバ140は、ルータがどのタイプのNAT機能を有するルータであるかの検査を要求するためのメッセージ(以下、NAT検査要求メッセージという)を含むパケットに対して、そのパケットの送信元IPアドレスおよび送信元ポート番号を記述したメッセージ(以下、NAT検査応答メッセージという)を、返信するパケットのデータ部に書き込んで送信する機能を有する通信装置である。本発明は、NAT機能のタイプを判定することが目的であるため、通信相手であるサーバはこのような機能を有することを前提としている。このような機能の実現方法の一例は、例えば非特許文献1に示されている。なお、NAT検査応答メッセージには、送信元IPアドレスおよび送信元ポート番号を記述するが、これ以外の情報を含むように構成してもよい。
通信装置100は、図1に示すように、第1の送信部101と、第2の送信部102と、第1の受信部103と、第2の受信部104と、第1の変換方法判定部105と、第2の変換方法判定部106と、応答メッセージ記憶部107とを備えている。
第1の送信部101は、変換方法判定処理の第1段階の処理および第2段階の処理におけるNAT検査要求メッセージを、ルータ110を介してサーバ140に送信するものである。第1段階の処理および第2段階の処理については後述する。第2の送信部102は、変換方法判定処理の第3段階の処理において、ルータ110がどのタイプのNAT機能を有するかを確認するためのNAT検査要求メッセージを、ルータ110を介してサーバ140に送信するものである。
第1の受信部103は、変換方法判定処理の第1段階の処理および第2段階の処理において、インターネット130およびルータ110を介して返信されるサーバ140からのNAT検査応答メッセージを受信するものである。第2の受信部104は、変換方法判定処理の第3段階の処理において、インターネット130およびルータ110を介して返信されるサーバ140からのNAT検査応答メッセージを受信するものである。
なお、ルータ110がNATの処理に利用できるIPアドレス・ポート番号のすべての組を使用した場合や、ネットワーク障害の場合には、NAT検査応答メッセージを受信することができないため、第1の受信部103および第2の受信部104は、予め定められた時間待機したあと受信処理を中断するタイムアウト処理を行う。
第1の変換方法判定部105は、第1の送信部101から送信するNAT検査要求メッセージの作成、および、第1の受信部103が受信した複数のNAT検査応答メッセージを比較することにより、ルータがPort Restricted Cone NATでないことの判定を行うものである。
第2の変換方法判定部106は、第1の変換方法判定部105により判定を繰り返すうちにNAT検査応答メッセージが受信できなくなった場合に、再度確認のためのNAT検査要求メッセージを作成し、それに対するNAT検査応答メッセージの受信可否を判断することにより、ルータがPort Restricted Cone NATであるか否かの判定を行うものである。
応答メッセージ記憶部107は、第1の送信部101が最初に送信したNAT検査要求メッセージに対するNAT検査応答メッセージを、そのときのNAT検査要求メッセージとともに記憶するものである。応答メッセージ記憶部107に記憶された情報は、第1の送信部101が2回目以降に送信したNAT検査要求メッセージに対するNAT検査応答メッセージの内容と比較して、ルータがPort Restricted Cone NATでないことの判定を行うために使用される。
図2は、応答メッセージ記憶部107のデータ構造の一例を示す説明図である。同図に示すように、応答メッセージ記憶部107は、トランスポートプロトコルの種別と、送信元IPアドレスと、送信元ポート番号と、宛先IPアドレスと、宛先ポート番号と、NAT検査応答メッセージに記述された送信元IPアドレスと、NAT検査応答メッセージに記述された送信元ポート番号とを対応付けて格納している。
同図に示す例では、通信装置100が、送信元IPアドレスをA、送信元IPアドレスをa、宛先IPアドレス・ポート番号として、それぞれサーバ140のIPアドレスS、ポート番号xを指定してNAT検査要求メッセージを含むパケットを送信し、ルータ110が、送信元IPアドレスA、送信元ポート番号をそれぞれN、mに変換した場合に応答メッセージ記憶部107に格納されるデータが示されている。
次に、一般的に使用されているルータのNAT機能とそのタイプ、および従来の技術によるルータのNAT機能のタイプの判定方法について説明する。
まず、NAT機能を有するルータの一般的な機能について説明する。図3は、プライベートIPアドレスとNAT機能を有するルータを利用したネットワーク構成および通信方法の一例を示した説明図である。
同図の上部に示すように、プライベートIPアドレスAが割り当てられている通信装置300が、ルータ310を介してインターネット130に接続されている。ルータ310におけるインターネット130側のネットワークインタフェースには、NというグローバルIPアドレスが割り当てられている。なお、ルータ310には、通信装置300以外の複数の装置を接続することができる。この場合、各装置にはそれぞれ異なるプライベートIPアドレスが割り当てられる。また、サーバ140は、インターネット130に接続され、グローバルIPアドレスSが割り当てられている。
同図の下部は、ルータ310配下に存在する通信装置300が、サーバ140にデータ要求メッセージを送信し、サーバ140が応答メッセージを通信装置300へ送信するシーケンスの一例を示している。ここで、データ要求メッセージとは、通信装置300とサーバ140との間の通信処理において必要となるデータを要求するためのメッセージ一般をいい、上述のNAT検査要求メッセージとは異なる概念である。また、応答メッセージとは、このデータ要求メッセージ対してサーバ140が返信した応答のメッセージ一般をいい、上述のNAT検査応答メッセージとは異なる概念である。以下、通信装置300とサーバ140との間のメッセージ送受信のシーケンスについて説明する。
以下では、「ヘッダ(TCP、A、a、S、x)」という表記は、トランスポートプロトコル、送信元IPアドレス、送信元ポート番号、宛先IPアドレス、宛先ポート番号がそれぞれTCP、A、a、S、xであるパケットのヘッダ部分を表すものとする。また、横向きの矢印はパケットの送信方向を表し、縦向きの矢印は時間経過の方向を表す。
まず、通信装置300は、ネットワークプロトコルとしてIPv4、トランスポートプロトコルとしてTCPを用いて、データ要求メッセージを含むパケット351を送信する。パケット351のヘッダはヘッダ(TCP、A、a、S、x)である。
次に、パケット351を受信したルータ310は、パケット351のヘッダの送信元IPアドレスと、送信元ポート番号を予め定められたアドレス変換アルゴリズムに従って変換し、ヘッダ(TCP、N、n、S、x)に変換する。Nはルータ310に割り当てられたグローバルIPアドレスであるため、パケット352はインターネット130へ転送可能となる。ポート番号nの選び方は、ルータ310に実装されているアドレス変換アルゴリズムに依存し、ポート番号nはポート番号aと同一である可能性もある。
パケット352は、インターネット130を経由して、サーバ140に送信される。パケット352の送信元IPアドレスがNであることから、サーバ140は、通信装置300ではなくルータ310からデータ要求メッセージが送信されたと認識する。次に、サーバ140はパケット内部のデータ要求メッセージを解析して応答メッセージを作成し、パケット353としてインターネット130に送信する。
なお、サーバ140はパケット352がルータ310のポート番号nから来たと認識しているため、パケット353の宛先ポート番号をnにする。すなわち、パケット353のヘッダは、ヘッダ(TCP、S、x、N、n)となる。パケット353は、インターネット130を経由し、ルータ310に送信される。
ルータ310は、送信時に実行したアドレス変換の対応に従い、パケット353の宛先IPアドレスがA、宛先ポート番号がaであると判定し、パケット353のヘッダをヘッダ(TCP、S、x、A、a)に変換したパケット354を通信装置300に転送する。
このようにして、通信装置300にプライベートIPアドレスが割り当てられている場合であっても、通信装置300はインターネット130上のサーバ140と通信が可能となる。また、通信装置300以外のルータ310配下に存在する装置が、ほぼ同時にインターネット130上の装置へTCPでパケットを送信した場合、ルータ310は、ポート番号nとは別のポート番号を用いてそのパケットの送信元ポート番号を変換する。このようなNAT機能により、ローカルエリアネットワーク内の複数の装置が同時にインターネット130上の装置と通信可能となる。
次に、NAT機能のタイプについて説明する。非特許文献1によれば、ルータのNAT機能には、(1)Full Cone NAT、(2)Restricted Cone NAT、(3)Port Restricted Cone NAT、(4)Symmetric NATの4タイプが存在する。以下に、これら4タイプのNAT機能におけるアドレス変換アルゴリズムおよび外部からのアクセスに対する制限処理について説明する。
図4は、Full Cone NATを利用したネットワーク構成および通信方法の一例を示した説明図である。
同図に示すように、ローカルエリアネットワーク420に属する通信装置400がFull Cone NATタイプのルータ410に接続され、プライベートIPアドレスAが割り当てられている。また、ルータ410はインターネット130に直接接続され、グローバルIPアドレスNが割り当てられている。また、サーバ441およびサーバ442はインターネット130に直接接続され、それぞれグローバルIPアドレスB、Cが割り当てられている。
Full Cone NATにおいては、以下のようなアルゴリズムによりアドレス変換が実行され、通信装置400とサーバ441およびサーバ442間の通信が行われる。
まず、通信装置400がサーバ441にヘッダ(TCP、A、a、B、b1)を有するパケット451を送信する。ルータ410は、パケット451の送信元IPアドレス、送信元ポート番号をそれぞれN、nに変換し、インターネット130へ転送する。そしてパケット451はサーバ441により受信される。
次に、通信装置400は、ヘッダ(TCP、A、a、B、b2)を有するパケット452をサーバ441に送信する。すなわち、通信装置400は送信元ポート番号をパケット451の送信元ポート番号と同一に設定し、宛先ポート番号をb2に変更する。
パケット452を受信したルータ410は、パケット452の送信元IPアドレス、送信元ポート番号をそれぞれN、nに変換し、インターネット130に転送する。すなわち、パケット451とパケット452の送信元IPアドレス、送信元ポート番号はそれぞれ同一の値に変換される。
次に通信装置400は、ヘッダ(TCP、A、a、C、c)を有するパケット453をサーバ442に送信するが、この場合もルータ410はパケット453の送信元IPアドレス、送信元ポート番号をそれぞれN、nに変換し、インターネット130に転送する。
しかし、次に通信装置400がヘッダ(TCP、A、f、B、b1)を有するパケット454をサーバ441に送信すると、ルータ410は、パケット454の送信元ポート番号をnとは異なるポート番号mに変換する。
このように、Full Cone NATは、一組のトランスポートプロトコル、送信元IPアドレス、送信元ポート番号の組に対して、一組の変換先の送信元IPアドレス、変換先の送信元ポート番号の組を割り当てるようなアドレス変換アルゴリズムを利用する。
次に、Full Cone NATにおける外部からのアクセスに対する制限処理について説明する。まず、サーバ442が、ヘッダ(TCP、C、d、N、n)を有するパケット455を送信したとする。ただし、通信装置400は、この時点までにヘッダ(TCP、A、a、C、d)を有するパケット一度も送信していないものとする。
パケット455は、通信装置400が送信した何らかのパケットに対する応答ではなく、サーバ442から直接送信されたパケットであるが、ルータ410内でパケット455の宛先であるIPアドレスN、ポート番号nが通信装置400のIPアドレスA、ポート番号aと既に対応づけられているため、ルータ410はパケット455の宛先IPアドレス、宛先ポート番号をそれぞれA、aに変換し、通信装置400に転送する。
このように、Full Cone NATは、転送実績のないIPアドレスおよびポート番号の組を送信元とするパケットであっても、そのパケットの宛先IPアドレスおよび宛先ポート番号の組が、過去に転送実績があるためプライベートアドレスとの対応を有する組である場合には、そのときの対応に従い、受信した宛先IPアドレスおよび宛先ポート番号を変換して通信装置400に送信する。
次に、Restricted Cone NATについて説明する。図5は、Restricted Cone NATを利用したネットワーク構成および通信方法の一例を示した説明図である。
Restricted Cone NATは、ローカルエリアネットワークからのパケットに対して、Full Cone NATと同じアドレス変換アルゴリズムに従いアドレスの変換を行う。すなわち、一組のトランスポートプロトコル、送信元IPアドレス、送信元ポート番号の組に対して、一組の変換先の送信元IPアドレス、変換先の送信元ポート番号の組を割り当てる。
しかし、Restricted Cone NATは、インターネット130から受信したパケットの転送に対し以下に説明する制限を設けている点で、Full Cone NATと異なっている。
図5に示すように、ローカルエリアネットワーク520に属する通信装置500がRestricted Cone NATタイプのルータ510に接続され、プライベートIPアドレスAが割り当てられている。また、ルータ510はインターネット130に直接接続され、グローバルIPアドレスNが割り当てられている。また、サーバ541およびサーバ542はインターネット130に直接接続され、それぞれグローバルIPアドレスB、Cが割り当てられている。
まず、通信装置500がサーバ541にヘッダ(TCP、A、a、B、b1)を有するパケット551を送信する。ルータ510は、パケット551の送信元IPアドレス、送信元ポート番号をそれぞれN、nに変換し、インターネット130へ転送する。そしてパケット551はサーバ541により受信される。
次に、サーバ541は、ヘッダ(TCP、B、b2、N、n)を有するパケット552をルータ510に送信する。ただし、通信装置500は、この時点までにヘッダ(TCP、A、a、B、b2)を有するパケットを送信したことがないものとする。この場合、ルータ510は、パケット552の宛先IPアドレス、宛先ポート番号をそれぞれA、aに変換し通信装置500に転送する。
一方、サーバ542がヘッダ(TCP、C、c、N、n)を有するパケット553をルータ510に送信すると、ルータ510はパケット553を転送せずに破棄する。ただし、通信装置500は、この時点までにヘッダ(TCP、A、a、C、c)を有するパケットを送信したことがないものとする。
このように、Restricted Cone NATは、過去にローカルエリアネットワーク520からインターネット130へ転送したパケットの変換先として用いたIPアドレスおよびポート番号宛てのパケットをインターネット130から受信した場合、送信元IPアドレスが当該の過去に転送したパケットの宛先IPアドレスと一致する場合のみ、そのパケットの転送を許可しそれ以外のパケットは転送せずに破棄するという制限を設けている。
次に、Port Restricted Cone NATについて説明する。Port Restricted Cone NATは、インターネット130から送信されてきたパケットに対して、Restricted Cone NATよりもさらに厳しい制限を設けている。
図6は、Port Restricted Cone NATを利用したネットワーク構成および通信方法の一例を示した説明図である。
同図に示すように、ローカルエリアネットワーク620に属する通信装置600がPort Restricted Cone NATタイプのルータ610に接続され、プライベートIPアドレスAが割り当てられている。また、ルータ610はインターネット130に直接接続され、グローバルIPアドレスNが割り当てられている。また、サーバ641およびサーバ642はインターネット130に直接接続され、それぞれグローバルIPアドレスB、Cが割り当てられている。
まず、通信装置600がサーバ641にヘッダ(TCP、A、a、B、b1)を有するパケット651を送信する。ルータ610は、パケット651の送信元IPアドレス、送信元ポート番号をそれぞれN、nに変換し、インターネット130へ転送する。そしてパケット651はサーバ641により受信される。
次に、サーバ641が、ヘッダ(TCP、B、b2、N、n)を有するパケット652をルータ610に送信する。ただし、通信装置600は、この時点までにヘッダ(TCP、A、a、B、b2)を有するパケットを送信したことがないものとする。この場合、ルータ610は、パケット652を転送せずに破棄する。
また、サーバ642がヘッダ(TCP、C、c、N、n)を有するパケット653をルータ610に送信した場合も、ルータ610はパケット653を転送せずに破棄する。ただし、通信装置600は、この時点までにヘッダ(TCP、A、a、C、c)を有するパケットを送信したことがないものとする。
このように、Port Restricted Cone NATは、過去にローカルエリアネットワーク620からインターネット130へ転送したパケットの変換先として用いたIPアドレスおよびポート番号宛てのパケットをインターネット130から受信した場合、送信元IPアドレスおよび送信元ポート番号の組が当該の過去に転送したパケットの宛先IPアドレスおよび宛先ポート番号の組と一致する場合のみ、そのパケットの転送を許可しそれ以外のパケットは転送せずに破棄するという制限を設けている。
次に、Symmetric NATについて説明する。Symmetric NATは、上述の3つのタイプのNAT機能とは異なるアドレス変換アルゴリズムを有する。図7は、Symmetric NATを利用したネットワーク構成および通信方法の一例を示した説明図である。
同図に示すように、ローカルエリアネットワーク720に属する通信装置700がSymmetric NATタイプのルータ710に接続され、プライベートIPアドレスAが割り当てられている。また、ルータ710はインターネット130に直接接続され、グローバルIPアドレスNが割り当てられている。また、サーバ741およびサーバ742はインターネット130に直接接続され、それぞれグローバルIPアドレスB、Cが割り当てられている。
まず、通信装置700がサーバ741にヘッダ(TCP、A、a、B、b1)を有するパケット751を送信する。ルータ710は、パケット751の送信元IPアドレス、送信元ポート番号をそれぞれN、nに変換し、インターネット130へ転送する。そしてパケット751はサーバ741により受信される。
次に、通信装置700はサーバ741にヘッダ(TCP、A、a、B、b2)を有するパケット752を送信する。ルータ710は、パケット752の送信元IPアドレスをNに変換するが、送信元ポート番号をnとは異なるポート番号mに変換する。
次に、通信装置700がサーバ742にヘッダ(TCP、A、a、C、c)を有するパケット753を送信する。この場合も、ルータ710は、パケット753の送信元IPアドレスをNに変換するが、送信元ポート番号はm、nとは異なるポート番号pに変換する。
このように、Symmetric NATは、一組のトランスポートプロトコル、送信元IPアドレス、送信元ポート番号、宛先IPアドレス、宛先ポート番号の組に対して、一組の変換先の送信元IPアドレス、変換先の送信元ポート番号を割り当てるようなアドレス変換アルゴリズムを適用する。
ところで、インターネットから転送されてきた応答のパケットを、ルータがローカルエリアネットワークへ転送するためには、応答のパケットの転送先が唯一に決まる必要がある。
例えば、同図において、通信装置700がヘッダ(TCP、A、a、B、b2)を有するパケット752、ヘッダ(TCP、A、b、B、b2)を有するパケット754を送信する。ここで、仮に、ルータ710がパケット752とパケット754とに対して同じ変換先の送信元ポート番号mを割り当てるとすると、どちらのパケットもパケット(TCP、N、m、B、b2)に変換されることになる(同図には図示せず)。
この後、ルータ710がサーバ741からヘッダ(TCP、B、b2、N、m)を有するパケットを受信したとすると、ルータ710は通信装置700のポート番号aとポート番号bのどちらに転送すればよいのか判断できなくなる。
そこで、Symmetric NATは、パケットのトランスポートプロトコル、宛先IPアドレス、宛先ポート番号、変換先の送信元IPアドレス、変換先の送信元ポート番号の組が、一意に定まるように対応を決定する。
なお、以上のSymmetric NATの性質から、複数のパケットにおいて、宛先IPアドレスまたは宛先ポート番号が異なるならば、同じ変換先の送信元IPアドレス、変換先の送信元ポート番号を割り当てることも可能である。
例えば、図7において、通信装置700がヘッダ(TCP、A、a、C、c)を有するパケット753、ヘッダ(TCP、A、b、B、b2)を有するパケット754を送信した場合、ルータ710は、パケット753、パケット754共に送信元IPアドレス、送信元ポート番号をそれぞれN、pに変換する。
次に、Symmetric NATにおける外部からのアクセスに対する制限処理について説明する。Symmetric NATは、インターネットから転送されてきたパケットに対して、Port Restricted Cone NATと同様の制限を設けている。
すなわち、Symmetric NATは、過去にローカルエリアネットワーク720からインターネット130へ転送したパケットの変換先として用いたIPアドレスおよびポート番号宛てのパケットをインターネット130から受信した場合、送信元IPアドレスおよび送信元ポート番号が当該の過去に転送したパケットの宛先IPアドレスおよび宛先ポート番号と一致する場合のみ、そのパケットの転送を許可しそれ以外のパケットは転送せずに破棄するという制限を設けている。
以上、非特許文献1に記載された4タイプのNAT機能におけるアドレス変換アルゴリズムおよび外部からのアクセスに対する制限処理について示した。しかし、現在普及しているルータの中には、これら4タイプのNAT機能のいずれとも異なる動作を行うルータが存在する。以下にこのようなNAT機能を有するルータの一例について説明する。
図8は、非特許文献1に記載された4タイプのNAT機能のいずれとも異なる動作を行うルータを利用したネットワーク構成および通信方法の一例を示した説明図である。
同図に示すように、ローカルエリアネットワーク820に属する通信装置800が、4タイプのNAT機能のいずれとも異なる動作を行うルータ810に接続され、プライベートIPアドレスAが割り当てられている。また、ルータ810はインターネット130に直接接続され、グローバルIPアドレスNが割り当てられている。また、サーバ841およびサーバ842はインターネット130に直接接続され、それぞれグローバルIPアドレスB、Cが割り当てられている。
同図に示すように、通信装置800がサーバ841に送信したヘッダ(TCP、A、a、B、b1)を有するパケット851、ヘッダ(TCP、A、a、B、b2)を有するパケット852、ヘッダ(TCP、A、a、C、c)を有するパケット853、ヘッダ(TCP、A、b、C、c)を有するパケット854を、ルータ810が、それぞれヘッダ(TCP、N、n、B、b1)、ヘッダ(TCP、N、m、B、b2)、ヘッダ(TCP、N、n、C、c)、ヘッダ(TCP、N、m、C、c)を有するパケットに変換する。なお、n≠mである。
このように、ルータ810は、ローカルエリアネットワーク820から送信された複数のパケットの送信元IPアドレス、送信元ポート番号が同一であっても、送信元IPアドレス、送信元ポート番号を、異なる値に変換する場合がある(例えば、パケット851とパケット852)。また、パケットの送信元IPアドレス、送信元ポート番号が異なっていても、宛先IPアドレスまたは宛先ポート番号も異なるならば、送信元IPアドレス、送信元ポート番号を、同一の値に変換する場合がある(例えば、パケット852とパケット854)。
このため、ルータ810は、従来のNATタイプの判定方法によると、Port Restricted Cone NATと判定される場合と、Symmetric NATであると判定される場合がある。従来のNATタイプの判定方法については後述する。
次に、NATのタイプによる2つの通信装置の接続可否について説明する。図9は、直接通信を行う2つの通信装置が接続されているルータのNAT機能のタイプの組み合わせと接続可否の関係を示した説明図である。同図に示すように、一方のルータのNAT機能がFull Cone NATかRestricted Cone NATである場合、および両方のルータのNAT機能がPort Restricted Cone NATである場合は、2つの通信装置は直接通信を行うことができる。
また、一方のルータのNAT機能がSymmetric NATでかつもう一方のルータのNAT機能がPort Restricted Cone NATである場合、および両方のルータのNAT機能がSymmetric NATである場合は、2つの通信装置は直接通信を行うことができない。なお、特許文献1または非特許文献2によれば、このような組み合わせにおいても通信を行うことができることが示されているが、通信開始まで長時間を要する場合があり現実的な方法ではないため、ここでは通信ができないものとして記載している。
このように、互いに通信を行う通信装置がそれぞれどのタイプのルータの配下に存在するかによって、当該通信装置間の通信の可否が決定されるため、事前にルータのNAT機能のタイプを判定する必要がある。特に、上述の4タイプのNAT機能のいずれとも異なる動作を行うルータのように、Port Restricted Cone NATと判定される場合もあれば、Symmetric NATと判定される場合もあるルータが存在するため、Port Restricted Cone NATであるか、Symmetric NAT(または4タイプ以外のNAT機能を有するルータ)であるかを正確に判定する必要がある。
次に、従来の技術によりNAT機能のタイプを判定する方法について説明する。図10は、非特許文献1の方法により、ルータ配下の通信装置が、自装置が接続されているルータのNAT機能がPort Restricted Cone NATであるか、Symmetric NATであるかを判別する方法の一例を説明した説明図である。
同図に示すように、通信装置1000がルータ1010に接続され、プライベートIPアドレスAが割り当てられている。また、ルータ1010はインターネット130に直接接続され、グローバルIPアドレスNが割り当てられている。また、サーバ1040はインターネット130に直接接続され、それぞれグローバルIPアドレスSが割り当てられている。ここで、サーバ1040は、NAT検査要求メッセージに対して、そのパケットの送信元IPアドレス、送信元ポート番号をパケットのデータ部に書き込み、NAT検査応答メッセージとして返信する機能を有しているものとする。
まず、通信装置1000は、ヘッダ(UDP、A、a、S、x)を有し、NAT検査要求メッセージを含んだパケット1051をサーバ1040へ送信する。ルータ1010は、パケット1051を、ヘッダ(UDP、N、n、S、x)を有するパケット1052に変換し、インターネット130に転送する。
次に、サーバ1040がパケット1052を受信すると、サーバ1040は、NAT検査応答メッセージを、ヘッダ(UDP、S、x、N、n)を有するパケット1053として送信する。パケット1053のNAT検査応答メッセージには、パケット1052の送信元IPアドレスN、送信元ポート番号nが記述される。ルータ1010がパケット1053を受信すると、パケット1053を、ヘッダ(UDP、S、x、A、a)を有するパケット1054に変換し、通信装置1000に転送する。
次に、通信装置1000は、パケット1054を受信した後、宛先ポート番号を変更して、ヘッダ(UDP、A、a、S、y)を有し、NAT検査要求メッセージを含んだパケット1055をサーバ1040へ送信する。ルータ1010は、パケット1055を、ヘッダ(UDP、N、m、S、y)を有するパケット1056に変換し、インターネット130に転送する。
パケット1055の送信元IPアドレス、送信元ポート番号は、パケット1051の送信元IPアドレス、送信元ポート番号と同一であるため、もしルータ1010がPort Restricted Cone NATであるならば、m=nとなる。Port Restricted Cone NATにおいては、トランスポートプロトコル、送信元IPアドレス、送信元ポート番号が同一であれば、同一の変換先の送信元IPアドレス、変換先の送信元ポート番号の組を割り当てるからである。
一方、もしルータ1010がSymmetric NATであるならば、m≠nとなる。Symmetric NATにおいては、一組のトランスポートプロトコル、送信元IPアドレス、送信元ポート番号、宛先IPアドレス、宛先ポート番号の組に対して、一組の変換先の送信元IPアドレス、変換先の送信元ポート番号を割り当てるからである。
次に、サーバ1040がパケット1056を受信すると、サーバ1040は、NAT検査応答メッセージを、ヘッダ(UDP、S、y、N、m)を有するパケット1057として送信する。パケット1057のNAT検査応答メッセージには、パケット1056の送信元IPアドレスN、送信元ポート番号mが記述される。ルータ1010がパケット1057を受信すると、パケット1057を、ヘッダ(UDP、S、y、A、a)を有するパケット1058に変換し、通信装置1000に転送する。
次に、通信装置1000は、パケット1054、パケット1058のNAT検査応答メッセージに記述されたポート番号、nとmを比較する。もし、n=mならば、ルータ1010はPort Restricted Cone NATであると判定する。一方、もしn≠mならば、ルータ1010はSymmetric NATであると判定する。
このように、従来の方法においては、NAT検査要求メッセージを2回送信し、受信した2つのNAT検査応答メッセージを比較してNATのタイプを判定する。しかし、4タイプのNAT機能のいずれとも異なる動作を行うルータにおいては、送信する2つのNAT検査要求メッセージの取り方によって、返信されるNAT検査応答メッセージに記述されたポート番号が同一(n=m)になる場合があり、誤ってPort Restricted Cone NATと判定されてしまうことがあった。
本発明においては、NAT検査要求メッセージの送信を繰り返し行うことにより、検査しているルータがPort Restricted Cone NATでないことを正確に判定すること、および、NAT検査応答メッセージが受信できなくなった場合に、確認のためのNAT検査要求メッセージを送信し、それに対するNAT検査応答メッセージの受信可否により、検査しているルータがPort Restricted Cone NATであるか否かを正確に判定することができる。
次に、このように構成された本実施の形態にかかる通信装置100による通信処理について説明する。図11は、本実施の形態にかかる通信装置100おける変換方法判定処理の全体の流れを示すフローチャートである。
まず、第1の変換方法判定部105は、通信装置100において送信元IPアドレス・ポート番号として利用可能なIPアドレス・ポート番号の組み合わせ(以下、Srcという)の中から、一組の組み合わせとしてIPアドレスA、ポート番号aを選択する(ステップS1101)。
次に、第1の変換方法判定部105は、変換方法判定処理の第1段階の処理を実行する(ステップS1102)。第1段階の処理は、後述する第2段階の処理において比較対象となる最初のNAT検査応答メッセージを保存しておく処理を行うものである。第1段階の処理の詳細については後述する。
第1の変換方法判定部105は、第1段階の処理を実行した後、ルータ110を介してサーバ140から応答があったか否かを判断する(ステップS1103)。応答がなかった場合は(ステップS1103:NO)、第1の変換方法判定部105は、ネットワークエラーであることを出力し、変換方法判定処理を終了する(ステップS1104)。
応答があった場合は(ステップS1103:YES)、第1の変換方法判定部105は、ルータがNAT機能を有するか否かを判断する(ステップS1105)。実際の判断は、後述する第1段階の処理において、送信元IPアドレスが変換されずにインターネットに送信されたか否かを判定することにより行い、本ステップでは、その結果によりルータがNAT機能を有するか否かを判断する。
NAT機能を有さない場合は(ステップS1105:NO)、第1の変換方法判定部105は、ルータがNAT機能を有さないことを出力して変換方法判定処理を終了する(ステップS1106)。
NAT機能を有する場合は(ステップS1105:YES)、第1の変換方法判定部105は、Srcから新たな送信元IPアドレス・ポート番号の組み合わせ(B1、b1)を選択する(ステップS1107)。なお、このときの組み合わせは、第1段階の処理で使用した組み合わせ(A、a)と同一でもよい。第2段階の処理では、宛先ポート番号は、第1段階の処理で使用したポート番号と異なるものを使用するので、NAT検査要求メッセージそのものは第1段階の処理と異なる値になるからである。
次に、第1の変換方法判定部105は、変換方法判定処理の第2段階の処理を実行する(ステップS1108)。第2段階の処理は、第1段階の処理において返信されたNAT検査応答メッセージと、新たに送信したNAT検査要求メッセージに対するNAT検査応答メッセージとを比較し、ルータのNAT機能のタイプを判定するものである。第2段階の処理の詳細については後述する。
第1の変換方法判定部105は、第2段階の処理を実行した後、ルータ110を介してサーバ140から応答があったか否かを判断する(ステップS1109)。応答があった場合は(ステップS1109:NO)、第1の変換方法判定部105は、第2段階の処理においてルータのNAT機能がPort Restricted Cone NATでないと判定されたか否かを判断する(ステップS1110)。
ルータのNAT機能がPort Restricted Cone NATでないと判定された場合は(ステップS1110:YES)、第1の変換方法判定部105は、ルータのNAT機能がPort Restricted Cone NATでないことを出力して、変換方法判定処理を終了する(ステップS1111)。
ルータのNAT機能がPort Restricted Cone NATでないと判定されていない場合は(ステップS1110:NO)、さらに判定処理を継続するために、ステップS1107のIPアドレス・ポート番号の選択処理を実行する。この場合、既に選択したIPアドレス・ポート番号の組み合わせを除いて、Srcから新たなIPアドレス・ポート番号の組み合わせを選択する。
ステップS1109において、応答なしと判断された場合は(ステップS1109:YES)、第2の変換方法判定部104が、変換方法判定処理の第3段階の処理を実行する(ステップS1112)。
ステップS1112における第3段階の処理は、NAT検査応答メッセージが受信できなくなった場合に、ルータのNAT機能がPort Restricted Cone NATであるか否かを最終的に確認するためのNAT検査要求メッセージを送信し、それに対するNAT検査応答メッセージの受信可否により、ルータのNAT機能のタイプを判定するものである。第3段階の処理の詳細については後述する。
第2の変換方法判定部104は、第3段階の処理を実行した後、第3段階の処理の結果を出力して変換方法判定処理を終了する(ステップS1113)。
このように、本実施の形態にかかる通信装置100においては、第2段階の処理により、ルータのNAT機能がPort Restricted Cone NATでないこと(Symmetric NATまたは4タイプ以外のNAT機能を有するルータであること)を、第3段階の処理により、Port Restricted Cone NATであること、または、Port Restricted Cone NATでないことを正確に判定することができる。
次に、ステップS1102における第1段階の処理の詳細について説明する。図12は、本実施の形態にかかる通信装置100おける変換方法判定処理の第1段階の処理の全体の流れを示すフローチャートである。
まず、第1の変換方法判定部105は、トランスポートプロトコルであるUDPと、ステップS1101で選択した送信元IPアドレスA、送信元ポート番号aと、宛先IPアドレスS、宛先ポート番号xとを含むNAT検査要求メッセージを作成する(ステップS1201)。以下では、NAT検査要求メッセージを(UDP、A、a、S、x)のように表す。なお、トランスポートプロトコルはUDPに限られるものではなく、サーバ140とメッセージの送受信を行うことができるものであれば、TCPなどのあらゆるトランスポートプロトコルを適用することができる。
次に、第1の変換方法判定部105は、第1の送信部101、第1の受信部103と協働してNAT検査要求メッセージ送受信処理を実行する(ステップS1202)。NAT検査要求メッセージ送受信処理では、ステップS1201において作成したNAT検査要求メッセージの送信、それに対するNAT検査応答メッセージの受信処理が実行される。NAT検査要求メッセージ送受信処理の詳細については後述する。
第1の変換方法判定部105は、NAT検査要求メッセージ送受信処理の結果、応答があったか否かを判断する(ステップS1203)。応答がなかった場合は(ステップS1203:NO)、第1の変換方法判定部105は、応答なしを出力して第1段階の処理を終了する(ステップS1204)。
応答があった場合は(ステップS1203:YES)、第1の変換方法判定部105は、NAT検査応答メッセージに記述された送信元IPアドレス(Nとする)と、NAT検査要求メッセージに含まれる送信元IPアドレス(A)を比較し、両者が不一致(N≠A)であるかを判断する(ステップS1205)。
両者が一致(N=A)する場合は(ステップS1205:NO)、第1の変換方法判定部105は、ルータ110がNAT機能を有さないことを出力して、第1段階の処理を終了する(ステップS1206)。両者が一致するということは、送信元IPアドレスが変換されずにインターネットに送信されたこと、すなわち、通信装置100はグローバルIPアドレスを有し、NAT機能によりIPアドレスを変換する必要がないことを意味するからである。なお、ルータ110がNAT機能を有さないことが事前に明らかな場合は、上述の判定処理(ステップS1205)を省略してもよい。
両者が不一致(N≠A)である場合は(ステップS1205:YES)、第1の変換方法判定部105は、NAT変換結果としてトランスポートプロトコル(UDP)、変換前の送信元IPアドレス(A)、変換前の送信元ポート番号(a)、宛先IPアドレス(S)、宛先ポート番号(x)、変換後の送信元IPアドレス(N)、変換後の送信元ポート番号(m)を、応答メッセージ記憶部107に保存し、第1段階の処理を終了する(ステップS1207)。以下では、NAT変換結果を(UDP、A、a、S、x、N、m)のように表す。
次に、ステップS1202におけるNAT検査要求メッセージ送受信処理の詳細について説明する。図13は、本実施の形態にかかる通信装置100おけるNAT検査要求メッセージ送受信処理の全体の流れを示すフローチャートである。
NAT検査要求メッセージ送受信処理は、第1段階の処理におけるステップS1202、第2段階の処理におけるステップS1402、第3段階の処理におけるステップS1603において実行される処理であるが、処理内容が共通するため、以下においてはステップS1202に示された第1段階の処理を例にとって説明する。なお、第3段階の処理においては、第1の送信部101、第1の受信部103、第1の変換方法判定部105の代わりに、それぞれ第2の送信部102、第2の受信部104、第2の変換方法判定部106がNAT検査要求メッセージ送受信処理を実行する。
まず、第1の送信部101が、NAT検査要求メッセージをサーバ140に対して送信する(ステップS1301)。次に、第1の受信部103が、第1の送信部101により送信されたNAT検査要求メッセージに対するNAT検査応答メッセージを受信するか、タイムアウトになるまで待機する(ステップS1302)。
次に、第1の変換方法判定部105は、第1の受信部103がNAT検査応答メッセージを受信したか否かを判断し(ステップS1303)、受信していない場合は(ステップS1303:NO)、送信回数が予め定められた閾値を超えたか否かを判断する(ステップS1304)。ここで、NAT検査応答メッセージを受信しないとは、原則として、ルータ110が利用可能なすべての変換先のIPアドレス、変換先のポート番号の組を使いきったため、通信装置100からのNAT検査要求メッセージを転送できなくなったことを意味する。しかし、なんらかの一時的なネットワークの障害等によりメッセージが受信できない場合もあるため、再送処理を行うことにより判断の精度向上を図っている。
送信回数が予め定められた閾値を超えていない場合は(ステップS1304:NO)、第1の変換方法判定部105は送信回数をカウントアップし、第1の送信部101によるNAT検査要求メッセージの送信処理(ステップS1301)を繰り返し実行する。
送信回数が予め定められた閾値を超えた場合は(ステップS1304:YES)、第1の変換方法判定部105は、応答なしを出力してNAT検査要求メッセージ送受信処理を終了する(ステップS1305)。
ステップS1303において、第1の受信部103がNAT検査応答メッセージを受信したと判断した場合は(ステップS1303:YES)、第1の変換方法判定部105は、受信したNAT検査応答メッセージを出力してNAT検査要求メッセージ送受信処理を終了する(ステップS1306)。
このように、一時的にネットワークの障害等によりパケットが損失しても、複数回NAT検査要求メッセージを送信することにより、NAT検査応答メッセージを受信できる可能性を高めることができる。なお、パケットの損失は発生しないと想定し、送信回数の閾値を0に設定して、1度しかNAT検査応答メッセージを送信しないように構成してもよい。
次に、ステップS1108における第2段階の処理の詳細について説明する。図14は、本実施の形態にかかる通信装置100おける変換方法判定処理の第2段階の処理の全体の流れを示すフローチャートである。
まず、第1の変換方法判定部105は、NAT検査要求メッセージ(UDP、B1、b1、S、y)を作成する(ステップS1401)。ここで、B1、b1の組は、第2段階の処理を繰り返すたびにステップS1107において新たな組が選択されるが、宛先IPアドレスSおよび宛先ポート番号yは常に同一の値を使用する。また、宛先ポート番号yは第1段階における宛先ポート番号xとは異なる値にする。なお、IPアドレスB1を変更せず、送信元ポート番号のみを変更するように構成してもよい。このように構成すると、通信装置100が、自装置に割り当てられたIPアドレスを頻繁に変更する必要がなくなるという利点がある。
次に、第1の変換方法判定部105は、第1の送信部101、第1の受信部103と協働し、上述したNAT検査要求メッセージ送受信処理を実行する(ステップS1402)。
次に、第1の変換方法判定部105は、NAT検査要求メッセージ送受信処理の結果、応答があったか否かを判断する(ステップS1403)。応答がなかった場合は(ステップS1403:NO)、第1の変換方法判定部105は、応答なしを出力して第2段階の処理を終了する(ステップS1404)。
応答があった場合は(ステップS1403:YES)、第1の変換方法判定部105は、NAT変換結果(UDP、B1、b1、S、y、N1、n1)を判定処理に出力する(ステップS1405)。ここで、N1、n1は、それぞれ第2段階の処理においてルータ110を介してサーバ140から返信されたNAT検査応答メッセージに含まれる変換後の送信元IPアドレス、変換後の送信元ポート番号を表す。
次に、第1の変換方法判定部105は、判定処理を実行する(ステップS1406)。判定処理は、第1段階の処理におけるNAT変換結果と、第2の処理におけるNAT変換結果とを比較して、ルータのNAT機能のタイプを判定するものである。判定処理の詳細については後述する。判定処理の後、第1の変換方法判定部105は、判定処理の結果を出力して第2段階の処理を終了する(ステップS1407)。
次に、ステップS1406の判定処理の詳細について説明する。図15は、本実施の形態にかかる通信装置100おける判定処理の全体の流れを示すフローチャートである。
まず、第1の変換方法判定部105は、第1段階の処理におけるNAT変換結果(UDP、A、a、S、x、N、m)を応答メッセージ記憶部107から取得する(ステップS1501)。次に、第1の変換方法判定部105は、第1段階の処理におけるNAT変換結果(UDP、A、a、S、x、N、m)と、第2段階の処理におけるNAT変換結果(UDP、B1、b1、S、y、N1、n1)とを比較する(ステップS1502)。
まず、第1の変換方法判定部105は、A=B1かつa=b1であるか否かを判断する(ステップS1503)。そして、A=B1でないか、a=b1でない場合は(ステップS1503:NO)、N=N1かつm=n1であるか否かの判断を行う(ステップS1504)。
N=N1かつm=n1である場合(ステップS1504:YES)、第1の変換方法判定部105は、ルータのNAT機能がPort Restricted Cone NATでないことを出力して判定処理を終了する(ステップS1506)。Port Restricted Cone NATは、送信元IPアドレスまたは送信元ポート番号が異なれば(A=B1でないか、a=b1でない)、必ず異なるIPアドレス、ポート番号を変換先の送信元IPアドレス、変換先の送信元ポート番号として設定するが、「N=N1かつm=n1である」という比較結果はこの条件に反するからである。
ステップS1504において、N=N1でないか、m=n1でない場合(ステップS1504:NO)、第1の変換方法判定部105は、ルータのNAT機能がPort Restricted Cone NATの可能性があることを出力して判定処理を終了する(ステップS1508)。まだルータのNAT機能がPort Restricted Cone NATでないと断定できないため、Port Restricted Cone NATの可能性があることを出力し、第2段階の処理を繰り返すためである。
ステップS1503において、A=B1かつa=b1であると判断された場合は(ステップS1503:YES)、さらにN=N1かつm=n1であるか否かの判断を行う(ステップS1505)。
N=N1でないか、m=n1でない場合(ステップS1505:NO)、第1の変換方法判定部105は、ルータのNAT機能がPort Restricted Cone NATでないことを出力して判定処理を終了する(ステップS1506)。Port Restricted Cone NATは、送信元IPアドレスまたは送信元ポート番号が同一であれば(A=B1かつa=b1)、必ず同一のIPアドレス、ポート番号を変換先の送信元IPアドレス、変換先の送信元ポート番号として設定するが、「N=N1でないか、m=n1でない」という比較結果はこの条件に反するからである。
ステップS1505において、N=N1かつm=n1であると判断した場合(ステップS1505:YES)、第1の変換方法判定部105は、ルータのNAT機能がPort Restricted Cone NATの可能性があることを出力して判定処理を終了する(ステップS1507)。
次に、ステップS1112における第3段階の処理の詳細について説明する。図16は、本実施の形態にかかる通信装置100おける変換方法判定処理の第3段階の処理の全体の流れを示すフローチャートである。
まず、第2の変換方法判定部106は、Srcの中から未だ使用したことのない組み合わせのIPアドレス、ポート番号の組か、第2段階の処理において応答なしが出力された場合(ステップS1404)に使用していたIPアドレス、ポート番号の組を、第3段階の処理における判定用のIPアドレスB、ポート番号bの組として選択する(ステップS1601)。
次に、第2の変換方法判定部106は、NAT検査要求メッセージ(UDP、B、b、S、z)を作成する(ステップS1602)。ここで、Sは第1段階および第2段階の処理で使用したIPアドレスと同一の値であり、zは第1段階および第2段階の処理でそれぞれ使用したポート番号x、yとは異なる値である。
次に、第2の変換方法判定部106は、第2の送信部102、第2の受信部104と協働し、上述したNAT検査要求メッセージ送受信処理を実行し(ステップS1603)、その結果、応答が合ったか否かを判断する(ステップS1604)。
第2の変換方法判定部106は、応答があった場合は(ステップS1604:YES)、ルータのNAT機能がPort Restricted Cone NATでないことを出力し(ステップS1605)、応答がなかった場合は(ステップS1604:NO)、ルータのNAT機能がPort Restricted Cone NATであることを出力して(ステップS1606)第3段階の処理を終了する。
ステップS1605において、応答があるか否かによりルータのNAT機能がPort Restricted Cone NATかどうかを判定できる理由について以下に説明する。
上述のように、Port Restricted Cone NATは、一組のトランスポートプロトコル、送信元IPアドレス、送信元ポート番号の組に対して、一組の変換先の送信元IPアドレス、変換先の送信元ポート番号の組を割り当てる。また、第3段階の処理においては、第2段階の処理で、ルータ110が使用できるすべての変換先のIPアドレス・ポート番号の組が使い果たされていることが前提となっている。
したがって、ステップS1601で未使用のIPアドレス・ポート番号の組を使用した場合、ルータのNAT機能がPort Restricted Cone NATであれば、当該未使用のIPアドレス・ポート番号の組に対して、今まで割り当てていない変換先のIPアドレス・ポート番号を設定しなければならないが、割り当てられるすべての組み合わせを使いきっているため、設定することができない。すなわち、サーバ140に対しパケットを送信できず、NAT検査要求メッセージに対する応答も受信できないことになる。
同様に、ステップS1601で応答受信不可時のIPアドレス・ポート番号の組を使用した場合、ルータのNAT機能がPort Restricted Cone NATであれば、宛先ポート番号をzに変更したとしても、第2段階の処理で割り当てができず受信不可だった変換先IPアドレス・ポート番号を再度割り当てようとするため、設定することができない。このため、サーバ140に対しパケットを送信できず、NAT検査要求メッセージに対する応答も受信できないことになる。
このように、第3段階の処理において、未使用のIPアドレス・ポート番号の組か、第2段階の処理において応答なしが出力された場合に使用していたIPアドレス・ポート番号の組を用いてNAT検査要求メッセージを送信し、それに対するNAT検査応答メッセージの受信可否により、ルータのNAT機能がPort Restricted Cone NATであるか否かを判定することができる。
次に、本実施の形態にかかる通信装置100における変換方法判定処理の具体例について説明する。図17は、第1段階の処理から第3段階の処理までに送受信されるパケットの一例を示す模式図である。
通信装置100は、第1段階の処理において、IPアドレスA、ポート番号aからNAT検査要求メッセージを送信していることを前提とする。この状態で、第2段階の処理の最初のNAT検査要求メッセージ送信処理で(最初のステップS1107の処理)、IPアドレスB1、ポート番号b1からNAT検査要求メッセージを含むパケット1701を送信し、これに対するNAT検査応答メッセージを含むパケット1702を受信する。
第1の変換方法判定部105が、Port Restricted Cone NATでないと判定しなかった場合は(ステップS1110:NO)、新たなIPアドレスB2、ポート番号b2を選択し(ステップS1107)、同じ処理を繰り返す。なお、第2段階の処理では、宛先IPアドレスSおよび宛先ポート番号yを固定にして送信を行う。
同図においては、上記処理を繰り返してもルータ110がPort Restricted Cone NATでないと判定できなかった場合の例を示している。すなわち、繰り返しの処理において、ルータ110は、すべて異なる変換先のIPアドレス、変換先のポート番号の組を割り当てている。例えば、ルータ110は、パケット1701とパケット1703に対して、異なる変換先のIPアドレス、ポート番号の組(N1、n1)、(N2、n2)を割り当てている。
その結果、ルータ110は、使用できるすべてのIPアドレス、ポート番号の組を使い果たし、通信装置100がIPアドレスBm、ポート番号bmからNAT検査要求メッセージを送信したときには、そのNAT検査要求メッセージを含むパケット1704を転送できなくなる。このため、通信装置100は、NAT検査応答メッセージを受信できなくなり(ステップS1109:YES)、第3段階の処理(ステップS1112)を行うことになる。
ここで、通信装置100が、第3段階の処理として、第2段階の処理で未使用であるIPアドレスB、ポート番号bから第2段階の処理と同じ宛先IPアドレスS、第2段階の処理と異なる宛先ポート番号zを指定してNAT検査要求メッセージを含むパケット1705を送信したとする。
ルータ110がPort Restricted Cone NATではない場合、ルータ110は、以前に使用したIPアドレス、ポート番号の組を用いて、パケット1705の送信元IPアドレス、送信元ポート番号を変更し、サーバ140に転送することができる。例えば、同図に示す例では、パケット1705の送信元IPアドレス、送信元ポート番号として、以前使用したパケット1703の送信元IPアドレス、送信元ポート番号の変換先と同一のN2、n2を割り当ててパケット1705を転送している。
このように、ルータ110がPort Restricted Cone NATではない場合は、ルータ110はサーバ140へパケット1705を送信し、NAT検査応答メッセージを含むパケット1706を受信することができる。
一方、ルータ110がPort Restricted Cone NATである場合、ルータ110は新たな送信元IPアドレス・ポート番号である(B、b)の組に対し、新たな変換先IPアドレス・ポート番号の組を割り当てることができず、サーバ140にパケット1705を転送することができない(同図には図示せず)。このため、サーバ140からのNAT検査応答メッセージを含むパケット1706を受信することができない。
したがって、第2の変換方法判定部106は、NAT検査応答メッセージを含むパケット1706を受信できたか否かによって、ルータ110がPort Restricted Cone NATであるか否かを判定することができる(ステップS1604)。図17においては、パケット1706が受信できたため、ルータ110はPort Restricted Cone NATでないと判定される場合の例が示されている。
次に、本実施の形態にかかる通信装置100における変換方法判定処理のより具体な例について説明する。図18は、第2段階の処理において、ルータがPort Restricted Cone NATでないと判定される例を示した説明図である。
同図においては、ローカルエリアネットワーク120に属する通信装置100が、非特許文献1における4タイプのNAT機能のいずれとも異なる動作を行うルータ110に接続され、プライベートIPアドレスAが割り当てられていることを前提とする。また、ルータ110はインターネット130に直接接続され、グローバルIPアドレスNのみが割り当てられている。また、サーバ140はインターネット130に直接接続され、それぞれグローバルIPアドレスSが割り当てられている。
まず、通信装置100は、第1段階の処理として、ヘッダ(UDP、A、1111、S、123)を有し、NAT検査要求メッセージを含むパケット1801を送信する。ルータ110はパケット1801の送信元IPアドレス、送信元ポート番号をそれぞれ変換し、ヘッダ(UDP、N、1000、S、123)を有するパケット1802をサーバに転送する。
パケット1802を受信したサーバ140は、NAT検査応答メッセージにN、1000を記述したパケット1803を通信装置100に返信する。通信装置100は受信したパケット1804から、NAT変換結果(UDP、A、1111、S、123、N、1000)を得る。
次に、通信装置100は、第2段階の処理として、ヘッダ(UDP、A、2222、S、456)を有し、NAT検査要求メッセージを含むパケット1805を送信する。ルータ110はパケット1805の送信元IPアドレス、送信元ポート番号をそれぞれ変換し、ヘッダ(UDP、N、3000、S、456)を有するパケット1806を転送する。パケット1806を受信したサーバ140は、NAT検査応答メッセージにN、3000を記述したパケット1807を、通信装置100に返信する。通信装置100は受信したパケット1808から、NAT変換結果(UDP、A、2222、S、456、N、3000)を得る。
次に通信装置100は、2つのNAT変換結果(UDP、A、1111、S、123、N、1000)、(UDP、A、2222、S、456、N、3000)を比較する。この結果、ルータ110は、パケット1801、パケット1805の送信元ポート番号を、それぞれ異なる値に変換することが分かる。すなわち、通信装置100が異なる送信元から異なる宛先へ2つのパケットを送信した結果、ルータ110はそれぞれ異なるポート番号を用いてNAT変換を行ったことになる。この変換結果は、Port Restricted Cone NATによる変換結果と同一である。しかし、この時点ではルータ110が本当にPort RestrictedCone NATであると断定することができない。
そこで、通信装置100は、さらに送信元を変更して、第2段階の処理を繰り返す。図18においては、この繰り返しの最後に、通信装置100がNAT検査要求メッセージを含むパケット1809を送信し、ルータ110がパケット1809を、ヘッダ(UDP、N、1000、S、456)を有するパケット1810に変換する。すなわち、パケット1801とパケット1809の送信元ポート番号が異なるにも関わらず、ルータ110は同じIPアドレスN、ポート番号1000に変換する。
これはPort Restricted Cone NATのアドレス変換アルゴリズムに反しており、通信装置100は、サーバ140から受信したNAT検査応答メッセージを含むパケット1811を第1段階の処理におけるNAT変換結果と比較することによりこれを検知する(ステップS1503、ステップS1504)。そして、ステップS1506において、ルータ110がPort Restricted Cone NATでないことを出力し処理を終了する(ステップS1111)。
図19は、第3段階の処理において、ルータがPort Restricted Cone NATであると判定される例を示した説明図である。
同図においては、ローカルエリアネットワーク120に属する通信装置100が、Port Restricted Cone NATタイプであるルータ110に接続され、プライベートIPアドレスAが割り当てられていることを前提とする。また、ルータ110はインターネット130に直接接続され、グローバルIPアドレスNのみが割り当てられている。また、サーバ140はインターネット130に直接接続され、それぞれグローバルIPアドレスSが割り当てられている。
まず、通信装置100は、第1段階の処理として、ヘッダ(UDP、A、1111、S、123)を有し、NAT検査要求メッセージを含むパケット1901を送信する。ルータ110はパケット1901の送信元IPアドレス、送信元ポート番号をそれぞれ変換し、ヘッダ(UDP、N、1000、S、123)を有するパケット1902をサーバに転送する。
パケット1902を受信したサーバ140は、NAT検査応答メッセージにN、1000を記述したパケット1903を通信装置100に返信する。通信装置100は受信したパケット1904から、NAT変換結果(UDP、A、1111、S、123、N、1000)を得る。
次に、通信装置100は、第2段階の処理として、ヘッダ(UDP、A、2222、S、456)を有し、NAT検査要求メッセージを含むパケット1905を送信する。ルータ110はパケット1905の送信元IPアドレス、送信元ポート番号をそれぞれ変換し、ヘッダ(UDP、N、3000、S、456)を有するパケット1906を転送する。パケット1906を受信したサーバ140は、NAT検査応答メッセージにN、3000を記述したパケット1907を、通信装置100に返信する。通信装置100は受信したパケット1908から、NAT変換結果(UDP、A、2222、S、456、N、3000)を得る。
次に通信装置100は、2つのNAT変換結果(UDP、A、1111、S、123、N、1000)、(UDP、A、2222、S、456、N、3000)を比較する。この結果、ルータ110は、パケット1901、パケット1905の送信元ポート番号を、それぞれ異なる値に変換することが分かる。すなわち、通信装置100が異なる送信元から異なる宛先へ2つのパケットを送信した結果、ルータ110はそれぞれ異なるポート番号を用いてNAT変換を行ったことになる。この変換結果は、Port Restricted Cone NATによる変換結果と同一である。しかし、この時点ではルータ110が本当にPort RestrictedCone NATであると断定することができない。
そこで、通信装置100は、さらに送信元を変更して、第2段階の処理を繰り返す。ルータ110はPort Restricted Cone NATであるので、通信装置100が送信した送信元IPアドレス・ポート番号が異なるパケットに対して、異なるポート番号を変換先の送信元ポート番号として割り当てる。図19においては、パケット1905とパケット1909の送信元ポート番号が、それぞれポート番号3000、2000に変換されている。
ところで、図19に示す例においては、ルータ110に割り当てられているグローバルIPアドレスは1つだけ(N)である。また、NAT変換に利用できるポート番号は1から65535までである。ルータ110はPort Restricted Cone NATなので、ルータ110がNAT変換に利用できるIPアドレス、ポート番号の組は、全部で65535組である。すなわち、通信装置100が、送信元ポート番号の異なる65535個のNAT検査要求パケットを送信したとき(パケット1909を送信したとき)、ルータ110はNAT変換に利用可能な全てのIPアドレス、ポート番号の組を使い果たすことになる。
図19に示す例では、ルータ110がNAT変換に利用可能な全てのIPアドレス、ポート番号の組を使い果たした状態において、通信装置100が、NAT検査要求メッセージを含むパケット1910を送信する。しかし、ルータ110は利用可能なIPアドレス、ポート番号の組を全て使い果たしているので、パケット1910の送信元IPアドレス、送信元ポート番号を変換できず、転送することができない。
この場合、通信装置100は、第3段階の処理を実行する(ステップS1112)。例えば、通信装置100はIPアドレスB、ポート番号2000という、これまで使用していない組を送信元IPアドレス・ポート番号として、NAT検査要求メッセージを含むパケット1911を送信する(ステップS1601)。ただし、宛先IPアドレスはこれまでと同じIPアドレスSを、宛先ポート番号は、これまでとは異なるポート番号789を設定している。
ルータ110は既にNAT変換に利用可能なIPアドレス、ポート番号の組を全て使い果たしているので、パケット1911もインターネット130に転送することができない。その結果、通信装置100はNAT検査応答メッセージを受信できない。
そこで、通信装置100はルータ110がPort Restricted Cone NATであると判断し(ステップS1604)、その旨を出力して変換方法判定処理を終了する(ステップS1606、ステップS1113)。
なお、第2段階の処理を繰り返すとルータ110にかかる負荷が大きくなるため、繰り返しの回数に制限をかけるように構成してもよい。例えば、予め定められた繰り返し回数の閾値を越えた場合、ルータ110はPort Restricted Cone NATである可能性が高いと判定して変換方法判定処理を終了するように構成してもよい。
また、ステップS1107において、第2段階の処理の最初に選択する送信元IPアドレスB1および送信元ポート番号b1を、第1段階の処理のときに使用した送信元IPアドレスAおよび送信元ポート番号aと同一の値に設定するように構成してもよい。ルータ110がSymmetric NATである場合に変換方法の判定が早く完了するからである。
すなわち、このように構成した場合の第1段階の処理におけるNAT変換結果を(UDP、A、a、S、x、N1、m1)と、第2段階の処理におけるNAT変換結果を(UDP、A、a、S、y、N2、m2)とすると、ルータ110がSymmetric NATであれば、N1≠N2またはm1≠m2となる。このため、ステップS1505の判定の結果が偽(NO)となり、第2段階の処理の最初の判定処理において、ルータ110はPort Restricted Cone NATタイプではないと判定され、処理を終了することができるためである(ステップS1506、ステップS1111)。
このように、本実施の形態にかかる通信装置100では、ルータのNAT機能のタイプの検査を、ルータのNAT機能がPort Restricted Cone NATタイプではないことを判定できるまで、または、検査するためのメッセージに対する応答のメッセージが受信できなくなるまで繰り返し行い、応答のメッセージが受信できなくなった場合には、さらに判別を行うためのメッセージを送信して、それに対する応答のメッセージの受信可否によりルータのNAT機能がPort Restricted Cone NATタイプであるか否かを正確に判別することができる。
本実施の形態にかかる通信装置は、CPUなどの制御装置と、ROM(Read Only Memory)やRAMなどの記憶装置と、HDD、CDドライブ装置などの外部記憶装置と、ディスプレイ装置などの表示装置と、キーボードやマウスなどの入力装置を備えており、通常のコンピュータを利用したハードウェア構成となっている。
本実施の形態にかかる通信装置で実行される通信プログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
また、本実施の形態にかかる通信装置で実行される通信プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、本実施の形態にかかる通信装置で実行される通信プログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
また、本実施の形態の通信プログラムを、ROM等に予め組み込んで提供するように構成してもよい。
本実施の形態にかかる通信装置で実行される通信プログラムは、上述した各部(第1の送信部、第2の送信部、第1の受信部、第2の受信部、第1の変換方法判定部、第2の変換方法判定部)を含むモジュール構成となっており、実際のハードウェアとしてはCPU(プロセッサ)が上記記憶媒体から通信プログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、上述した各部が主記憶装置上に生成されるようになっている。