【NAT / NAPT変換】の意味, 目的, 種類, 仕組み, セキュリティ, メリット・デメリットについて

NAT とは

NAT(読み方:なっと)とは、Network Address Translation の略で、送信元、もしくは宛先の IP アドレスを、あらかじめ決められたルールに従い別の IP アドレスに変換する機能です。

ルータやファイアウォール、回線負荷分散装置などの NW 機器に実装されます。(L3 スイッチには実装されていないことが多いです)

プライベート IP アドレスは色々な家庭や企業で利用されているため、インターネット上ではルート情報はありません。

宛先がグローバル IP であっても送信元IPがプライベート IP の場合は返りの通信の宛先がプライベート IP となりますが、インターネット上にはルートが無く、返りのパケットが破棄されてしまいます

そのため、社内ネットワークや家庭ネットワーク等のローカルエリアネットワークとインターネットの境界に NAT ルータを設置し、送信元のプライベート IP とグローバル IP をうまく変換してくれるため、通信ができるのです。

元々は枯渇し始めた IP を節約する技術ですが、グローバル IP を隠す、という意味で、セキュリティの向上にもなります

NAT の種類

NAT は大きく 4 つの種類があります。静的か動的か、TCP/UDP のポート変換を含めるかどうか、の 2×2 です。

1. 静的 NAT (Static NAT)

1 つの IP アドレスを別の IP アドレスに 1 対 1 で変換します。主にグローバル IP を、外部公開サーバのプライベート IP に変換するために使います。

2. 静的 NAPT (Static NAPT)

1 つの IP アドレス + ポート番号を別の IP アドレス + ポート番号に 1 対 1 で変換します。変換後のポート番号を指定します。主な用途は静的 NAT と変わりません。PAT とも呼ばれます。

3. 動的 NAT (Dynamic NAT)

『NAT プール』と呼ばれる変換後のアドレスリストを使い、接続に来た通信の送信元 IP を NAT プールの未使用のアドレスに多対多で変換します。プールを使い切ったら以降のクライアントは接続できません。アドレスが回収されるまで待たされます。

グローバル IP が余っている組織が外部接続に使ったり、組織内で NW アドレスが重複しているような環境で使われたりします。

4. 動的 NAPT (Dynamic NAPT)

接続に来た通信の送信元 IP アドレスを 1 つのグローバル IP に多対 1 に変換します。その際、送信元ポート番号を未使用のポート番号に変換します。一般家庭から大企業まで、ほぼ全てのインターネット接続において使われています。

なお、単に NAPT と言った場合も動的 NAPT を指すことが多いです。

また、NAT 規格化時点で既に『IP マスカレード』という UNIX 系ソフトウェアで実装されていた ( RFC3022 に記載あり)ことの名残か、IP マスカレードとも呼ばれたりします。

なお、マスカレードとは仮面舞踏会のことで、『どのポートが使われるか分からない』様子を表現したものなので、静的NAPT の表現としては普通は使いません。ですが一部の機器では『静的 IP マスカレード』という表現がなされていたりするようです。

NAT の使い方

主な使い道は大きく 3 つあります。

1. プライベート IP アドレスを使っている NW から、インターネットに出るとき

送信元 IP アドレスをプライベート IP アドレスからグローバル IP アドレスに変換します。これにより、インターネットからの戻りの通信経路を確保できます。

2. 企業内に立ち上げたプライベート IP アドレスのサーバを外部に公開するとき

宛先 IP アドレスをグローバル IP アドレスからプライベート IP アドレス(サーバの IP アドレス)に変換します。これにより、グローバル IP を効率的に使うことができます。

3. 企業内で IP アドレスが重複してしまったとき

制約あり。お奨めできませんが、一時的な対応としてはあり。

Case.1 プライベート IP アドレスを使っている NW から、インターネットに出るとき

現状、ほとんどの家庭、企業がこのパターンに当てはまります。

NAT の中でも主に動的NAPT [Network Address Port Translation](動的 PAT [Port Address Translation]や NAT オーバーロード、IP マスカレードとも呼ばれる)という機能が利用されます。

グローバル IP アドレスに余裕のある組織では動的 NAT を使うこともありますが、無駄遣いにしかならないため、普通は動的 NAPT です。

例えば、PC#1 と PC#3 がそれぞれ、インターネット上の Yahoo! の Web サーバ (182.22.25.124) を閲覧するときを考えます。

まず、利用するグローバル IP アドレスですが、通常は ISP から PPPoE 等でルータの WAN インタフェースに払い出される /32のIPアドレス を利用します。ここでは仮に 20.20.20.20 としています。

PC#1 (IPアドレス:192.168.1.31 TCP送信元ポート:30001 番)から、WebサーバA (IPアドレス:182.22.25.124 TCP宛先ポート:80 番) に通信する途中、ブロードバンドルータの動的 NAPT 機能により、ISP から割り当てられている唯一のグローバル IP アドレス 20.20.20.20 に変換されます。 その際、単に IP アドレスを変換するだけでなく、TCP 送信元ポート番号を 30001 番から適当なポート番号、例えば 50001 番に変換します。

また、それと同時に PC#3 (IPアドレス:192.168.1.33 TCP 送信元ポート:30003 番)から、Web サーバB (IP アドレス:20.20.20.20  TCP 宛先ポート:80 番)に通信するとします。端末 A と同様、送信元 IP アドレスを 20.20.20.20 に変換され、同時に TCP 送信元ポート番号を 30003 番から適当なポート番号、例えば 50003 番に変換します。ただし、端末 A が使っている 50001 番は使わないようにします。

これにより、戻りのパケットが来た時に、どちらの PC の IP アドレスに変換すればよいかが分かるようになります

逆に言うと、静的とは異なり、動的は行きの通信無しに、返りの通信は無いので、外から始まる通信は受け付けません。

このように、IP アドレスとポート番号のペアで変換を行なうことで、1つのグローバル IP アドレスを共有して インターネット閲覧をすることが可能になります

Case.2 企業内に立ち上げたプライベート IP アドレスのサーバを外部に公開するとき

例えばグローバル IP アドレスを 4 つしか持っていない企業で、社内外に公開する Web サーバを立ち上げたケースを考えてみましょう。

4 つしかないグローバルアドレスを直接割り当ててしまうと、Ethernet と IP の組合せでは必ずネットワークアドレスと ブロードキャストアドレスで 2 つ消費してしまい、残り 2 つしかグローバルアドレスが使えなくなってしまいます。

NAT を使うと、Ethernet インタフェースに IP を振らずに済むため、4 つ全てグローバル IP アドレスを使うことができます。

参考

【図解】Global IP 8個(固定IP8)の設計, 使い方~NAT利用,使えるアドレス数,IP Unnumbered~
【図解】Global IP 8個(固定IP8)の設計, 使い方~NAT利用,使えるアドレス数,IP Unnumbered~
※固定グローバル IP 8個を例として記載しますが、4つ以上のグローバル...

具体的な構成例として、下記の図を参照下さい。

154.3.2.1 というグローバルアドレスは、物理的には設定せず、NAT する機器(図ではファイアウォール)の NAT プールに設定する、という点に注意。NATプールには 1 つの IP のみ設定するので動的にはならない。

Case.3 企業内でIPアドレスが重複してしまったとき

ここでは詳しくは触れませんが、例えば192.168.1.0/24 というアドレスが 2 箇所に 存在してしまった場合、ルーティングでどちらの方向に向ければ良いか分かりません。

そういった場合は、片方を 172.16.1.0/24 というアドレスに対応させてしまう方法があります。

このようなケースでは動的NATが便利ですが、その場合は変換後の送信元 IP が毎回変わるので、変換後のIPから送信元の機器を特定するのが難しくなります。

1 対 1 で設定をすることも可能ですが、その場合は静的NATを台数分設定しなければなりません。セグメントに 20 台の端末があれば、20 個の NAT 設定をする必要があります。

(例)
192.168.1.1 ⇔ 172.16.1.1
192.168.1.8 ⇔ 172.16.1.8
192.168.1.12 ⇔ 172.16.1.12
192.168.1.17 ⇔ 172.16.1.17
192.168.1.18 ⇔ 172.16.1.18
・・・

シェアする

  • このエントリーをはてなブックマークに追加

フォローする