IPv4 请求者是否可能意外地从 gLTD 获得 IPv6 记录?

IPv4 请求者是否可能意外地从 gLTD 获得 IPv6 记录?

有什么可以阻止这种情况发生吗?这是一种可能的情况吗?

ns1.edgecastdns.net. 172,800 IN (互联网) A (IPV4 主机地址) 192.16.16.5

ns1.edgecastdns.net。172,800 IN(互联网)AAAA(IPV6 主机地址)2606:2800:3::5

这两条记录有相同的名称,所以我认为它可能提供了错误的记录。

答案1

DNS 服务器总是有可能出现错误,但这种情况似乎不太可能发生。如果您查询特定类型的记录,则应该获得该类型。

但是,DNS 服务器通常会回答未提出的问题,以进行优化。在这种情况下,它确实提供了 AAAA 记录作为“附加答案”。这完全没问题。

QUESTIONS:
    ns1.edgecastdns.net, type = A, class = IN
ANSWERS:
->  ns1.edgecastdns.net
    internet address = 192.16.16.5
    ttl = 3582
...
ADDITIONAL RECORDS:
...
->  ns1.edgecastdns.net
    has AAAA address 2606:2800:3::5
    ttl = 63143

答案2

一句话:

当您请求“A”记录 (IPv4) 时,您将得到“A”答案或什么都没有。同样,当您请求“AAAA”记录 (IPv6) 时,您将得到“AAAA”答案或什么都没有。

(IPv4 和 IPv6不同的协议。仅仅因为它们共享字母 EYE 和 PEE,并不意味着它们完全兼容。)

要求“A”

~/[05:35 PM]:host -d -v -t a www.yahoo.com
Trying "www.yahoo.com"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50970
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 4, ADDITIONAL: 4

;; QUESTION SECTION:
;www.yahoo.com.                 IN      A

;; ANSWER SECTION:
www.yahoo.com.          240     IN      CNAME   fd-fp3.wg1.b.yahoo.com.
fd-fp3.wg1.b.yahoo.com. 30      IN      A       98.138.252.30
fd-fp3.wg1.b.yahoo.com. 30      IN      A       98.138.253.109

;; AUTHORITY SECTION:
wg1.b.yahoo.com.        55959   IN      NS      yf4.a1.b.yahoo.net.
wg1.b.yahoo.com.        55959   IN      NS      yf3.a1.b.yahoo.net.
wg1.b.yahoo.com.        55959   IN      NS      yf2.yahoo.com.
wg1.b.yahoo.com.        55959   IN      NS      yf1.yahoo.com.

;; ADDITIONAL SECTION:
yf1.yahoo.com.          56036   IN      A       68.142.254.15
yf2.yahoo.com.          56036   IN      A       68.180.130.15
yf3.a1.b.yahoo.net.     55420   IN      A       68.180.130.15
yf4.a1.b.yahoo.net.     55420   IN      A       68.180.130.15

您得到一个“A”。(好吧,CNAME 和它的“A”)

请求“AAAA”

~/[05:35 PM]:host -d -v -t aaaa www.yahoo.com
Trying "www.yahoo.com"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7501
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.yahoo.com.                 IN      AAAA

;; ANSWER SECTION:
www.yahoo.com.          205     IN      CNAME   fd-fp3.wg1.b.yahoo.com.
fd-fp3.wg1.b.yahoo.com. 49      IN      AAAA    2001:4998:44:204::a7

您获得了“AAAA”。

询问“任何”

~/[05:35 PM]:host -d -v -t any fd-fp3.wg1.b.yahoo.com
Trying "fd-fp3.wg1.b.yahoo.com"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17586
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;fd-fp3.wg1.b.yahoo.com.                IN      ANY

;; ANSWER SECTION:
fd-fp3.wg1.b.yahoo.com. 52      IN      A       98.138.253.109
fd-fp3.wg1.b.yahoo.com. 52      IN      A       98.138.252.30
fd-fp3.wg1.b.yahoo.com. 52      IN      AAAA    2001:4998:44:204::a7

(如果我请求 www,我只会得到唯一的 CNAME。)

如果你想看到一个“引导性答案”……

[root:pts/3{2}]debian1:~/[06:00 PM]:host -d -v -t any gmail.com 8.8.8.8
Trying "gmail.com"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55161
;; flags: qr rd ra; QUERY: 1, ANSWER: 16, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;gmail.com.                     IN      ANY

;; ANSWER SECTION:
gmail.com.              299     IN      A       64.233.185.19
gmail.com.              299     IN      A       64.233.185.18
gmail.com.              299     IN      A       64.233.185.83
gmail.com.              299     IN      A       64.233.185.17
gmail.com.              299     IN      AAAA    2607:f8b0:4002:c09::12
gmail.com.              3599    IN      MX      30 alt3.gmail-smtp-in.l.google.com.
gmail.com.              21599   IN      NS      ns4.google.com.
gmail.com.              21599   IN      SOA     ns1.google.com. dns-admin.google.com. 2015031901 21600 3600 1209600 300
gmail.com.              3599    IN      MX      10 alt1.gmail-smtp-in.l.google.com.
gmail.com.              3599    IN      MX      20 alt2.gmail-smtp-in.l.google.com.
gmail.com.              21599   IN      NS      ns3.google.com.
gmail.com.              3599    IN      MX      5 gmail-smtp-in.l.google.com.
gmail.com.              21599   IN      NS      ns2.google.com.
gmail.com.              3599    IN      MX      40 alt4.gmail-smtp-in.l.google.com.
gmail.com.              299     IN      TXT     "v=spf1 redirect=_spf.google.com"
gmail.com.              21599   IN      NS      ns1.google.com.

答案3

只是对其他答案做了一点补充。

其他答案对于您在数据包的答案部分中得到的内容是正确的。如果您的客户端A在查询中要求记录,则答案部分将仅返回一条A记录或一条记录,该记录或CNAME记录可能指向也可能不指向包含A值的不同记录。这意味着另一个永远不可能偶然使用。

有目的地完全是另一回事。让我们来看看RFC4213

IPv6/IPv4 节点上的 DNS 解析器库必须能够处理 AAAA 和 A 记录。但是,当查询找到包含 IPv6 地址的 AAAA 记录和包含 IPv4 地址的 A 记录时,解析器库可以对返回给应用程序的结果进行排序,以影响用于与该特定节点通信的 IP 数据包版本 - 优先使用 IPv6 还是优先使用 IPv4。

应用程序应该能够指定是否需要 IPv4、IPv6 或两者的记录RFC3493。这定义了解析器查找哪些地址系列。如果没有应用程序选择,或者应用程序请求了两者,则解析器库不得过滤掉任何记录。


由于大多数应用程序按照解析器返回的顺序尝试地址,这可能会影响应用程序的 IP 版本“偏好”。

实际的排序机制超出了本备忘录的范围。
地址选择在 RFC3484

具体来说:

  • 应用程序可以明确请求解析器库进行基于 IPv4 或 IPv6 的 DNS 查找。但许多应用程序不这样做。
  • 如果系统是双栈系统(IPv4 和 IPv6),则默认不做任何假设并提供所有可能的答案。这意味着对请求名称的正则表达式A和变体进行显式查找。AAAA
  • IPv4+IPv6 组合结果的排序是一个复杂的话题(参见链接的 RFC3484)。

除非您的设备启用了 IPv6,否则不会使用 IPv6 地址。如果您同时使用两者,则操作系统将对如何对返回的答案进行有根据的猜测(假设应用程序将尝试使用返回的第一个值),然后应用程序将按照返回的顺序对答案进行任何处理。

复杂吗?是的。简而言之,你的操作系统+应用程序可能更喜欢AAAA现有的记录,但如果发生这种情况,这将不是一个“意外”,并且远程服务器(假设符合标准)将绝不AAAAA请求记录时返回响应。

相关内容