假设我在Restricted Cone NAT后面,我希望能够从某个端点EP-A
(在互联网上的某些PC上,而不是在NAT后面)接收UDP消息。我首先向EP-A
发送一个UDP数据包,在NAT中打一个洞。
这意味着NAT需要记住映射:
(My local endpoint, EP-A)
但是当我将另一个UDP数据包发送到另一个远程端点EP-B
时会发生什么?新映射(My local endpoint, EP-B)
是否会覆盖旧映射?或者NAT会记住两者吗?
如果NAT能够记住多个这样的映射,那么最大值是多少?
据我所知,这可能因NAT而异,因此如果没有RFC,我也会对任何统计数据感兴趣,“NAT制造商的建议”,......
答案 0 :(得分:1)
新映射(我的本地端点,EP-B)是否会覆盖旧映射?
没有
或者NAT会记住两者吗?
一般是的。饱和时通常会保留旧的映射并丢弃新的映射,可能会出现ICMP错误。
如果NAT能够记住多个这样的映射,那么最大值是多少?
依赖于实现,如果您有权访问系统,则通常可以配置。
因此,如果没有RFC,我也会对任何统计数据感兴趣
实际上有几个用于NAT的RFC,4787在UDP的情况下专门指NAT。但他们没有具体说明具体数字,因为它在很大程度上取决于设备和网络规模。
根据我个人的经验,运行基于UDP的DHT节点或DNS解析器可能足以淹没家庭路由器的默认配置(自定义固件可以缓解此问题)或未实现EIM的CGNAT。
我记得读过一些研究论文,调查各种ISP的映射保留时间,端口编号行为和NAT的映射类型,但我不记得他们是否也测试了饱和度。