Answers:
仅当原始传出数据报的源端口也是端口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
因此,如果机器A从与目标端口相同的源端口(“端口N”)发送帧,并且如果 NAT能够保留该源端口(即配置为在可能的情况下保留源端口和该源端口)未被使用),那么您可以期望对“端口N”的答复将返回到计算机A。
这是有关正确NAT UDP行为的权威参考:
RFC 4787 / BCP 127:单播UDP的网络地址转换(NAT)行为要求