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

2021-11-13 13:09:29 +08:00
 dangyuluo

我有一个域名,由 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 查询一个域名呢?

1656 次点击
所在节点    macOS
11 条回复
usufu
2021-11-13 13:13:38 +08:00
走 ipv6 的 dns 服务器了,前几天搞 ad home 也弄了半天。
ipv6 的 dns 走的默认的拨号 dns ,所以不经过 ad guard home 。
我的 asus 路由器要把拨号那里的 dns 也手动指定。然后 ipv6 的设置里面吧 dns 选为手动指定,并且留空。
Kobayashi
2021-11-13 13:15:16 +08:00
1. nslookup 时要带上 DNS 地址: nslookup test.lan.my_domain.com 10.0.0.230
2. 路由器下发自己的 DNS 时为什么还要下发 8.8.8.8 ?你既然选择使用自己的 DNS 就不要下发公共 DNS 。
dangyuluo
2021-11-13 13:26:24 +08:00
@Kobayashi 可是问题不出在 nslookup 上,`nslookup`自己知道向 DNS 查询。加上 8.8.8.8 是因为我本地的服务经常重启,不想耽误别的客户端。

@usufu 我也在想是不是这个原因,在想怎么办能够让 ddwrt 修改一下 DNS 下发的顺序
Remember
2021-11-13 13:28:06 +08:00
cloudflare 的 ns 很多年前就会被间歇性阻断了。
littlewing
2021-11-13 13:30:38 +08:00
RFC1918
dangyuluo
2021-11-13 13:37:50 +08:00
@Remember 可以排除不是墙的问题
dangyuluo
2021-11-13 13:38:20 +08:00
@dangyuluo 应该说是可以排除墙的问题😂说话都不利索了
usufu
2021-11-13 14:24:45 +08:00
@dangyuluo 把你拨号那个配置改一下,不要拿运营商给的 dns
cwbsw
2021-11-13 15:17:29 +08:00
没看懂楼主的描述。不过我自己踩过坑,内网地址的域名查询被 dns rebind protection 给过滤掉了。
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
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

谢谢思路

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/815119

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX