DNS 响应如何到达 NAT 后面的客户端?我正在谈论使用 UDP 与与客户端不在同一网络中的服务器进行传输的 DNS 查询。
NAT 是否将响应与它最近看到的请求相关联?如果多个客户端同时对同一台服务器执行不同的查询怎么办?它只能在启用 upnp 的情况下工作吗?
DNS 响应如何到达 NAT 后面的客户端?我正在谈论使用 UDP 与与客户端不在同一网络中的服务器进行传输的 DNS 查询。
NAT 是否将响应与它最近看到的请求相关联?如果多个客户端同时对同一台服务器执行不同的查询怎么办?它只能在启用 upnp 的情况下工作吗?
您所指的翻译类型是Dynamic PAT。这种类型的翻译通常是单向的。也就是说,流量只在出站方向流动。但更准确的说法是流量仅在出站方向发起时才会流动。
看看这篇文章中的这个插图:
每个主机发起一个连接,当每个数据包被转换时,转换设备(在这种情况下是路由器,但许多设备可以执行 NAT)记录所有的预转换属性和转换后属性。
然后,当服务器响应时,它们的响应数据包可以与转换表进行匹配,以将翻译后属性取消翻译回它们的翻译前属性:
这正是 DNS 响应(或任何其他响应)通过单向 NAT 转换返回的方式。
至于你的具体问题:
NAT 是否将响应与它最近看到的请求相关联?
是的。恰恰。对于 TCP 连接,请求会保留在转换表中,直到转换设备看到连接结束(RST 或 FIN 标志)。对于 UDP 连接,请求会保留在转换表中以进行某种不活动超时——我经常看到 2 分钟,但每个供应商可能会有所不同。
如果多个客户端同时对同一台服务器执行不同的查询怎么办?
翻译设备为每个翻译分配一个唯一的源端口,以便每个连接的返回流量都可以被唯一标识,并且不会被翻译到正确的主机。
它只能在启用 upnp 的情况下工作吗?
不。任何协议的响应流量都可以使用上述过程通过动态 PAT 进行通信。
UPNP 服务于不同的目的。它允许外部发起的连接通过动态 PAT 来,这通常是不可能的。
您可以在此处阅读有关 UPNP 的更多信息。
免责声明:图像和链接从上面传来我的动态PAT文章上我的博客。没有广告或强制性电子邮件注册。提供内容纯粹是为了帮助读者和提问者。