正如标题所示,“警告:未设置查询响应”是什么意思。我在 dighost.c(第 2888 行和第 2889 行)源代码中看到以下内容,但仍然不确定我的 DNS 服务器响应中的哪些内容会导致此问题。
if (result == ISC_R_SUCCESS && (msgflags & DNS_MESSAGEFLAG_QR) == 0)
printf(";; Warning: query response not set\n");
答案1
该QR
位(报头中第三个八位字节的 MSB)指示该数据包是请求 (0) 还是响应 (1)。
因此,所有客户端都必须发送清除该位的数据包,服务器也必须发送设置了该位的数据包。错误消息会告诉您收到的响应被标记为请求。
顺便说一句,几年前 Microsoft DNS 服务器中有一个已知错误,即使数据包中设置了 QR 位,它也会应答该数据包!因此可能会导致数据包循环。
答案2
这看起来是由于响应标头的 QR 部分设置不正确造成的。