首页
社区
课程
招聘
[求助]DNS客户端什么情况下使用迭代查询
发表于: 2010-11-17 17:10 9375

[求助]DNS客户端什么情况下使用迭代查询

2010-11-17 17:10
9375
最近在看dns,我想知道dns客户端怎么进行迭代查询。
相关资料中说dns有两种查询方式,递归查询和迭代查询,
1.递归查询是指dns服务器帮客户端查出最终结果(dns服务器如果不知道答案,它会向其他dns服务器请求,直到得出最终结果为止);
2.迭代查询是指dns服务器如果不知道结果就返回一个能够查出结果的dns服务器地址列表,然后让客户端自己去向这些dns服务器去查。

很多资料都说,满足迭代查询的两个条件是:
1.dns服务器配置为不支持递归查询。
2.客户端dns请求中的递归标志位为0.

于是我从这两个条件入手(满足一个条件即可),
1.设置一个不支持递归查询的dns服务器。(这一点dns服务器bind9的配置文件中加入recurse no;就可以了)。
我在本地虚拟机搭建了一个dns服务器,然后设置不递归,并将该dns服务器设为本机的dns服务器。按照我的理解,应该是当我使用浏览器去访问一个dns服务器不知道的网址的时候(比如访问abcd.baidu.com),它会告诉我知道答案的其他dns服务器的ip,我虚拟机里的dns不知道这个域名的答案,所以他返回了一个dns服务器的ip列表让客户端自己去查,但是实际上浏览器并没有向这些dns服务器列表请求,也就是没有执行迭代查询。

2.发送请求时将递归标志位置为0。(dns请求报文中有一个递归选项标识位,置1表示使用递归,0表示不递归)。
使用nslookup命令,set norecurse,然后查询abcd.baidu.com,wireshark抓包的时候确实看到递归标志为0,而且服务器也没有进行递归查询,而是返回了baidu.cm的dns认证服务器的ip。但是查询到此就结束了,客户端并没有向baidu.com的认证dns发出请求,也就是没有进行迭代查询。
 

我很困惑,到底在什么情况下dns会使用迭代查询?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 43
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
我看了libnet中关于dns lookup的源码,发现里面是有实现客户端迭代查询的,也就是说应该是可行的,问题是为什么直接用系统工具(nslookup,dig等),却没复现出迭代查询?

看来要逆向windows中的nslookup(linux中nslookup,dig都可以用来查询dns)才能知道答案了,有已经分析过的朋友么?
2010-11-22 13:09
0
雪    币: 245
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我也遇到了这个情况,我发现nslookup好像是不支持迭代查询的。
2019-5-14 14:50
0
游客
登录 | 注册 方可回帖
返回
//