路由器在NAT中保留记录的时间长度,是否可以重用来自其他主机的转发请求?

ale*_*.98 6 router rewrite udp nat packet

有一个答案简单地解释了路由器如何将来自本地网络的请求转换为外部和后端(https://superuser.com/questions/105838/how-does-router-know-where-to-forward-packet)什么不清楚 - NAT中的记录保存多长时间?

例如,如果我发送UDP请求到25.34.11.56:3874并且我的本地端点是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还是会被路由器过滤掉,因为远程端点与最初用于第一个请求和NAT记录的25.34.11.56:3874不匹配?

jch*_*jch 6

这取决于.

根据RFC 4787的第4.3节,NAT的UDP超时不应小于2分钟(120秒),除了选定的,众所周知的端口.然而,在实践中,路由器倾向于使用较小的超时.例如,OpenWRT 14.07使用仅60秒的超时.

对于TCP,超时可以更大,因为TCP连接通常由显式FIN/FIN-ACK交换终止.对于已建立的TCP连接,RFC 5382的第5节规定超时不小于2小时4分钟(7204秒),OpenWRT使用7440秒.

关于第二个问题,大多数NAT维护特定于一对端点(套接字地址)的映射.如果NAT内的主机A向套接字地址B发送数据报,则该映射仅适用于A和B之间的通信 - NAT外部的不同主机C将无法使用该特定映射将数据发送到A. (一些所谓的全锥形 NAT允许这样做,但它们相当罕见.)