ページの先頭です。
このページの本文へ移動します。
MCU入門
MCU入門

NAT/FW トラバーサル
3. NAT/FW トラバーサルの仕組み “NATとは”
MCU入門 第9回

MCU入門 第9回

NAT/FW トラバーサル 3. NAT/FW トラバーサルの仕組み “NATとは”

2011年9月掲載
MCU入門 第9回 NAT/FW トラバーサル 目次
 

NAT(ナット:Network Address Translation)とは

Network Address Translationの略で、通常はルーターが提供する機能です。
自社の内側の人が外側の人とダイレクトに接続しないように、一度IPアドレス(住所)を変換してくれる通訳の役割をします。

もともとは、ローカルアドレス(プライベートアドレス)を利用しているPCを複数台グローバルアドレスに接続するという、利便性のための仕組みです。現在IPv4のグローバルアドレスは枯渇してしまいましたが、ローカルアドレスをうまく利用することで、グローバルアドレスの有効活用ができます。

上記は、「内から外側」という見方です。逆に、外から内側という見方をするとどうでしょう?
ルーターのグローバルアドレスが1つしかないのに、ローカルIPであるPCは複数台存在します。
アドレスが1対1対応ではないので、外部から見たら内部のPCを特定できない=セキュリティが高いのです。

NAT」にも、種類があります。通常「NAT」というと、狭い意味のNATとNAPTの両方を含むことが多いです。
この2つは、名前は似ているのですが、仕組みが違います。

狭い意味の NAT (Network Address Translation) はTCP/UDPのポート番号は変換せず、IPアドレスだけをルータで変換します。
変換されるのは一度に1つのローカルアドレスだけです。このため、複数のローカルアドレスで外部接続しようとすると、時間をずらす必要があります。

NATのしくみイメージ図

NAPTは、Network Address Port Translationの略です。NATとの違いは「Port」。
そう、IPアドレスを変換する点ではNATと同じですが、TCP/UDPのポート番号をルーターで動的に変換するところが違います。

ポート番号の変更をするおかげで、ローカルアドレスのIPが複数同時にグローバルに出て行ける、という長所があります。
でも、ポート番号って、サーバーのプログラムサービスを指定するための番号ですよね。 ルーターが勝手にポート番号を変えたら、必要なサービスが受けられなくなるような気がしませんか?

NAPTでは、サーバーへの「返信宛先通知」のときに利用する、クライアントの「IPアドレスとポート番号」をルーターで変更する、というものです。ポート番号は、サーバーのサービスを指定するためのものなので、クライアントのポート番号は任意のものでかまいません。

このため、ルーターはNAPT機能によって、IPアドレスをクライアントのものからルーター自身のものに、ポート番号を、任意の番号に書き換えます。サーバーからの返信は、ルーターのIPアドレス宛てで、先に任意で付けたポート番号宛てに来ます。 ルーターはそれを受け取ったら、先とは逆の変換をします。

IPアドレスをクライアントのIPアドレス、ポート番号はクライアントがつけていた元のポート番号に戻すのです。
このため、サーバーからクライアントに返信が届くときは、クライアントが最初に指定した「IPアドレスとポート番号」宛てに戻ってくることになります。
クライアントからすると、あたかもNAPTされておらず、サーバーと直接行ったように、通信が成り立つのです。

NAPTのしくみイメージ図