V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sikeer
V2EX  ›  DNS

自建 DNS,不打开递归解析,无法正常使用。

  •  
  •   sikeer · 127 天前 · 2363 次点击
    这是一个创建于 127 天前的主题,其中的信息可能已经有所发展或是发生改变。

    请教大家一个问题:

    1. 我在家里用群晖搭建了一个 DNS (地址为:192.168.1.2 ),这个 DNS 只用来解析一个域名:123.test.com 解析为自身( 192.168.1.2 ),并且这个解析只对家里的 LAN 上的设备有效

    2. 我在家里的手机上和电脑上,配置 DNS 为:192.168.1.2 ,223.5.5.5

    3. 我的想法是:任何 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.但是如果将递归解析打开,则一切正常。

    请问大家,为什么?

    16 条回复    2024-08-20 09:21:04 +08:00
    Internet0User
        1
    Internet0User  
       127 天前 via Android   ❤️ 1
    递归解析 顾名思义嘛
    要是不太了解的话可以看看递归解析的原理,相信你应该就明白了
    szlytlyt
        2
    szlytlyt  
       127 天前
    用户:如果主 dns 没有查到记录,会自动去备用 dns 查询吗

    ChatGPT 说:
    通常情况下,如果主 DNS 服务器响应了查询请求但没有找到对应的记录,Windows 系统不会自动切换到备 DNS 服务器进行查询。这是因为从技术上讲,主 DNS 已经正确地响应了请求,只是没有对应的记录。

    换句话说,只有在主 DNS 服务器无法响应(如超时或连接失败)时,系统才会自动切换到备 DNS 。如果主 DNS 成功响应但没有找到记录,系统不会去备 DNS 再次查询。
    yshtcn
        3
    yshtcn  
       127 天前
    因为递归解析才是你需要的功能。
    nuk
        4
    nuk  
       127 天前
    因为 nslookup 不是递归查询,但是 windows 系统的 dns 客户端是递归查询,另外主 dns 只解析一个域名不会导致网络很慢吗。
    Kobayashi
        5
    Kobayashi  
       127 天前 via Android
    这什么和什么,你用的什么 DNS 服务软件、配置都没说啊,就一句群晖。
    yinmin
        6
    yinmin  
       127 天前 via iPhone
    nslookup 123.test.com 能看到具体使用了哪个 dns 服务器的。另外,windows 配置里的主 dns 、副 dns 不是依次使用,而是随机使用的。
    flynaj
        7
    flynaj  
       127 天前 via Android
    用 smartDNS ,DNS 填几个进去,会自动解析最快的
    ho121
        8
    ho121  
       127 天前 via Android
    > 我的想法是:任何 DNS 查询,首先到 192.168.1.2 ,如果是查询 123.test.com ,则应答,如果是其它域名,则不应答,由下一个 223.5.5.5 去应答。

    建议楼主确认一下您所用的系统,DNS 查询是不是这个逻辑,很可能不是您所想的逻辑。

    > 但是如果将递归解析打开,则一切正常。

    如果递归解析打开了,您自建的 DNS 服务器变成了全功能 DNS 服务器了,当然能解析任意域名。
    cleanery
        9
    cleanery  
       127 天前
    递归解析才是大多数 dns 的工作状态啊
    你 dns 里没有该网站的缓存, 它自然要递归请求上级的 dns, 最后找到权威 dns
    ShinichiYao
        10
    ShinichiYao  
       127 天前
    主 DNS 不响应才会转到备用 DNS ,主 DNS 活着的不会去备用 DNS 查
    FengMubai
        11
    FengMubai  
       127 天前
    你这种情况没必要自建, 直接 dnsmasq 追加 host
    mainjzb
        12
    mainjzb  
       127 天前
    我估计是 windows 会定期检测一些域名,比如 www.msftconnecttest.com:80
    根据 windows 的内部判断,你的第一个 DNS 完全不可用。所以默认启用了第二个 DNS 。
    如果你开了递归解析。第一个 DNS 就能访问到检测域名了,就使用了第一个 DNS 。
    bingoup886
        13
    bingoup886  
       127 天前
    你的 dns 服务器解决了缓存穿透的问题:如果没有 value ,则缓存一个空值(有效),所以才不会走其他服务器了啊
    sikeer
        14
    sikeer  
    OP
       126 天前
    谢谢大家回复!
    我用的是群晖自带的 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
    sikeer
        15
    sikeer  
    OP
       126 天前
    我在群晖 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
    sikeer
        16
    sikeer  
    OP
       126 天前
    我的 MACOS 的系统 DNS 设置为:
    192.168.1.2
    223.5.5.5
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2969 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 13:29 · PVG 21:29 · LAX 05:29 · JFK 08:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.