回答:
元の発信データグラムの送信元ポートもポートNであり、NATが送信元ポートをフロートすることを選択しなかった場合のみ。
つまり、マシンAからの最初のUDPデータグラムは、LAN上では次のようになります。
Source IP: MachineAPrivate
Source Port: PortA <-- note this is typically different than the destination port
Destination IP: MachineBPublic
Destination Port: PortN
次に、NATによって発信方向に変換された後、次のようになります。
Source IP: NATPublic
Source Port: PortC <-- note this may or may not be the same as "PortA" above
Destination IP: MachineBPublic
Destination Port: PortN
現在、マシンBが応答すると、応答は通常次のようになります。
Source IP: MachineBPublic
Source Port: PortN
Destination IP: NATPublic
Destination Port: PortC
次に、着信NAT変換プロセスを経た後:
Source IP: MachineBPublic
Source Port: PortN
Destination IP: MachineAPrivate
Destination Port: PortA
だから、IFマシンAは、宛先ポート(「ポートN」)と同じソースポートからフレームを送信し、IF NATは、その送信元ポートを維持することが可能である(すなわち、可能な場合は送信元ポートを維持するように設定され、その送信元ポート)使用されていない、THENあなたはマシンAに戻って取得するために「ポートN」への返信を期待することができます
NAT UDPの適切な動作に関する正式なリファレンスは次のとおりです
。RFC4787 / BCP 127:ユニキャストUDPのネットワークアドレス変換(NAT)の動作要件
閉じますが、マシンBは実際に受信する送信元アドレスとポート番号を調べる必要があります。これはNとは異なる場合があります。
マシンAのNATは、マシンAが送信したのと同じポートNを使用しない場合があります。(同じNATの背後にあるマシンCもポートNで送信していることを想像してください。両方が使用することはできません。)したがって、マシンBは異なる送信元ポートMを見ることがあります。ポートMを使用すると、マシンBで自動的にNにマップされます。
つまり、マシンBが受信したパケットで指定されたソースアドレスとソースポートに送り返す限り、戻りパケットが元のソースに戻る方法を合理的に期待できます。これは、自動NATルールが数分後にタイムアウトする傾向があるため、戻りパケットが短時間で送信されることを前提としています。