ポートアドレス変換

ポートアドレス変換（ポートアドレスへんかん）はPAT（パット、Port Address Translation の略語）とも呼ばれる、プライベートネットワーク上のホストとパブリックネットワーク上のホストの間で構成されるTCPまたはUDP通信を、ネットワーク機器が変換する機能である。ポートアドレス変換により、ただ一つのグローバルIPアドレスがプライベートネットワーク、大抵はLAN上の多数のホストによって使用されることを可能にする。
PAT機器は、IPパケットが機器を通過する際に透過的にIPパケットを修正する。この操作により、プライベートネットワーク上の多数のホストからパブリックネットワークに送られるすべてのパケットが、パブリックネットワーク上のホスト、つまりPAT機器から生じたかのように見える。
NATとPATの区別.
PATはベンダーごとに異なる名前で呼ばれている。Hide-Mode NAT（チェック・ポイント・ソフトウェア・テクノロジーズ）、PAT（シスコシステムズ）、 NAPT（RFC 3022）、SNAT/MASQUERADE（Linux iptables）、Internet Connection Sharing（マイクロソフト）などがその例である。ネットワークアドレス変換（NAT）の主要目的はインターネット上のIPアドレスの枯渇問題を対処することであるので、NATはPATアプリケーションを表す総括的な用語である。詳細は RFC 1631 および RFC 2663 を参照。
NATを提供する一部の機器、例えばブロードバンドルータなどは、実質的にはPATを提供している。従って、NATとPATの間には不明瞭な部分がかなりある。PAT機器を含めたNATの一般的な用途からすると、PATはNATとはまったく異なった技術よりは、むしろNATの一種であると考えるのが正しい。
NATとPATの関係.
PATはNATの一部であり、NATの概念に密接に関連している。PATはNATオーバーロードとしても知られている。PATでは一般にグローバルIPアドレスが一つあり、そのアドレスを使用して接続する多数のプライベートホストがある。パブリックネットワークから受け取ったパケットは、パブリックおよびプライベートのポートペアを保持するPAT機器内部の表を参照することによって、プライベートネットワーク上のそれぞれの目的地に送られる。
PATでは、送信者のプライベートIPとポート番号の両方が修正され、PAT機器はパブリックネットワーク上のホストから見えるポート番号を選ぶ。このように、PATはOSI参照モデルの3層（ネットワーク層）と4層（トランスポート層）にて作動するが、一方で基本的なNATは3層でのみ作動する。
PATの実装.
双方向通信の確立.
すべてのTCPパケットとUDPパケットは、ソースIPアドレスおよびソースポート番号の両方とデスティネーションIPアドレスおよびデスティネーションポート番号の両方を含む。同時に受け取られたこれら４つの情報はソケットを形成する。
Webサーバやメールサーバのようなパブリックネットワークにアクセス可能なサービスにとって、ポート番号は重要である。例えば、80番ポートはWebサーバソフトウェアに接続し25番ポートはメールサーバのSMTPデーモンに接続する。
パブリックサーバのIPアドレスも重要で、これは郵便の宛先あるいは電話番号と似た国際的な唯一性を持つ。IPアドレスとポート番号の両方は、通信しようとしているすべてのホストに正確に知られておかなければならない。
RFC 1918で記述されているように、プライベートIPアドレスはプライベートネットワーク上では重要である。このことは、ホスト上のポートにも言えることである。ポートはホスト上の唯一の通信のエンドポイントである。そのため、PAT機器を通過する接続は、ポートとIPアドレスを組み合わせたマッピングによって維持される。
PATは、同時に唯一の通信を確立するために同じソースポート番号を使う２つの異なるホストを通して起こる衝突（コンフリクト）を解決する。
PATの例え.
PAT機器は、一つの公的な電話番号を持つ会社における受付係と似ている。会社内から会社外に対する通話は、すべて同じ電話番号からかかってくるように見える。しかし、会社外からかかってきた電話は、オペレータが通話したいと思っている発呼者に通話先を尋ねることによって、正しい内線に転送される必要がある。なぜなら、内線番号には外部から直接電話をかけることができないからである。
エンドポイントの変換.
PATを使うことで、すべての通信は実質的には内部ホストのIPアドレスまたはポート番号の代わりに、PAT機器のグローバルIPアドレスとポート情報を含んで外部ホストへ送られる。
PATは、プライベートネットワーク上の内部ホストの真のエンドポイントを隠しつつ、内部ホストのIPアドレスとポート番号のみを変換する。
動作の可視性.
PATの動作は、通常は内部ホストと外部ホストの両方に見える。
一般に、内部ホストは外部ホストの真のIPアドレスとTCPまたはUDPポートを知っている。さらに、PAT機器は内部ホストのためにデフォルトゲートウェイとしても機能できる。しかし、外部ホストはPAT機器についてのパブリックIPアドレスと内部ホストの代わりに通信するために使用されている特定のポートしか知らない。
PATの用途.
ソフトウェアファイアウォールとブローバンドネットワークに接続する装置（たとえば、ADSLルータ）は、PAT実装を含むことができるネットワーク技術の例である。これらの装置を適切に設定しているとき、インターネットは外部ネットワークでありLANは内部ネットワークである。
PATの使用例.
プライベートネットワーク上にありIPアドレスが192.168.0.2であるホストが、パブリックネットワーク上のホストへの接続を要求するものとする。最初のパケットにはアドレス192.168.0.2:15345が与えられる。ここで、1.2.3.4というパブリックIPアドレスを持つと想定するPAT機器は、プライベートネットワーク上の192.168.0.2によって接続目的で使用される16529ポートをPAT機器の内部テーブルに記入することにより、独断的にこのソースアドレスをポートペアから1.2.3.4:16529に変換する。パケットがパブリックネットワークからPAT機器によってアドレス1.2.3.4:16529として受け取られた時、そのパケットは192.168.0.2:15345に転送される。
PATのメリット.
NATによって与えられる利点に加えて、PATはただ一つのグローバルIPアドレスを多数の内部ホストにより共有できるようにする。