Featured image of post NATとNAPTとは?プライベートIPがインターネットを使える仕組みをやさしく解説【第23回】

NATとNAPTとは?プライベートIPがインターネットを使える仕組みをやさしく解説【第23回】

この記事でわかること

  • NAT(Network Address Translation)とは何か
  • NATだけでは足りなくて、NAPTが生まれた理由
  • ポート番号とは何か(かんたんな導入)
  • ルーターが変換テーブルを使って複数デバイスの通信を管理する仕組み
  • NATのセキュリティ効果と、外部からの接続に関する限界

はじめに

前回の記事では、IPアドレスに「グローバルIPアドレス」と「プライベートIPアドレス」の2種類があることを学びました。プライベートIPアドレスはインターネット上では通用しない——そう書きました。

でも、自宅のスマートフォンもパソコンも、普通にウェブを閲覧できていますよね。プライベートIPアドレスしか持っていないのに。

この矛盾を解決しているのがルーターです。正確には、ルーターが担っている NAT という仕組みです。


NAT(Network Address Translation)とは

NATを英単語ひとつひとつに分解してみましょう。

  • Network(ネットワーク):ネットワーク
  • Address(アドレス):住所・アドレス
  • Translation(トランスレーション):「翻訳」「変換」という意味。英語のテキストを日本語に訳すときの「翻訳(translation)」と同じ単語です

まとめると「ネットワークのアドレスを変換する仕組み」です。

具体的には、パケットの中に書かれたIPアドレスをルーターが書き換えます。内側から外に出るときはプライベートIPをグローバルIPに、外から戻ってきたときはグローバルIPをプライベートIPに書き換えることで、内部のデバイスがインターネットと通信できるようにしています。

郵便局の住所変換サービスに似ています。内側から出ていく荷物の差出人欄を「建物の公式住所(グローバルIP)」に書き換えて発送し、返送品が届いたら本来の送り主(内部デバイス)に届け直す——そんなイメージです。


NATだけでは足りなかった

初期のNATは「1つのプライベートIPアドレスを1つのグローバルIPアドレスに対応させる」1対1の変換でした。

この仕組みだと、10台のデバイスを同時にインターネットにつなぐには10個のグローバルIPアドレスが必要です。家庭に1つのグローバルIPアドレスしかなければ、1台しかインターネットに出られません。IPv4アドレス枯渇の解決にもなりません。

そこで生まれたのが NAPT(Network Address Port Translation) です。

NAPTは「多対1の変換」を実現します。1つのグローバルIPアドレスを使って、何十台ものデバイスが同時にインターネットを使えるようになります。今の家庭用ルーターが実際に使っているのはこのNAPTです。「NAT」と呼ばれることが多いですが、技術的にはほぼNAPTと考えてください。


ポート番号——通信の「受付窓口番号」

NAPTを理解するには「ポート番号」という概念が必要です。ポート番号はトランスポート層の話で改めて詳しく扱いますが、ここではNAPTを理解する最低限の範囲だけ見ておきます。

ポート番号は「通信の受付窓口番号」です。0から65535までの数字が使われます。

パソコンからウェブページを開くとき、OSが自動的にポート番号を割り当てます。

ブラウザのタブA   → ポート番号:51001番
ブラウザのタブB   → ポート番号:51002番
別のアプリの通信  → ポート番号:51003番

同じパソコンから複数の通信が同時に発生していても、ポート番号が違えば「これはタブAの通信」「これはタブBの通信」と区別できます。ポート番号は「どの通信のための荷物か」を識別するための整理番号です。

これがNAPTの鍵になります。


NAPTを英単語で理解する

NAPTを英単語に分解するとこうなります。

  • Network(ネットワーク):ネットワーク
  • Address(アドレス):住所・アドレス
  • Port(ポート):「港」が語源。ネットワークでは「通信の受付窓口番号(ポート番号)」を指します
  • Translation(トランスレーション):変換

NATにポート番号の変換を加えた仕組み——それがNAPTです。IPアドレスだけでなくポート番号も一緒に管理することで、1つのグローバルIPアドレスを使って複数のデバイスの通信を区別できるようになります。


NAPTの仕組み——アパートの管理人で理解する

次のような場面を想像してください。

あなたはアパートの101号室に住んでいます(プライベートIPアドレス)。
建物の入口には管理人室があり、外の世界との窓口は管理人だけが持っています(グローバルIPアドレスを持つルーター)。
外に荷物を送るとき、管理人は差出人欄を「△△マンション 受付窓口①」に書き換えて発送します。
返送品が届くと、管理人はメモ帳を確認して「窓口①は101号室の荷物だ」と判断し、届けてくれます。

NAPTは、この「管理人+メモ帳」の役割をルーターが担っています。

変換テーブル——ルーターのメモ帳

ルーターは通信のたびに「変換テーブル」と呼ばれる対応表を内部で作ります。

内部IPアドレス 内部ポート番号 グローバルIPアドレス 外部ポート番号 通信相手
192.168.1.2 51001 203.0.113.1 51001 YouTube
192.168.1.3 51002 203.0.113.1 51002 Amazon
192.168.1.2 51003 203.0.113.1 51003 Gmail

パソコン(192.168.1.2)とスマートフォン(192.168.1.3)が同時に通信していても、ポート番号が違うので区別できています。YouTubeからの返信パケットが届いたとき、ルーターは「ポート番号51001番 → 192.168.1.2に届ける」と変換テーブルを参照して転送先を決めます。

パケットの動きを追う

もう少し具体的に見てみましょう。パソコン(192.168.1.2)がYouTubeにアクセスする場面です。

【送信:内側 → インターネット】

① パソコンがルーターにパケットを送る
   送信元IPアドレス :192.168.1.2(プライベート)
   送信元ポート番号 :51001

② ルーターが送信元を書き換えてインターネットへ転送
   送信元IPアドレス :203.0.113.1(グローバル)← 書き換え
   送信元ポート番号 :51001
   ※ルーターは変換テーブルに「51001 → 192.168.1.2」を記録


【受信:インターネット → 内側】

③ YouTubeのサーバーからルーターに返信が届く
   宛先IPアドレス :203.0.113.1
   宛先ポート番号 :51001

④ ルーターが変換テーブルを参照して転送先を決める
   宛先IPアドレス :192.168.1.2 ← 書き換え
   宛先ポート番号 :51001

⑤ パソコンに届く

この変換をルーターが自動で行っています。ユーザーは何も意識せずに通信できます。


複数のデバイスが同時に使えるのはなぜか

スマートフォン・パソコン・タブレットが同時にインターネットを使えるのも、NAPTのおかげです。

変換テーブルにはデバイスごとに異なるポート番号が記録されます。返信パケットが届いたとき、ルーターはポート番号だけを見て「これはパソコンへ」「これはスマートフォンへ」と判断できます。グローバルIPアドレスは1つだけでも、ポート番号が区別してくれるので混線しません。


NATのセキュリティ効果

NAPTにはアドレス節約の以外に、セキュリティ上の副産物があります。

プライベートIPアドレスを持つデバイスは、インターネット側から見えません。外部の誰かが 192.168.1.2 に直接パケットを送ろうとしても、インターネット上のルーターがそのパケットを届けてくれません(前回説明したRFC 1918の設計によるものです)。外の世界から見えるのはルーターのグローバルIPアドレスだけです。

攻撃者からすれば「建物の中に何台いるのか、どんな部屋番号があるのかわからない」状態です。無差別な攻撃を受けにくくなります。

ただし、これはあくまでも副産物です。NATをセキュリティ対策の主軸にするのは危険で、本格的な防御にはファイアウォールが必要です。「NATがあるから安全」という思い込みは禁物です。


NATの限界——「外から中への通信」は難しい

NAPTには構造的な弱点があります。外部から内部のデバイスへ通信を届けにくいという点です。

変換テーブルは「内部のデバイスが通信を始めた瞬間」に作られます。デバイスが何も通信していない状態では、変換テーブルに記録がありません。

外部からルーターのグローバルIPアドレス宛てにパケットが届いても、ルーターは「これを192.168.1.2に届けるべきか、192.168.1.3に届けるべきか」判断できません。手がかりがないので、パケットを捨ててしまいます。

この制限が問題になる場面があります。

  • オンラインゲームのホスト機能:対戦相手から接続を受け付けるには、外からルーターを通じて内部のゲーム機に届ける必要があります
  • 自宅サーバーの公開:外部からHTTPリクエストを受け取るには、ルーターが届け先を判断できなければなりません

ポートフォワーディング——届け先をあらかじめ指定する

この問題を解決するのが**ポートフォワーディング(Port Forwarding = ポート転送)**という設定です。

  • Port(ポート):ここでは「通信の受付窓口番号(ポート番号)」
  • Forwarding(フォワーディング):「転送」「前へ送る」という意味の英語

「ポート番号○○番のパケットが外から届いたら、192.168.1.5に届けろ」とルーターにあらかじめ指示しておく設定です。変換テーブルに最初から書き込んでおくようなイメージです。

家庭用ルーターの管理画面に「ポートフォワーディング」や「仮想サーバー」「ゲーム機の設定」という項目があるのを見たことがある方もいるかもしれません。それがこの機能です。オンラインゲームのポート開放設定も、このポートフォワーディングを使っています。


まとめ

  • **NAT(Network Address Translation)**は「プライベートIPアドレスとグローバルIPアドレスを変換する仕組み」
  • 初期のNATは1対1の変換だったため、ポート番号も合わせて変換する**NAPT(Network Address Port Translation)**が生まれた。今の家庭用ルーターはほぼNAPTを使っている
  • ルーターは「変換テーブル」を内部に持ち、どの通信がどのデバイスのものかをポート番号で区別して管理している
  • NATの副産物として、内部デバイスがインターネット側から見えにくくなるセキュリティ効果がある(ただしファイアウォールの代わりにはならない)
  • NATの弱点は「外から内への通信の受け付け」。ポートフォワーディングを設定することで解決できる

家庭のルーターが陰でこれだけの処理をこなしていると知ると、改めて見方が変わりますよね。次回はルーターがパケットをどの経路で届けるかを決める仕組み——ルーティングについて学んでいきます。