gLTD是否可能让IPv4请求者意外地为IPv6logging提供服务?

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

ns1.edgecastdns.net。 (Internet)A(IPV4主机地址)192.16.16.5

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

这两个logging有相同的名字,所以我认为这可能是错误的logging。

DNS服务器总是有可能是越野车,但似乎不太可能。 如果您查询某个特定types的logging,那就是您应该得到的types。

但是,DNS服务器通常会回答没有被要求作为优化的问题。 在这种情况下,它似乎提供AAAAlogging作为“附加答案”。 这很好。

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 

总之: 没有

当你要求一个“A”logging(IPv4)时,你会得到一个“A”的答案,或者什么都不是。 同样,当你要求一个“AAAA”logging(IPv6),你会得到一个“AAAA”的答案或什么都没有。

(IPv4和IPv6是不同的协议,只是因为它们共享字母EYE和PEE,并不意味着它们甚至是远程兼容的。)

要求“A”

 ~/[05:35 PM]:host -d -v -ta 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. 

只是增加一些其他的答案。

其他答案是正确的,你在你的数据包的答案部分得到什么。 如果您的客户在查询中要求Alogging,答案部分将只返回Alogging或CNAME ,该logging或CNAME可能指向或不指向包含A值的不同logging。 这意味着对方不可能意外地被使用。

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

IPv6 / IPv4节点上的DNSparsing器库必须能够处理AAAA和Alogging。 但是,当一个查询查找持有IPv6地址的AAA​​Alogging和保存IPv4地址的Alogging时,parsing器库可以将返回的结果sorting,以影响用于与该特定节点通信的IP数据包的版本 – 首先是IPv6,或者先是IPv4。

应用程序应该能够指定他们是否需要IPv4,IPv6或两个loggingRFC3493 。 这定义了parsing器查找哪些地址族。 如果没有应用程序select,或者应用程序同时请求了parsing器库,则不能过滤掉任何logging。

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

实际的订购机制超出了本备忘录的范围。
地址select在RFC3484中有更详细的描述。

所以要打破它:

  • 应用程序可以明确要求parsing器库进行基于IPv4或IPv6的DNS查找。 许多应用程序不。
  • 如果系统是双栈(IPv4和IPv6),默认是不做任何假设,并提供所有可能的答案。 这意味着明确查找所请求名称的AAAAA变体。
  • 组合的IPv4 + IPv6结果的顺序是一个复杂的主题(请参阅链接的RFC3484)。

除非您的设备启用了IPv6,否则将不会使用IPv6地址。 如果你同时使用了这两个操作系统,那么操作系统会对如何命令返回的答案做一个有根据的猜测(假设应用程序将尝试使用返回的第一个值),然后应用程序将执行任何想要的操作他们返回的顺序的答案。

复杂? 是。 长话短说,您的OS +应用程序可能更喜欢存在的AAAAlogging,但如果发生这种情况,它不会是一个“事故”,并且远程服务器(假设符合标准) 永远不会返回AAAA响应被要求。