NAT (Network Address Translation)
インターネットプロトコルによるネットワークにおいて、パケットヘッダに含まれるIPアドレスを別のIPアドレスに変換する技術。家庭用・業務用を問わず、インターネット接続用のルーターや無線LANアクセスポイントで標準的に使われている。
仕組み
NATは「NATテーブル」を持ち、変換前後のIPアドレスの対応を記録する。これにより戻ってきたパケットを、元のリクエスト元に正しく返却できる。
種類
- Source NAT / Destination NATの2種類に大別される
- IPアドレスに加えてポート番号も変換するものはNAPT(Network Address Port Translation。IPマスカレードとも呼ばれる)と呼ぶ
- STUNプロトコルによる分類では、Full Cone NAT・Restricted Cone NAT・Port Restricted Cone NAT・Symmetric NATの4種類がある
NAT越え(NAT traversal)
NAT配下の端末同士がP2P通信する際の課題。TCPは3ウェイハンドシェイクの都合上hole punchingができないためUDPが使われる(UDP hole punching)。ポートをランダムに割り当てるSymmetric NATは特に通過が難しく、その場合はサーバー中継が確実な手段となる。
TailscaleはSTUNによる発見やDiscoプロトコル、レース戦略などを組み合わせて直接P2P接続を優先的に確立し、Symmetric NATなどでどうしても直接接続できない場合はWireGuardの暗号化パケットをそのまま中継する専用リレーサーバー(DERP)にフォールバックする。
L2TP/IPsecはNAT越え(NAT-T)がやや不安定になりがちで、ファイアウォールでUDPポートがブロックされると接続できないことがある。
出典
- ネットワークアドレス変換 - Wikipedia
- NATとは?アドレス変換の仕組みや必要性、NAPTとの違いを解説 - baremetal blog
- ネットワーク アドレス変換 (NAT) とは - チェック・ポイント・ソフトウェア
- NATを越えろ - くるむテックブログ
- NAT Traversalって知ってますか - Cerevo TechBlog