udp - 路由器将记录保留在NAT中多长时间,并且可以重用来自其他主机的转发请求吗?

标签 udp rewrite router packet nat

有一个简单的答案可以解释路由器如何将本地网络的请求转换为外部和外部请求(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。 (某些所谓的全锥状NAT允许这样做,但是它们很少见。)

关于udp - 路由器将记录保留在NAT中多长时间,并且可以重用来自其他主机的转发请求吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30354131/

相关文章:

javascript - 在 VueJS 中访问 $route.params

angular - 获取 Angular 2 中的路径或路由名称

IIS 7 规范 URL 重定向

apache - 允许在 URL/URI w/o 编码中使用非查询问号 "?"

python - 正确的多处理以在 Python 中处理 UDP

c++ - 如何设置 Winsock UDP 套接字?

php - URL 重写 - $_GET 变量未通过

linux - 如何使用 awk 命令检索特定单词

c - 代理 DNS 未收到响应

go - 如何在golang中发送一个假的udp包