V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
lalalafq
V2EX  ›  问与答

IPv6 环境下指定 DNS 服务器的域名解析疑惑,求大神指点

  •  
  •   lalalafq · 2019-12-15 20:30:02 +08:00 · 1803 次点击
    这是一个创建于 1809 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在实现 《指定 DNS 服务器的域名解析》任务,使用的是 res_nquery 进行域名解析(具体方案: https://codeday.me/bug/20190527/1162066.html ),在处理 IPv6 网络环境时,出现一些不能理解的情况,望大神指点。

    设备环境:

    客户端连接到路由( Mac 共享出来的 NAT64 网络)模拟出来的 IPv6 网络,路由外连则是常规的家庭网络( IPv4 网络)。图中第一部分 。 以下简称客户端,Mac,外部网络。

    场景一:IPv6 环境下在使用默认 DNS 的情况下,解析 xyz.com 域名,如图中第二部分。抓包得到:

    1. 客户端向 Mac 发送 AAAA 记录的域名解析请求
    2. Mac 向外部网络发送 A 记录的域名解析请求
    3. 外部网络 DNS 解析后向 Mac 发送 A 记录的域名解析响应
    4. Mac 将 IPv4 地址转化成 IPv6 地址返回给客户端。

    场景二:IPv6 环境下在使用指定 DNS 的情况下,解析 xyz.com 域名,如图中第三部分。抓包得到:

    1. 客户端向 Mac 发送 AAAA 记录的域名解析请求
    2. Mac 向指定 DNS 服务发送 AAAA 记录的域名解析请求
    3. 指定 DNS 服务中没有 xyz.com 的 AAAA 记录,响应找不到( SOA )
    4. Mac 响应,客户端无法解析。

    问题如下:

    1. 根据 IPv6 相关文档解释说:在 DNS64 向 DNS 服务器查询 IPv6 的地址时,如果不存在则会询问 IPv4 的地址。为什么中间的 Mac 没有发起第二次 IPv4 的请求。 是不是 Mac 模拟的 NAT64 网络只是网络转化而已,没有 DNS64 相关功能(不用苹果的方式,自己搭建一个 DNS64 会有一次 AAAA,找不到再有一次 A )。

    2. 针对上面两个场景的不同,自我猜想,是否正确。

      • 第一种情况,默认 DNS,客户端发起域名解析,Mac 无法解析。Mac 主动发起一次 IPv4 的解析请求到外部,得到 A 记录。然后转化成 AAAA 记录给客户端。
      • 第二种情况,如果指定 DNS,NAT64 退化成一个常规的路由进行报文转发,所以网路上都是以 AAAA 的报文存在的。
    3. 针对第二种情况无法解析,我现在的解决方案是查询用 A 参数,解析用 AAAA 参数,可行。这种方式是否合理,如果不合理有没有其他更好的方式。 按照苹果的教程

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5400 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 05:56 · PVG 13:56 · LAX 21:56 · JFK 00:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.