DNS服务器拒绝连接

时间:2009-11-08 13:07:26

标签: dns udp

我正在实现一个dns客户端,我尝试连接到本地dns服务器,但是dns服务器返回错误代码为5的消息,这意味着它拒绝连接。

有关为何会发生这种情况的任何想法?感谢

5 个答案:

答案 0 :(得分:9)

DNS响应错误代码5(“拒绝”)并不意味着拒绝与DNS服务器的连接。 这意味着DNS服务器拒绝提供您要求的任何数据,或者执行您要求它执行的任何操作(例如动态更新)。

既然你提到了“连接”,我假设你正在使用TCP? DNS primarilly使用UDP,一些DNS服务器将拒绝所有通过TCP的请求。 所以解决方案可能就像切换到UDP一样简单。

否则,假设您从头开始构建自己的DNS客户端,我的第一个猜测是您正在格式化请求。尽管DNS协议看起来相当简单,但很容易出错。

最后,DNS服务器当然可以简单地配置为拒绝您要求的任何请求。

答案 1 :(得分:1)

政策执行?

DNS服务器可以配置为仅接受来自某些主机的连接。

答案 2 :(得分:1)

您可以尝试使用WireShark监控对话。它还可以为您解码数据包,这可能有助于您确定客户端的数据包是否正确编码。只需过滤端口53(DNS)即可限制跟踪捕获的数据包。

此外,请确保您使用UDP而不是TCP进行查询; TCP应主要用于区域传输,而不是查询。

答案 3 :(得分:0)

嗯,如果您能够访问StackOverflow,那么您将拥有一个有效的DNS服务器。尝试做

host -v stackoverflow.com

并查找

等消息

Received 50 bytes from 192.168.1.1#53 in 75 ms

然后从该行中选择地址并使用THAT作为您的DNS - 它显然愿意与您交谈。

如果您使用的是Windows,请将NSLOOKUP用于相同目的。您的名称服务器地址将在输出中的某处。

修改

当我遇到DNS服务器时,我会使用我最容易记住的地址:4.2.2.2。看看它是如何运作的。

答案 4 :(得分:0)

显式添加我想要允许的网络 - 递归为我解决了这个问题:

这两行添加到/etc/bind/named.conf.options

递归是的; allow-recursion {10.2.0.0/16; };