请教大家一个问题:
我在家里用群晖搭建了一个 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.但是如果将递归解析打开,则一切正常。
请问大家,为什么?
|      1Internet0User      2024-08-18 23:20:59 +08:00 via Android  1 递归解析 顾名思义嘛 要是不太了解的话可以看看递归解析的原理,相信你应该就明白了 | 
|      2szlytlyt      2024-08-19 00:19:43 +08:00 用户:如果主 dns 没有查到记录,会自动去备用 dns 查询吗 ChatGPT 说: 通常情况下,如果主 DNS 服务器响应了查询请求但没有找到对应的记录,Windows 系统不会自动切换到备 DNS 服务器进行查询。这是因为从技术上讲,主 DNS 已经正确地响应了请求,只是没有对应的记录。 换句话说,只有在主 DNS 服务器无法响应(如超时或连接失败)时,系统才会自动切换到备 DNS 。如果主 DNS 成功响应但没有找到记录,系统不会去备 DNS 再次查询。 | 
|      3yshtcn      2024-08-19 00:46:58 +08:00 因为递归解析才是你需要的功能。 | 
|  |      4nuk      2024-08-19 01:09:38 +08:00 因为 nslookup 不是递归查询,但是 windows 系统的 dns 客户端是递归查询,另外主 dns 只解析一个域名不会导致网络很慢吗。 | 
|      5Kobayashi      2024-08-19 02:00:05 +08:00 via Android 这什么和什么,你用的什么 DNS 服务软件、配置都没说啊,就一句群晖。 | 
|      6yinmin      2024-08-19 02:00:56 +08:00 via iPhone nslookup 123.test.com 能看到具体使用了哪个 dns 服务器的。另外,windows 配置里的主 dns 、副 dns 不是依次使用,而是随机使用的。 | 
|  |      7flynaj      2024-08-19 02:27:12 +08:00 via Android 用 smartDNS ,DNS 填几个进去,会自动解析最快的 | 
|      8ho121      2024-08-19 08:13:55 +08:00 via Android > 我的想法是:任何 DNS 查询,首先到 192.168.1.2 ,如果是查询 123.test.com ,则应答,如果是其它域名,则不应答,由下一个 223.5.5.5 去应答。 建议楼主确认一下您所用的系统,DNS 查询是不是这个逻辑,很可能不是您所想的逻辑。 > 但是如果将递归解析打开,则一切正常。 如果递归解析打开了,您自建的 DNS 服务器变成了全功能 DNS 服务器了,当然能解析任意域名。 | 
|  |      9cleanery      2024-08-19 09:14:52 +08:00 递归解析才是大多数 dns 的工作状态啊 你 dns 里没有该网站的缓存, 它自然要递归请求上级的 dns, 最后找到权威 dns | 
|      10ShinichiYao      2024-08-19 09:24:20 +08:00 主 DNS 不响应才会转到备用 DNS ,主 DNS 活着的不会去备用 DNS 查 | 
|  |      11FengMubai      2024-08-19 09:36:11 +08:00 你这种情况没必要自建, 直接 dnsmasq 追加 host | 
|  |      12mainjzb      2024-08-19 10:09:31 +08:00 我估计是 windows 会定期检测一些域名,比如 www.msftconnecttest.com:80 根据 windows 的内部判断,你的第一个 DNS 完全不可用。所以默认启用了第二个 DNS 。 如果你开了递归解析。第一个 DNS 就能访问到检测域名了,就使用了第一个 DNS 。 | 
|  |      13bingoup886      2024-08-19 10:14:04 +08:00 你的 dns 服务器解决了缓存穿透的问题:如果没有 value ,则缓存一个空值(有效),所以才不会走其他服务器了啊 | 
|      14sikeer 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 | 
|      15sikeer 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 | 
|      16sikeer OP 我的 MACOS 的系统 DNS 设置为: 192.168.1.2 223.5.5.5 |