有一个简单的答案解释了路由器是如何将请求从本地网络转换到外部和背面(https://superuser.com/questions/105838/how-does-router-know-where-to-forward-packet)的--还有什么不清楚-- NAT中的记录保存了多长时间?
例如,如果我向25.34.11.56:3874发送UDP请求,并且本地端点为192.168.1.21:54389,路由器将重写请求包并向NAT添加记录。假设外部端点为68.55.32.89:34535。然后,接收我请求的计算机响应68.55.32.89:34535,并根据NAT记录将其转发到本地的数据包192.168.1.21:54389。在那之后记录会怎么样?
如果25.34.11.56:3874决定在10或100分钟后向外部端点68.55.32.89:34535发送请求怎么办?它还会被路由器转发到192.168.1.21:54389吗?
假设还有另一台远程计算机,其端点为55.43.77.98:8765。如果这台计算机向我的外部端点68.55.32.89:34535发送请求,会发生什么?它会被转发到本地的192.168.1.21:54389,还是会被路由器过滤掉,因为远程端点不匹配25.34.11.56:3874,最初用于第一个请求和NAT记录?
发布于 2015-05-21 23:38:39
那得看情况。
根据RFC 4787的4.3节,NAT的UDP超时时间不应小于2分(120秒),但选定的著名端口除外。然而,在实践中,路由器往往使用较小的超时时间。例如,OpenWRT 14.07只使用60秒的超时。
对于TCP,超时可能要大得多,因为TCP连接通常通过显式FIN/FIN交换终止。对于已建立的TCP连接,RFC 5382第5节指定不少于2小时4分钟(7204秒)的超时时间,OpenWRT使用7440秒。
关于第二个问题,大多数NAT都维护特定于一对端点(套接字地址)的映射。如果NAT内部的主机A向套接字地址B发送数据报,则映射只适用于A和B之间的通信-- NAT之外的另一个主机C将无法使用该特定映射向A发送数据(一些所谓的完全锥NAT允许这样做,但它们相当罕见)。
https://stackoverflow.com/questions/30354131
复制相似问题