请教大家一个问题:
我在家里用群晖搭建了一个 DNS (地址为:192.168.1.2 ),这个 DNS 只用来解析一个域名:123.test.com 解析为自身( 192.168.1.2 ),并且这个解析只对家里的 LAN 上的设备有效
我在家里的手机上和电脑上,配置 DNS 为:192.168.1.2 ,223.5.5.5
我的想法是:任何 DNS 查询,首先到 192.168.1.2 ,如果是查询 123.test.com ,则应答,如果是其它域名,则不应答,由下一个 223.5.5.5 去应答。因此我在 192.168.1.2 上不启用剃归解析
4.结果是:nslookup 123.test.com 192.168.1.2 时,正常应答,但是,nslookup 123.test.com 时,无法正常解析 123.test.com. ping 123.test.com 也不行。
5.但是如果将递归解析打开,则一切正常。
请问大家,为什么?
1
Internet0User 121 天前 via Android 1
递归解析 顾名思义嘛
要是不太了解的话可以看看递归解析的原理,相信你应该就明白了 |
2
szlytlyt 121 天前
用户:如果主 dns 没有查到记录,会自动去备用 dns 查询吗
ChatGPT 说: 通常情况下,如果主 DNS 服务器响应了查询请求但没有找到对应的记录,Windows 系统不会自动切换到备 DNS 服务器进行查询。这是因为从技术上讲,主 DNS 已经正确地响应了请求,只是没有对应的记录。 换句话说,只有在主 DNS 服务器无法响应(如超时或连接失败)时,系统才会自动切换到备 DNS 。如果主 DNS 成功响应但没有找到记录,系统不会去备 DNS 再次查询。 |
3
yshtcn 121 天前
因为递归解析才是你需要的功能。
|
4
nuk 121 天前
因为 nslookup 不是递归查询,但是 windows 系统的 dns 客户端是递归查询,另外主 dns 只解析一个域名不会导致网络很慢吗。
|
5
Kobayashi 121 天前 via Android
这什么和什么,你用的什么 DNS 服务软件、配置都没说啊,就一句群晖。
|
6
yinmin 121 天前 via iPhone
nslookup 123.test.com 能看到具体使用了哪个 dns 服务器的。另外,windows 配置里的主 dns 、副 dns 不是依次使用,而是随机使用的。
|
7
flynaj 121 天前 via Android
用 smartDNS ,DNS 填几个进去,会自动解析最快的
|
8
ho121 121 天前 via Android
> 我的想法是:任何 DNS 查询,首先到 192.168.1.2 ,如果是查询 123.test.com ,则应答,如果是其它域名,则不应答,由下一个 223.5.5.5 去应答。
建议楼主确认一下您所用的系统,DNS 查询是不是这个逻辑,很可能不是您所想的逻辑。 > 但是如果将递归解析打开,则一切正常。 如果递归解析打开了,您自建的 DNS 服务器变成了全功能 DNS 服务器了,当然能解析任意域名。 |
9
cleanery 121 天前
递归解析才是大多数 dns 的工作状态啊
你 dns 里没有该网站的缓存, 它自然要递归请求上级的 dns, 最后找到权威 dns |
10
ShinichiYao 121 天前
主 DNS 不响应才会转到备用 DNS ,主 DNS 活着的不会去备用 DNS 查
|
11
FengMubai 121 天前
你这种情况没必要自建, 直接 dnsmasq 追加 host
|
12
mainjzb 121 天前
我估计是 windows 会定期检测一些域名,比如 www.msftconnecttest.com:80
根据 windows 的内部判断,你的第一个 DNS 完全不可用。所以默认启用了第二个 DNS 。 如果你开了递归解析。第一个 DNS 就能访问到检测域名了,就使用了第一个 DNS 。 |
13
bingoup886 121 天前
你的 dns 服务器解决了缓存穿透的问题:如果没有 value ,则缓存一个空值(有效),所以才不会走其他服务器了啊
|
14
sikeer OP 谢谢大家回复!
我用的是群晖自带的 DNS 服务套件。 当我把递归解析关闭时: $nslookup 123.test.com 的回复是: ;; Got recursion not available from 192.168.1.2, trying next server Server: 223.5.5.5 Address: 223.5.5.5#53 ** server can't find 123.test.com: NXDOMAIN 但是用下面的命令: $nslookup 123.test.com 192.168.1.2 Server: 192.168.1.2 Address: 192.168.1.2#53 Name: 123.test.com Address: 192.168.1.2 我是在 macOS 上测试,并且在测试之前已经清空了 DNS 缓存 sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder |
15
sikeer OP 我在群晖 DNS 套件上的 ZONE 配置是:
123.test.com A 192.168.1.2 123.test.com NS ns.123.test.com ns.123.test.com A. 192.168.1.2 |
16
sikeer OP 我的 MACOS 的系统 DNS 设置为:
192.168.1.2 223.5.5.5 |