Open hysryt opened 6 years ago
外部からの通信をどれだけ制限するかによって4つの区分に分けられる。
制限をしない。 外部からの通信を全てNAT変換する。
送信元のIPアドレスでの制限を行う。 通信を行ったことのあるIPアドレスからの通信のみNAT変換する。
送信元のIPアドレスおよびポート番号での制限を行う。 通信を行ったことのあるIPアドレスとポート番号の組み合わせからの通信のみNAT変換する。
送信元のIPアドレスおよびポート番号と、送信先のIPアドレスおよびポート番号での制限を行う。 送信元が、以前通信を行ったことのあるIPアドレスとポート番号の組み合わせの通信かつ、送信先が、内部からその外部への通信に使用したIPアドレスおよびポート番号への通信のみNAT変換する。
以前通信をした相手であっても、送信先がその時使用したIPアドレスとポート番号の組み合わせでない場合は通信できない。
外部からNAT配下の端末への通信する、あるいはNAT配下の端末が別のNAT配下にある端末への通信を可能にする技術。 通常、プライベートIPアドレス宛ての通信は同ネットワークにいないとできないが、NATトラバーサルによって可能となる。 NAT越えとも呼ばれる。
NATトラバーサルは総称であり、通信を可能にする実際の手段についてはNAT環境によって様々な種類がある。
内部向けのIPアドレスおよびポート番号と外部向けのIPアドレスおよびポート番号の組み合わせを事前にルータに登録することによって、外部からの通信を内部に転送する方法。 DMZにサーバを立てる時などに使用される。
UPnP を使用して自動的にルータにポートフォワーディングの設定を行う方法。 ルータとNAT配下の端末(ソフトウェア)の両方がUPnPに対応している必要がある。
Session Traversal Utilities for NATs
送信に対する受信は行えるというNATの性質を利用した方法。 NAT配下の端末はまずSTUNサーバに通信を行う。 そしてその時の外向けIPアドレスおよびポート番号に対して外から通信を行うことで、NAT外からNAT内への通信が可能になる。
STUNサーバが必要。 対称NATの環境では使えない。
UDPによってNATに穴をあける、UDP ホールパンチングとも呼ばれる手法に近いが、STUNは仕様上は UDPだけでなく、TCPやTLSによるTCPも使える。
Traversal Using Relay around NAT
TURNサーバを用意し、NAT配下の端末同士が全てそのサーバを経由して通信をする方法。 シンプルだが、NAT配下同士でP2Pの通信ができないため遅延が大きくなる。
TURNサーバが必要。 しかし全てサーバとクライアントでの通信であるため、対称NAT環境でも使用できる。
Interactive Connectivity Establishment
STUNとTURNを組み合わせた方法。 RFC5243
NAT配下にいる端末が、自身のパブリック側のIPアドレスとポート番号を知るためのプロトコル。 NAT配下にいる端末同士がどのように通信をし合うかは STUN の仕様の範疇では無いため、STUNがNAT越えの手法というのは若干語弊がある。
ユーザ認証やメッセージ認証の機能も備える。
STUN でのクライアント/サーバ間の通信の種類のことをメソッドと呼ぶ。 いまのところ、仕様にはBindingメソッドしか定義されてない。
NATが割り当てた(bindingした)リフレクシブトランスポートアドレスを知るためのメソッド。
クライアントがBindingリクエストを送るとサーバはBindingレスポンスを返す。 サーバはBindingレスポンスを返す際、Bindingリクエストの送信元トランスポートアドレスを含める。 Bindingリクエストの送信元トランスポートアドレスは、サーバまでに届く途中、NATによってリフレクシブトランスポートアドレスに変換されているため、クライアントはBindingレスポンスを見ることによって自身のリフレクシブトランスポートアドレスを取得することができる。
STUNサーバをDNSサーバに登録する場合は、SRVレコードを使用する。
概要
NAT
Network Address Transition
ネットワーク内外で通信ができるように、そのあいだを仲介して送信元や送信先のIPアドレスを変換する技術。 主にプライベートIPアドレスとグローバルIPアドレスの変換で使われており、ほぼ全てのルータがこの機能を備えている。
NAPT
Network Address Port Transition
NAT の機能に加え、ポート番号の変換も行う技術。 IPアドレスとポート番号の組み合わせで変換を行うため、複数のプライベートIPアドレスを1つのグローバルIPアドレスに変換して使用するといったことが可能になる。
近年では NAT と NAPT をひとまとめにして NAT と呼ぶことも多い。
CGN
Carrier Grade NAT
Large Scale NAT (LSN) とも呼ばれる。 携帯電話事業者やインターネット接続事業者が提供する機能で、CGNルーターはグローバルIPアドレスをシェアードアドレスと呼ばれる専用のIPアドレスに変換する。 シェアードアドレスは各契約者の家の CPE と呼ばれる終端装置でプライベートIPアドレスに変換される。
3種類のIPアドレスを使用するため NAT444 と呼ぶこともある。
NAT64
IPv6アドレスをIPv4アドレスに変換するNAT。
NAT46
IPv4アドレスをIPv6アドレスに変換するNAT。