UDPホールパンチング
UDPホールパンチングによる NAT traversal とは、NAT を使ったプライベートネットワーク内にあるホスト同士がインターネット経由で双方向のUDPコネクションを確立する手法である。NAT には様々なものがあって動作仕様が標準化されていないため、あらゆる NAT で機能するわけではない。
NATの背後にある各ホストは、典型的には STUN や ICE を用いて通信相手との間に存在するNATの公開アドレスを取得する。この過程では、公開のアドレス空間にある第3の既知のサーバに一旦接続することでUDPポートマッピングと相手方のUDP状態を確立し、以後はパケットが違うホストから来ていても NATデバイスが状態を維持するだろうと期待して、直接的な通信に切り換える。通常、UDP状態は数十秒~数分以内に失効してクローズされてしまうので、UDPホールパンチングでは定期的な keep-alive パケットの送出が併用され、これによってNATが持つUDP状態マシンの寿命を延長する。
大企業内でよく使われている対称型NAT(双方向NAT)では、UDPホールパンチングは機能しない。