客户端如何从多个 DNS 响应中选择 DNS 记录?

客户端如何从多个 DNS 响应中选择 DNS 记录?

我有一个虚拟专用服务器,它有一个 IPV4 地址和一系列 IPV6 地址,并且可以选择添加一百个 IPV6 地址。

配置:

操作系统

Debian 11

IPV4

一个可路由的公共 Internet IPV4 地址

IPV6

一个可路由的公共互联网 IPV6 地址和另外两个 ::1,::2,::3 到接口文件,它们可以从互联网访问

DNS 和域

我有一个域名(XXXX.com)和 DNS 提供商上的记录:A记录IPV4(XXXX)地址和三个高级记录三个IPV6服务器上的地址。

  1. 当用户在浏览器或终端上输入 XXXX.com 时,DNS 响应包括所有 IPV4 和 IPV6 地址。客户端如何决定应该使用哪个地址?

  2. 优先顺序是什么?

  3. 有标准或算法吗?我可以设置全部一百个,这样如果某些 IPV6 地址被阻止,它仍然可以访问吗?

  4. 我已看到服务器上的数据包,它始终使用第三个 IPv6(例如 ::3)。它如何决定使用哪一个?如果它在其路由表上(IP-6路由没有显示第三个 IPV6(如 ::3),有没有办法将其随机化(每个连接使用随机接口)?

答案1

  • 仅支持 IPv4 的客户端仅查找 A 记录。
  • 同样,仅支持 IPv6 的客户端会专门查找 AAAA 记录。
  • 双栈客户端同时请求两者,并且可能优先考虑其中一个或者同时尝试两者(感谢@dave)。

答案2

除了@Zac67的回答之外,还会向客户端返回一个地址列表。理论上,他们可以优先考虑并浏览整个列表,看看哪些有效。实际上,许多软件只尝试列表中的第一个,如果失败,则中止而不尝试其他。

相关内容