はじめに
先輩:「これ、NATトラバーサルの設定が必要」
私:「NAT、、、トラバーサル?」
NATやNAPTは、資格試験の勉強で学びました。
しかし、トラバーサルってなんだ?ということで、サーベイ内容をまとめます。
"NATトラバーサル"の問題設定
-
NAT/NAPTは、プライベートIPアドレスと、グローバルIPアドレスを紐づけ、相互変換する技術です。少ないグローバルIPアドレスで、多数の端末を接続することができます。
-
しかし、外部NW(グローバルNW)から内部NW(プライベートNW)の端末へ直接アクセスして、通信する使い方はできません。
-
そのため、通信の主体(端末)が直接接続することが前提の技術は、正常に動作しないです。
-
具体的には、通話ソフト(VoIP)や、VPN、ファイル共有ソフト(P2P)などが該当します。
-
つまり、NAT/NAPTにより、通信相手のプライベートNW内の端末に、直接到達できない(NATを通過できない)。という問題があります。
-
この問題の解決方法(技術)を総称して、NATトラバーサルと呼びます。
#NATトラバーサル
NATトラバーサルの各種技術については、下記サイトを参照しました。
簡潔に各技術の概要がまとめてあります。
#"IPsec通信における、NATトラバーサル"の問題設定
-
NAT/NAPTは、パケットのIPヘッダを変更します。
-
NAPTであれば、TCPポート/UDPポート(ポート番号)まで変換します。
-
IPsecは、TCP/UDPヘッダまで暗号化します。そのため、NAPTはポート番号を読み取ることができません。
-
つまり、NAPTは、暗号化されたTCP/UDPヘッダ内のポートを変換できないため、通信が成立しない。という問題があります。
-
この問題は、ルータの"NATトラバーサル"機能を有効化し、解決します。
#IPsec通信における、NATトラバーサル
ポイント:UDPカプセル化により、新たにUDPヘッダ付与
- ESPパケット(送受信するデータを暗号化し、暗号化情報/認証データを付与したパケット)を、UDPでカプセル化します
- 新たに付加したUDPヘッダは、暗号化の対象となりません。
- そのため、NAPTでポート番号の書き換えが可能になります。
おわりに
"NATトラバーサル"には、NAT/NAPTにより発生する問題の解決方法全般を指す場合と、IPsec通信をするために、UDPカプセル化の有効化を指す場合の、2つの意味で使われていることがあります。
どちらも本質的な問題は同じですが、SE同士はもちろん、関係者と認識の齟齬を起こさないためにも、意識してコミュニケーションを取ることが重要だと思います。
(実際、私も混乱したため、Tipsとして記録することにしました)
参考文献
[1].LiveOn 用語集, ”NAT越え(NATトラバーサル - NAT traversal) とは”
[2].IT用語辞典 e-words, ”NATトラバーサル 【NAT traversal】”
[3].ネットワークエンジニアとして, ”IPsec - NAT Traversal”