ネットワークの教科書NETWORK

第2章 アドレスのしくみ2-4コース全体 19回中8本目

入門読了 約8分

プライベートIPアドレスとNAT ― なぜ家のPCは 192.168 なのか

自宅のPCのIPアドレスがなぜ 192.168.x.x になるのか。プライベートIPアドレスとグローバルIPアドレスの違い、NATとNAPT(IPマスカレード)のしくみを解説します。

結論

IPv4アドレスが足りないから、プライベートIPアドレスとNATを使う

IPv4アドレスは32ビットで表され、全部で 2³² = 約43億個 しかありません。 世界中のスマホ・PC・ルータすべてに1つずつグローバルなアドレスを配ると、とっくに足りなくなっています。

そこで家庭や社内などの閉じた範囲では、誰でも自由に使ってよいプライベートIPアドレスを使います。 自宅のPCが 192.168.x.x になっているのはこのためです。 そしてインターネットに出ていくときだけ、ルータがグローバルIPアドレスに変換します。 この変換の技術を広くNAT(Network Address Translation)と呼びます。 家庭用ルータで実際に使われているのは、NATの中でもNAPTと呼ばれる方式です(詳しくは後述)。

郵便にたとえるとグローバルIPアドレスは建物の代表住所、プライベートIPアドレスは各部屋の部屋番号のようなものです。 建物の受付(ルータ)は、代表住所宛てに届いた荷物を、部屋番号を見て正しい部屋に届けます。
範囲

プライベートIPアドレスの範囲

プライベートIPアドレスとして使ってよい範囲は、RFC 1918という文書で3つに決められています。 インターネット上のグローバルIPアドレスとは重複しないように予約された範囲なので、 この範囲であれば誰が自分のネットワーク内で使っても問題になりません。

範囲CIDR表記アドレス数主な用途
10.0.0.0 〜 10.255.255.255/82²⁴ = 16,777,216個大企業向け
172.16.0.0 〜 172.31.255.255/122²⁰ = 1,048,576個中規模向け
192.168.0.0 〜 192.168.255.255/162¹⁶ = 65,536個家庭・小規模オフィス向け

家庭用ルータでは、慣習として3つの範囲のうち一番小さい 192.168.0.0/16 が 初期設定に使われていることがほとんどです。自宅のPCのIPアドレスが 192.168.x.x になりやすいのはこのためです。

しくみ

NATとは

NAT(Network Address Translation、ネットワークアドレス変換)は、 ルータが内部から外部へパケットを送り出すときに、送信元IPアドレス(プライベートIPアドレス)を グローバルIPアドレスに書き換える技術です。

戻りのパケットが届くと、ルータは逆の変換を行い、宛先をグローバルIPアドレスから 元のプライベートIPアドレスに書き換えて内部の機器に届けます。 この行き帰りの変換をルータが自動で行うことで、内部の機器はプライベートIPアドレスのままインターネットと通信できます。

実態

NAPT(IPマスカレード)

ここまでのNATは、プライベートIPアドレス1つにグローバルIPアドレス1つを対応させる方式です。 しかし家庭用ルータが持つグローバルIPアドレスは、ふつう1つだけです。それなのに家の中のスマホ・PC・テレビが 同時にインターネットへ接続できるのはなぜでしょうか。

実際に家庭用ルータで使われているのは、NATの中でもNAPTと呼ばれる方式です (NAPT = NAT + ポート番号の変換)。IPアドレスだけでなくポート番号も一緒に変換することで、 1つのグローバルIPアドレスを複数台の機器で同時に共有できます。日本ではIPマスカレードとも呼びます。 先ほどの郵便のたとえで言えば、部屋番号だけでなく荷物の宛名(ポート番号)も見て仕分けるイメージです。

ルータは内部から通信が発生するたびに、変換テーブルに対応関係を記録します。例えばこうなります。

プライベートIP:ポート(内部)グローバルIP:ポート(外部)
192.168.1.10:50001203.0.113.5:60001
192.168.1.11:50002203.0.113.5:60002
192.168.1.10:50003203.0.113.5:60003

戻りのパケットは、ポート番号(60001 など)を手がかりに どの内部機器宛かを判定し、正しいプライベートIPアドレスへ届けられます。

注意

NATがあると何が困るか

NAT(家庭用ルータではNAPT)の変換テーブルは、内部から外部へ通信が発生したときに作られます。 逆に、外部から内部の機器へ最初に接続しようとしても、対応するエントリが変換テーブルにまだ無いため、 パケットをどの内部機器に届けてよいか分からず、届きません。

これが困るのは、自宅でWebサーバーやゲームサーバーを公開したい場合です。 そこでポート開放(ポートフォワーディング)という設定を使います。 「このポート宛の通信は、この内部機器へ送る」という固定のエントリを、ルータにあらかじめ手動で用意しておくことで、 外部からの最初の接続でも正しい機器に届くようになります。

発展

IPv6ではどうなるか

IPv6のアドレス空間は 2¹²⁸ という、IPv4とは比較にならないほど広大な数です。 枯渇を心配する必要がないため、IPv6ではすべての機器にグローバルなアドレスを直接割り当てるのが基本設計であり、 NATを前提としません。プライベートIPアドレスとNATは、あくまでIPv4のアドレス不足を補うためのしくみです。

練習

練習問題(全5問)

選んでから「採点する」を押すと、解説つきで答え合わせができます。

Q1プライベートIPアドレスを使う理由は?
Q2192.168.1.1 はどの範囲に属する?
Q3NATとNAPT(IPマスカレード)の違いとして正しいのは?
Q4NAPTで複数台のPCが1つのグローバルIPアドレスを共有できるのはなぜ?
Q5自宅で公開したいサーバーに外部から接続できない理由と、その対処として正しいのは?
次の回

コースを読み進める