2.7. NAT
2.7.1. NAPT
ードもしくはトンネルモード)、使用する認証アルゴリズムや暗号アルゴリズム、認証や暗号 に用いる鍵もしくは鍵の入手方法等を指定する必要がある。これらの情報を SA(Security
Association)と呼び、送信元と送信先のペアごとに管理される。すなわち、SAは単方向であり、
双方向の通信を行うためには、通信相手への送信用のSAと通信相手からの受信用のSAの二 つを設定する必要がある。これを管理するデータベースをSADと呼ぶ。SA にはSPIという SAを識別する値を定め、端末間ではこのSPIを用いパケットの生成に用いたSAを共有する。
SA は事前に管理者が手動で設定をしておくことが可能だが、自動鍵管理プロトコル(IKE Internet key Exchange)[16][17]で自動生成をすることも可能である。IKEはUDPの500番 ポートを用いるプロトコルであり、IPsec の通信に先立って、IPsec の通信を行う装置間で通 信を行い、SAの生成を行う。
NAPT ルータ
WEBサーバA 192.168.1.1
WEBサーバB インターネット
インターネット 端末A
端末B 端末C
2.2.2.2
3.3.3.3 1.1.1.1
192.168.1.2 192.168.1.3
LAN
図 2-20 NAPTルータを含むネットワーク
端末AがWEBサーバにアクセスしようと、図 2-21に示すパケットを送信する。
ソースポート
1111 ペイロード
ソースアドレス 192.168.1.1
宛先ポート 80 宛先アドレス
2.2.2.2
図 2-21 TCPパケット概略図
ここでソースポートはクライアントAが1024番以上の値から任意につけた値である。
このパケットを受け取ったNAPTルータはインターネットに転送する前に、ソースIPアド レスをNAPTルータのもつグローバルIPアドレスに変更し、ソースポートに任意の値を用い たアドレス変換を行い、図 2-22のパケットを生成する。
ソースポート
3000 ペイロード
ソースアドレス 1.1.1.1
宛先ポート 80 宛先アドレス
2.2.2.2
図 2-22 NAPT変換されたパケット
このパケットを受け取った WEB サーバ A は WEB へのアクセスの応答を返すために、図 2-23のパケットのソースIPアドレス、ソースポートを宛先としたパケットを生成して、イン ターネットに送信する。
ソースポート
80 ペイロード
ソースアドレス 2.2.2.2
宛先ポート 3000 宛先アドレス
1.1.1.1
図 2-23 NAPT装置へ向けた応答パケット
図 2-23のパケットを受け取った NAPTルータは宛先アドレスを端末A のIPアドレスに、
宛先ポートを端末 A がパケットを生成したときのソースポートにアドレスを変換して、図 2-24のパケットを送信する。
ソースポート
80 ペイロード
ソースアドレス 2.2.2.2
宛先ポート 1111 宛先アドレス
192.168.1.1
図 2-24 NAPT装置がアドレス変換したパケット
このパケットは、最初に端末Aが送信したパケットの返信パケットの形式を満たしているため、
端末Aは経路上にNAPT装置があることを意識することなく通信を行うことができる。
以上のようにアドレスを変換して通信を行うことができることを述べたが、次に複数の端末 で一つのIPアドレスを共有してインターネット上のサーバにアクセスできることを示す。
表 2-2に示すように前述のフローについてNAPTルータはLAN内の端末と、変換したポー ト番号と宛先を関連付けて管理している。LAN内の端末から送信されたパケットのIPアドレ スとポート番号をアドレス変換する際に、書き換えたポート番号を保持する。これにより、イ ンターネット側から送信されたパケットが NAPT ルータに到達した際に、LAN 内のどの IP アドレス宛ての、何番ポートに書き換えるか決めることができる。
表 2-2 NAPT装置内のルールの概念
LAN側の端末のIPアドレス、ポート番号 変換後のポート番号 ルール番号 IPアドレス ポート番号 ポート番号
No.1 192.168.1.1 TCP 1111 TCP 3000
端末Aと同様に端末BがWEBサーバAにアクセスするケースを考える。
端末BはWEBサーバAに宛てたパケットを図 2-25のように生成する。
ソースポート
1111 ペイロード
ソースアドレス 192.168.1.2
宛先ポート 80 宛先アドレス
2.2.2.2
図 2-25 端末Bが生成したWEBアクセス要求のTCPパケット
ソースポートは1024以上の任意の値である。このパケットを受け取ったNAPTルータは図 2-26のようにアドレス変換する。変換後のソースポートを3001番としたルールを表 2-2に追 加し表 2-3を生成する。
ソースポート
3001 ペイロード
ソースアドレス 1.1.1.1
宛先ポート 80 宛先アドレス
2.2.2.2
図 2-26 NAPT装置によってアドレス変換された端末Bの生成したパケット 表 2-3 端末Bのためのルールを追加したNAPTルール
LAN側の端末のIPアドレス、ポート番号 変換後のポート番号 ルール番号 IPアドレス ポート番号 ポート番号
No.1 192.168.1.1 TCP 1111 TCP 3000
No.2 192.168.1.2 TCP 1111 TCP 3001
図 2-26 のパケットを受け取った WEB サーバ A は図 2-27 に示すように宛先ポート番号が 3001のパケットをNAPTルータのアドレスに送信する。
ソースポート
80 ペイロード
ソースアドレス 2.2.2.2
宛先ポート 3001 宛先アドレス
1.1.1.1
図 2-27 NAPT装置に返したパケット
NAPTルータはパケットを受け取ると、宛先ポート番号をキーにして表 2-3を検索し、転送先 のIPアドレスとポート番号を取得する。宛先ポート3001はルール番号No.2に一致し、宛先 IPアドレスを192.168.1.2、宛先ポートを1111に変換して、図 2-28のパケットを端末Bに送 信する。
ソースポート
80 ペイロード
ソースアドレス 2.2.2.2
宛先ポート 1111 宛先アドレス
192.168.1.2
図 2-28 NAPT装置がアドレス変換して端末Bへ送信したパケット
さらに、端末Aや端末BがWEBサーバBとも通信しようとした際には、表 2-3で未使用の ポート番号を用いてアドレス変換をすることで、WEB サーバAとの通信を継続したまま、
WEBサーバBとの通信も実現することができる。
このようにNAPTを用いると一つのグローバルIPアドレスで複数の端末がインターネット と同時にアクセスできるようになる。
ここで見たように、NAPT はアドレス変換にポート番号を用いている。また ICMP を通過 させる際には、ICMP query IDを用いてアドレス変換を実現することができる。このように
NAPTでは、TCP/UDPもしくはICMPのプロトコルに対してアドレス変換を実現することが
できる。
また、表 2-3のルールはIPパケットがLANからインターネットに送信されるタイミング で生成されている。そのため NAPT ではプライベートアドレスを持つ端末からインターネッ トへアクセスする際には利用することができるが、インターネット側からLAN内の端末にア クセスを開始しようとした際には、表 2-3に内部充てのパケット処理のルールが生成されてい ないため、受信したパケットは NAPT ルータ自身への通信であるように処理され、通常、パ ケットは廃棄される。