NAT(ナット)とは | 意味や読み方など丁寧でわかりやすい用語解説
NAT(ナット)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。
読み方
日本語表記
ネットワークアドレス変換 (ネットワークアドレスヘンカン)
英語表記
NAT (ナット)
用語解説
NAT(Network Address Translation)とは、IPアドレスを変換する技術である。主に、プライベートIPアドレスを使用する内部ネットワークと、グローバルIPアドレスを使用するインターネットとの間で通信を行う際に、ルーターなどの機器がIPアドレスを書き換えることで通信を可能にする。この技術は、世界中でインターネットが普及するにつれて、IPアドレスが不足するという問題(IPv4アドレス枯渇問題)を解決するために不可欠なものとして発展してきた。また、内部ネットワークの構成を外部から見えなくすることで、セキュリティの向上にも寄与している。内部の複数のデバイスがそれぞれ異なるプライベートIPアドレスを持つが、インターネットへ接続する際には、ルーターが持つ一つのグローバルIPアドレスに変換されるため、外部からは内部ネットワークの複雑な構造が見えず、より安全にインターネットを利用できる。
NATの基本的な動作は、データパケットの送信元IPアドレスと宛先IPアドレスを変換することにある。例えば、内部ネットワークのパソコンがインターネット上のウェブサーバーにアクセスする場合、パソコンは自身のプライベートIPアドレスを送信元とするデータパケットをルーターに送出する。ルーターはこのパケットを受け取ると、送信元IPアドレスを自身の持つグローバルIPアドレスに書き換え、インターネットへ転送する。ウェブサーバーからの応答パケットがルーターに到達すると、ルーターは宛先IPアドレスを元のプライベートIPアドレスに戻し、パソコンに転送する。この一連のIPアドレス変換処理をルーターが動的に、または静的に行うことで、内部ネットワークと外部ネットワーク間の通信が成立する。
NATにはいくつかの種類がある。最も基本的なものにスタティックNATとダイナミックNATがある。スタティックNATは、一つのプライベートIPアドレスに対して、常に一つの特定のグローバルIPアドレスを割り当てる固定変換である。これは主に、内部のサーバーを外部に公開する場合などに用いられる。例えば、社内ウェブサーバーに固定のグローバルIPアドレスを割り当てて、外部から常にそのグローバルIPアドレスでアクセスできるようにする。一方、ダイナミックNATは、複数のグローバルIPアドレスのプールを持ち、内部ホストがインターネットにアクセスする際に、プールの中から空いているグローバルIPアドレスを動的に割り当てて変換する。接続が終了すると、そのグローバルIPアドレスはプールに戻され、他のホストが利用できるようになる。
しかし、これらのNATでは、プライベートIPアドレスを持つ多数の内部ホストに対して、同数またはそれに近い数のグローバルIPアドレスが必要となる。そこで広く普及したのが、NAPT(Network Address Port Translation)またはPAT(Port Address Translation)と呼ばれる技術である。これは、複数のプライベートIPアドレスを持つ内部ホストが、たった一つのグローバルIPアドレスを共有してインターネットに接続できるようにする画期的な技術である。NAPTでは、IPアドレスだけでなく、トランスポート層のポート番号も変換対象とする。内部ホストが通信を開始する際、ルーターは送信元IPアドレスを自身のグローバルIPアドレスに変換するだけでなく、送信元ポート番号も一意な新しいポート番号に変換する。この変換情報をルーター内のマッピングテーブルに記録し、外部からの応答パケットが戻ってきた際に、変換されたポート番号を見て元のプライベートIPアドレスとポート番号を特定し、適切な内部ホストに転送する。これにより、一つのグローバルIPアドレスと多数のポート番号の組み合わせを用いることで、理論上、数万台の内部ホストが同時にインターネットへ接続できるようになるため、IPv4アドレス枯渇問題の解決に大きく貢献した。
NAPTには多くのメリットがある。最大のメリットは、単一のグローバルIPアドレスで多数の内部デバイスがインターネットに接続できるため、グローバルIPアドレスの消費を大幅に抑制できることである。また、内部ネットワークのプライベートIPアドレスが外部から直接見えないため、セキュリティが向上する。外部からはルーターのグローバルIPアドレスしか見えず、内部ネットワークの構造や個々のデバイスを直接攻撃することが難しくなる。さらに、内部ネットワークのIPアドレス設計変更時に、外部に公開されているグローバルIPアドレスに影響を与えずに済むため、管理が容易になる側面もある。
一方で、NAT、特にNAPTにはデメリットも存在する。最も顕著なのは、外部から内部ネットワークの特定のデバイスへ直接接続することが困難になる点である。NAPTは通常、内部から外部への通信に対してIPアドレスとポート番号を変換するが、外部から内部への通信は、ルーターに変換情報がなければどの内部デバイス宛てかわからないため、そのままではブロックされる。このため、内部のサーバーを外部に公開したい場合には、ポートフォワーディング(静的NAPT)と呼ばれる設定が必要になる。これは、ルーターの特定のグローバルIPアドレスとポート番号へのアクセスを、内部ネットワークの特定のプライベートIPアドレスとポート番号に転送するようにルーターに事前に設定するものである。また、NATの動作によって、通信がルーターを介して変換されるため、一部のP2P(Peer-to-Peer)アプリケーションやオンラインゲームなど、エンドツーエンドの直接通信を前提とするプロトコルでは、通信が成立しない、あるいは性能が低下するといった問題が発生する場合がある。この問題を解決するために、UPnP(Universal Plug and Play)やNAT-PMP(NAT Port Mapping Protocol)といった、アプリケーションがルーターにポートマッピングを動的に要求するプロトコルも開発されている。さらに、NAPTでは複数の内部デバイスが同じグローバルIPアドレスを共有するため、通信ログを解析する際に、どの内部デバイスが特定の通信を行ったのかを特定するのが難しくなることがある。これは、セキュリティ監査やトラブルシューティングにおいて課題となる場合がある。
NATは、現在のインターネット接続において標準的に利用されている技術であり、システムエンジニアを目指す上でその仕組みを理解することは非常に重要である。