はじめに
今回は、IPアドレスに関わる技術である『NAT』と『NAPT』について解説していきます。
では、このあまり聞くことはない『NAT』と『NAPT』とは何なのでしょう?
結論から言えば、NATとNAPTは『グローバルIPアドレスとプライベートIPアドレスを相互に変換する技術』になります。
『IPv4アドレス』はもう枯渇の危機!
まずは『IPアドレス』の前提からです。
LANなどの、ネットワーク内にあるコンピューターや接続機器にはプライベートIPアドレスが割り当てられています。
あなたが家庭内で、コンピューターやWiFiでスマホを利用する際、それがまさにプライベートIPアドレスを利用している状態になっているというわけです。
ただし、このプライベートIPアドレスだけでは、実はインターネットでは利用できないIPアドレスなのです。
インターネットを利用するには、プライベートではない、グローバルIPアドレスというものが必要になります。
であれば、「コンピューターやスマホもグローバルIPアドレスを使えばいいのでは?」と考えますが、ところがそうもいきません。
その理由は、インターネットに繋がっている多くのコンピューターやサーバーが『IPv4』というグローバルIPアドレスを使っていることで、このIPv4という利用可能なIPアドレスの上限数がほぼ達しつつあるからです。
IPv4で利用できるグローバルIPアドレスの総数は約43億個です。
見た目はものすごく多く見える43億個という数字ですが、実はその数と同じくらいインターネット上のコンピューターやサーバーは増えてしまっていて、実際には、IPv4のIPアドレスはもはや枯渇の危機を迎えています。
従って、今後はその対策として、IPv4に変わるIPv6という仕組みのIPアドレスを利用することで、業界団体はこれからの普及を目指しています。
『NAT』という グローバルIPアドレスとプライベートIPアドレスを変換する技術
上記に書いたように、IPv4のグローバルIPアドレスの総数は約43億個です。
この数は、実は作られた当初から少なくなるという懸念を持ったものでした。
そのため、LAN内ではグローバルIPアドレスを使わないように、私たちはプライベートIPアドレスを用いていることになったわけです。
しかし、前述のようにプライベートIPアドレスのままではインターネットは利用できません。
そこで、プライベートIPアドレスをグローバルIPアドレスに相互に変換する技術として『NAT(Network Address Translation)』が作られました。
NATとは『ネットワークアドレス変換』という意味にあたります。
NATを詳しくすると、プライベートIPアドレスを利用してインターネットに接続した場合、そのアクセスしようとするデータは『TCP/IPモデル』により分割されパケット化されます。
そしてパケットは、送信先のIPアドレスをヘッダ情報に付け、インターネットの出入口である『ゲートウェイ(主にルーター)』まで向かいます。
ここで、そのまま何もせずにゲートウェイからインターネットにそのパケットを送ってしまうと、送信先は分かるのに対し、送信元はプライベートIPアドレスという意味のない情報だけで送ってしまうことになります。
プライベートIPアドレスは所詮プライベートであるので、これでは相互のデータ通信が確保できません。
ゲートウェイはこうした状況を作らないために、NATを用いて送信元から送られてきたプライベートIPアドレスを、ゲートウェイのグローバルIPアドレスにヘッダ情報を書き換えてパケットを送ることができるわけです。
郵便のイメージで例えると、パケットである手紙をポストに入れ、ゲートウェイとなる近場の郵便局に届けられると、そこで証印(消印)を押されたようなものです。
証印が押されれば、送信先のコンピューターは、届けられたパケットのヘッダ情報にある送信元のグローバルIPアドレス、つまり証印を見て、その送信元であるゲートウェイのグローバルIPアドレスに返信をすることができるようになります。
そして、ゲートウェイにたどり着いた返信パケットは、送信時にゲートウェイでグローバルIPアドレスに変換された際に、その時点で記憶されていたプライベートIPアドレスとを参照して、そのプライベートIPアドレス宛にパケットを送るようにします。
こうして、プライベートIPアドレスを利用しつつも、インターネットを利用できるようになっているわけです。
『NAT』の進化系『NAPT(IPマスカレード)』という技術
NATは、プライベートIPアドレスとグローバルIPアドレスを相互に変換してくれる、とても重宝される技術です。
ところが、これは、コンピューター1台に対しゲートウェイ1台という限定された場合にのみ適用される技術になっています。
つまり、プライベートIPアドレスを利用したコンピューターや機器が複数あるネットワークでは、NATが意味を成さないのです。
その理由は、LAN内の複数のコンピューターが同時にデータ通信を行なった場合、送信先からの返信に対して、どちらのコンピューターにデータを返せばいいかの区別ができないからです。
そのため、このまま、もしNATを利用したい場合は、グローバルIPアドレスをその接続機器分用意しなければならなくなります。
これでは、グローバルIPアドレスの枯渇問題を助長させることになってしまい、全くの本末転倒になります。
そこで、この問題を解決するために『NAPT(Network Address Port Translation)』という技術が生まれました。
NAPTは『IPマスカレード』とも呼び、グローバルIPアドレスが1つであったとしても、IPアドレスに加え、TCPやUDPのポート番号までを含めてパケット化させ、アドレスと組み合わせる形でデータ通信を可能にしたものです。
この技術であれば、複数の同時通信機器があっても、『グローバルIPアドレス+ポート番号』というやりとりで、同時にインターネットを利用することができます。
ゲートウェイ側では、プライベートIPアドレスとポート番号も記憶しておき、データが返信されてきたら、そのポート番号に対するプライベートIPアドレス宛に、またパケットを送りつける事をしています。
あなたも複数の機器で同時にインターネットを利用することがあるとは思いますが、それはこのNAPTという技術によって可能になっているというわけです。
まとめ
NATとNAPTというあまり聞き覚えがない単語ですが、今やルーターに標準装備されているので、私たちはあまり気に留める必要はありません。
しかし、知らぬ間に細かい仕事をしていることが分かります。
そして、今後訪れるIPv6のIPアドレスが普及するまでは、常に必要となる技術であり、その恩恵もまたしばらくは受け続けることになるでしょう。