NATについて無知だったので少し調べた


NATってなに?

「NAT越え」「NATの設定を...」などは聞いたことがあったが、実際に「NATが...だから...だよね?」って聞かれて困ったので少し調べた。

NATの役割

そもそもNATとはNetwork Address Translationの略でIPアドレスを変換する技術である。Network Address Translationという名前がとてもわかりやすい。
一般的には企業内のLANのプライベートIPアドレスをインターネット内の識別子であるグローバルIPアドレスに変換する際に使われる。

ここまではなるほど、「確かにそうだな。プライベートIPで通信しないよなー。」ってなりました。

しかし、ここで思ったのが、「パケットは飛んでいくけど、パケットが帰ってくるとき、どこに帰ってきたらいいかわからなくね?」ということでした。

LANの中のノードからNATを経由してインターネットへパケットを出すときは、相手のグローバルIPアドレスを指定しているため問題なくパケットは届くものの、相手からパケットが帰ってくるときには行きで使ったNATまでは帰ってくるものの、そこからNATさんが「どこにこのパケット送ったらいいの???」ってなってしまいそうです。

NAPT

この問題を解決したのが、NAPT(Network Address Port Translation)です。NATにPortという単語が入ってきました。言葉の通り、LAN内のノードがNATを経由してインターネットと通信を行う際に、それぞれのノードにポート番号を振ることで、LAN内のPCを識別するというものです。

これで、LAN内のノードの識別を行うことができるようになったため、1対多の通信を行うことができるようになりました。NATではこの識別ができなかったため、1対1の通信しか行うことができませんでした。

本当にNATは1対1の通信しかできないのか?

「NAPTを使わないと、1対多の通信はできないのか。NATってしょぼいのか。。。」と思ったがそうではないらしい。

動的NAT

動的NATでは、1つまたは複数のグローバルアドレスをNAT用に割り当て、LANからインターネット側へ通信しようとするホストへ先着順で1対1のペアとして変換します。
割り当てたグローバルアドレスの数と同数のノードが同時にインターネットとの通信可能することができるようになります。

NATに割り当てられたグローバルIPアドレスよりLAN側へ通信しようとするノードのほうが多く、グローバルアドレスがすべて使用されているときは、プライベートIPアドレスとグローバルIPアドレスの関連付けができません。そのため、
既存のセッションが終了すると、また先着順で空いたグローバルIPアドレスと1対1のペアとして関連付け、アドレス変換処理が行われます。

まとめ

プライベートIPアドレスとグローバルIPアドレスがLANからインターネットに通信するときに、変換されるのは知っていたが、その役割を持っていたのがNATさんであることがわかった。