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

MacOS 拒绝通过 DNS 查询某个域名? ping 失败但是 nslookup 成功

  •  
  •   dangyuluo · 2021-11-13 13:09:29 +08:00 · 1797 次点击
    这是一个创建于 1099 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我有一个域名,由 Cloudflare 托管。其中一个 A 记录(test.lan.my_domain.com)指向部署在内网里的一个服务,IP 地址 10.0.0.235 。我在家里的某台机器上部署了一个本地 DNS 解析服务器用于去广告,DNS IP 为 10.0.0.230 。我在路由器上设置 DHCP 分配的 DNS 为 10.0.0.230, 8.8.8.8, 8.8.4.4 。

    我本地的最终 DNS 如下:

    resolver #1
      search domain[0] : hsd1.xx.comcast.net
      nameserver[0] : fe80::6a1:xxxx:xxxx:xxxx%11d  <<<=== IPv6 分配来的
      nameserver[1] : 10.0.0.230
      nameserver[2] : 8.8.8.8
      nameserver[3] : 8.8.4.4
    

    以上为背景。最近我发现在启用 IPv6 之后我无法在 MacOS 里ping这个域名了,具体错误为unknown host,并且网页也打不开。但是通过nslookup test.lan.my_domain.com是可以得到正确的解析。在ping的时候我的 DNS 服务器上没有这条请求记录,但是可以看到经由nslookup发出的解析请求。究其原因应该是nslookup绕过系统直接向 DNS 发请求查询吧。

    所以问题很奇怪,为什么系统拒绝向本地 DNS 查询一个域名呢?

    第 1 条附言  ·  2021-11-13 17:30:21 +08:00
    学习到了 rebiind protection 的概念,原来是 DDWRT 路由器上默认开启了`No DNS Rebind`,但是令我震惊的是虽然我的 DNS 服务器配置到了 10.0.0.230 ,DDWRT 里的配置仍然有效。令人费解
    11 条回复    2021-11-13 17:22:06 +08:00
    usufu
        1
    usufu  
       2021-11-13 13:13:38 +08:00
    走 ipv6 的 dns 服务器了,前几天搞 ad home 也弄了半天。
    ipv6 的 dns 走的默认的拨号 dns ,所以不经过 ad guard home 。
    我的 asus 路由器要把拨号那里的 dns 也手动指定。然后 ipv6 的设置里面吧 dns 选为手动指定,并且留空。
    Kobayashi
        2
    Kobayashi  
       2021-11-13 13:15:16 +08:00 via Android
    1. nslookup 时要带上 DNS 地址: nslookup test.lan.my_domain.com 10.0.0.230
    2. 路由器下发自己的 DNS 时为什么还要下发 8.8.8.8 ?你既然选择使用自己的 DNS 就不要下发公共 DNS 。
    dangyuluo
        3
    dangyuluo  
    OP
       2021-11-13 13:26:24 +08:00
    @Kobayashi 可是问题不出在 nslookup 上,`nslookup`自己知道向 DNS 查询。加上 8.8.8.8 是因为我本地的服务经常重启,不想耽误别的客户端。

    @usufu 我也在想是不是这个原因,在想怎么办能够让 ddwrt 修改一下 DNS 下发的顺序
    Remember
        4
    Remember  
       2021-11-13 13:28:06 +08:00
    cloudflare 的 ns 很多年前就会被间歇性阻断了。
    littlewing
        5
    littlewing  
       2021-11-13 13:30:38 +08:00
    RFC1918
    dangyuluo
        6
    dangyuluo  
    OP
       2021-11-13 13:37:50 +08:00
    @Remember 可以排除不是墙的问题
    dangyuluo
        7
    dangyuluo  
    OP
       2021-11-13 13:38:20 +08:00
    @dangyuluo 应该说是可以排除墙的问题😂说话都不利索了
    usufu
        8
    usufu  
       2021-11-13 14:24:45 +08:00
    @dangyuluo 把你拨号那个配置改一下,不要拿运营商给的 dns
    cwbsw
        9
    cwbsw  
       2021-11-13 15:17:29 +08:00
    没看懂楼主的描述。不过我自己踩过坑,内网地址的域名查询被 dns rebind protection 给过滤掉了。
    xiaooloong
        10
    xiaooloong  
       2021-11-13 16:58:40 +08:00
    [我在家里的某台机器上部署了一个本地 DNS 解析服务器用于去广告,DNS IP 为 10.0.0.230 ]

    是不是用 dnsmasq 搭建的?怀疑是开启了防止 dns rebind 攻击的功能。就是说域名解析出来的 ip 是内网 ip 的话会直接返回无解析。dnsmasq 的话设置是 rebind-domain-ok=/my_domain.com/[your_domain.com[/otherdomain/]] 给特定的域名设置允许解析结果为内网 IP 。
    dangyuluo
        11
    dangyuluo  
    OP
       2021-11-13 17:22:06 +08:00
    @xiaooloong
    @cwbsw

    好像还真有这个可能。我测试了一下如下三个记录,只有指向外网的 A 记录可以被解析。
    ```

    test3.mydomain.com 192.168.1.1 // Failed

    test4.mydomain.com 12.34.56.78 // Succeeded

    test.mydomain.com 10.0.0.1 // Failed
    ```

    接下来是研究如何在 Ad Guard Home 上关掉 rebind protection

    谢谢思路
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2741 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 12:47 · PVG 20:47 · LAX 04:47 · JFK 07:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.