NAT traversal
RFC 1579 - Firewall Friendly FTP
RFC 2663 - IP Network Address Translator (NAT) Terminology and Considerations
RFC 2709 - Security Model with Tunnel-mode IPsec for NAT Domains
RFC 2993 - Architectural Implications of NAT
RFC 3027 - Protocol Complications with the IP Network Address Translator (NAT)
RFC 3235 - Network Address Translator (NAT)-Friendly Application Design Guidelines
RFC 3947 - Negotiation of NAT-Traversal in the IKE
RFC 5128 - State of Peer-to-Peer (P2P) Communication across Network Address Translators (NATs)
NAT機器は内部ネットワークから外部ネットワークに向けたリクエストのソースアドレスを変更し、変更後のアドレスに対する応答を受け取る。これにより、内部ネットワークに属する複数のホストが、その数より少ない外部IPアドレスを使用して外部ネットワークと通信することを可能にする。しかし、応答は変更後のアドレスに対するものである為に、NAT機器は、応答が内部ネットワークに属するホストのうちのどれに対して行われているものかを特定できない。このため、例えば内部ネットワークに属するホストが外部ネットワークに対して、サーバとして動作することを妨げるという問題が生じる。インターネットを使用する多くのホームユーザは、内部ネットワークに属するホストをサーバとして動作させる必要が無いか、あるいは、静的NATマッピングが使用できる為に、この問題はホームユーザに通常は関係しなかった。しかし例えば、BitTorrentやGnutellaなどのP2Pによるファイル共有アプリケーションや、SkypeなどのVoIPアプリケーションは、サーバのように動作することをクライアントに要求するが、NAT機器が外部ネットワークから内部ネットワークへのリクエストを適切な内部ホストに関連付けられない為に、このようなアプリケーションの機能に問題が生じる。
IPsecが、NATを通過し正常に機能するためには、以下がファイアウォール上で許可される必要がある。
Internet Key Exchange (IKE) - User Datagram Protocol (UDP) ポート500
Encapsulating Security Payload (ESP) - Internet Protocol (IP) 50
IPsec NAT-T - UDP ポート4500
多くの家庭用ルータでは、IPsecパススルーを有効とすることによりこれらが実現される。
議論の余地のあるセキュリティ問題のために、Windows XP SP2 は、初期設定ではNAT-Tを無効とするよう変更された。 このため、家庭でPCを使用するほとんどのユーザは、PC環境の設定変更を行わない限り、IPsecを使用することができない。 NATを使用したシステム同士が通信を行うためにNAT-Tを有効とするには、以下のレジストリキーを追加し、値AssumeUDPEncapsulationContextOnSendRuleを2に設定する必要がある。