SHOYAN BLOG

I am a pragmatic programmer.

NAT・NAPT・ポートフォワーディングの違いとは

ネットワークの話しによくNATという言葉が出てくるので整理した。
また、NAPT・ポートフォワーディングについても理解しておいたほうが理解が深まると思ったのでまとめておいた。

NATとは

NAT(Network Address Translation)はIPアドレスを変換する技術である。
具体的にはプライベートIPアドレスをグローバルIPアドレスに変換する、もしくは、グローバルIPアドレスをプライベートIPアドレスに変換する。

なぜNATが必要か

グローバルIPアドレスを節約するためである。
インターネットに接続するにはグローバルIPアドレスが必要である。
プライベートIPアドレスではインターネットに接続することができないという決まりになっている。

インターネットに接続するには、PC全てにグローバルIPを割り振るのが最も単純な方法である。
しかし、全てにグローバルIPアドレスを割り振っていてはすぐにIPアドレスは枯渇してしまう。

では、どうするか。
LANからインターネットに通信するときにプライベートIPアドレスをグローバルIPアドレスに変換してやればいいのではないか。
それを実現するのがNATである。

具体的にはLANからインターネットに通信するときは、ヘッダの送信元IPをグローバルIPに書き換える。
インターネットからLANに通信するときは、ヘッダの宛先IPをプライベートIPに書き換える。

NATがやることはこれだけである(多分)。

しかし、NATには大きな問題がある。
複数のクライアントPCがある場合、NATはどのプライベートIPに変換すればいいかわからないのだ。

その問題を解決するのが、NAPT(Network Address Port Translation)である。

NAPTとは

複数のクライアントPCがある場合、NATはどのプライベートIPに変換すればいいかわからない。
その問題を解決するのがNAPTである。

NAPTはIPアドレスに加えてポートも管理する。
このポートを使ってクライアントPCを特定する。
例えば、PC(A)の場合は通信のポート番号を100、PC(B)の場合は通信のポート番号を200とする。
すると、通信先のサーバーから異なったポート番号宛にデータが戻って来る。
ポート番号100に戻ってきたデータはPC(A)に戻してやればいいわけである。

NAPTはIPマスカレードとも呼ばれる。

NATの弊害

NATを使うとインターネットからLANへの通信ができないという問題がある。
インターネットからの通信の場合、どのクライアントPCのプライベートIPアドレスに変換すればいいかがわからないため、クライアントPCに通信が届かないのだ。
これは、セキュリティ的にみると安全だ。
NATの内側にいるクライアントPCには外部からの通信が届かないからである。

外部からの通信を届けたい場合はどうすればいいか。
ポートフォワーディングを使えばいい。

ポートフォワーディングとは

インターネットから特定のポート番号宛に通信が届いたときにあらかじめ設定しておいたLAN側の機器にパケットを転送する機能である。
例えば、宛先ポートが80宛のパケットは、LAN側の192.168.1.1の機器へ転送するといった設定ができる。
このようにあらかじめ転送するポートとクライアントPCのIPアドレスを登録しておくことで外部からの通信が行えるようになる。

ポートフォワーディングは静的IPマスカレードとも呼ばれる。

おすすめの書籍

ネットワークについては様々な書籍があるが私は以下の書籍をおすすめする。

ネットワークはなぜつながるのか

ネットワークの概要についてわかりやすく解説してある。初学者にお勧め。

マスタリングTCP/IP 入門編

ネットワークの理論についてわかりやすく解説してある。知人のネットワークの専門家もこの書籍をおすすめしていた。

参考文献

よく読まれている記事

Comments