我不知道有任何名称服务器支持单个查询中的多个问题。
在这样的查询中可能存在歧义,因为每个数据包的标志(例如 AA)可能仅适用于其中一个问题。如果您问两个问题并且服务器仅对其中一个域具有权威性,那么服务器是否应该设置该标志?我怀疑诸如此类的问题阻碍了实施者。
有很多建议可以解决您所讨论的问题(例如this https://datatracker.ietf.org/doc/html/draft-sajitha-dnsext-qtype-addr-00引入结合 A 和 AAAA 的 QTYPE 的提案,以及 Paul Vixie 的提案repeated https://datatracker.ietf.org/doc/html/draft-ietf-dnsind-edns-02 attempts https://datatracker.ietf.org/doc/html/draft-ietf-dnsext-edns1-03引入多个问题的 EDNS 形式),但目前支持 IPv4 和 6 的程序倾向于执行两个单独的查询,或者 AAAA 后跟 A(超时后),或者同时执行两者。
我想还有“所有”QTYPE,但它可以返回比您需要的更多的数据。
Edit:来自 BIND 源中的 query.c:
dns_message_currentname(message, DNS_SECTION_QUESTION,
&client->query.qname);
client->query.origqname = client->query.qname;
result = dns_message_nextname(message, DNS_SECTION_QUESTION);
if (result != ISC_R_NOMORE) {
if (result == ISC_R_SUCCESS) {
/*
* There's more than one QNAME in the question
* section.
*/
query_error(client, DNS_R_FORMERR, __LINE__);
} else
query_error(client, result, __LINE__);
return;
}
Edit:另外,来自 BIND 源中的resolver.c:
/*
* XXXRTH Currently we support only one question.
*/
if (message->counts[DNS_SECTION_QUESTION] != 1) {
log_formerr(fctx, "too many questions");
return (DNS_R_FORMERR);
}