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

For how long a router keeps records in the NAT and can they be reused forwarding requests from other hosts?

有一个答案用简单的术语解释了路由器如何将请求从本地网络转换到外部网络并返回 (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 还是会被路由器过滤掉,因为远程端点与最初用于第一个请求和 NAT 记录的 25.34.11.56:3874 不匹配?

视情况而定。

根据 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 发送数据。 (一些所谓的 full cone NAT 允许这样做,但它们相当罕见。)