概要
NAT(Network Address Translator)はローカルネットワークではプライベートIPアドレスを使用し、インターネットへ接続する時にはグローバルIPアドレスへ変換して利用する機能を言います。これに加えてポート番号も変更する機能をNAPT(Network Address Ports Translator)と言い、モバイルルーターやテザリングなどで利用されています。
通常NATというとNAPTを指し、ポート変更機能を持たないNATを指す場合にはベーシックNATと呼ばれます。これらはIPv4でのアドレス枯渇問題のために生まれた技術ですが、IPv6でもセキュリティ向上やIPv4とIPv6で相互通信する際に利用されます。
NAPTの仕組み
NAPTは下図のような仕組みで成り立っており、クライアントから送信されたパケットのIPアドレスをNAPT対応ルーターで変換して送信しています。それだけでは複数のクライアントを識別できないのでクライアント毎にポート番号も変換する事で、TCP及びUDPの通信上別の通信として認識する事が出来ています。
ルーターの変換テーブルは基本的に自動で作成され、TCPの場合コネクション確立を意味するSYNパケットが流れたときに作成され、終了のFINパケットの確認応答がされれば消去されます。
NATの問題点と解消
NATには変換テーブルを使用しているためいくつかの問題点があります。これらを解決するためには「IPv6への移行」や「NATの外側から接続するNAT越え」などを行う必要があります。
- NATの外側からサーバ接続できない
- テーブル作成及び変換処理のオーバーヘッド発生
- 通信中にNATの異常で再起動するとすべてのTCPコネクションがリセットされる
- 冗長化しても切り替え時にコネクションが切断する。
CGN(Carrier Grade NAT)
CGNはISP(Internet Service Provider)単位でNATを行う技術で、ISPは顧客にプライベートアドレスを配布してインターネットに接続する際に「顧客のプライベートIPアドレス→ISPのプライベートIPアドレス」、「ISPのプライベートIPアドレス→グローバルIPアドレス」と変換処理を行う事で少数のIPv4アドレスで多数の顧客に対応する事が出来ます。前者の変換は顧客側のNATで実施され、後者の変換はISPのCGN装置で変換されます。
コメント