Closed kkkgo closed 5 years ago
smartdns只会返回一个CNAME,一个IP地址,代码上是这样。 也就是说,ubound请求返回的结果不是用的smartdns的结果。 检查一下ubound的配置吧。 可以看一下smartdns里面,有没有ubound请求smartdns的日志。
有的,而且这个国外ip也是出现在smartdns的日志里
IP在日志里面不代表返回了这个ip,要看日志里面最后解析后的IP地址是哪个。
dig结果: ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;www.baidu.com. IN A
;; ANSWER SECTION: www.baidu.com. 0 IN CNAME www.a.shifen.com. www.a.shifen.com. 0 IN CNAME www.wshifen.com. www.wshifen.com. 0 IN A 103.235.46.39
这个www.wshifen.com的IP地址就是103.235.46.39,查询114也是这个结果。
现在不知道ubound做了什么,baidu会去查询www.wshifen.com
是不是因为配置递归DNS的原因?
我用的就是默认unbound配置基本没有什么特殊的,我也很奇怪为啥会查到www.wshifen.com,但我把smartdns的DNS服务器去掉国外的组又不会查到这个结果
我觉得还是unbound查询了这个地址,然后本地CNAME合并了导致的。
但是smartdns的dns里面没有国外的服务器的时候,查询结果就是正常的,加了国外的服务器才有这个结果,是不是在有国外的服务器的情况下smartdns返回的结果有啥不一样的或者多余的信息让ubound去请求了wshifen? 或者你可以搭个ubnound测试下,我用的都是默认的简单的配置,然后国外的dns用的dnscrypt-proxy
到dnscrypt-proxy dig 看看www.baidu.com返回什么。
另外,其实你要防污染,smartdns本身完全可以做到。
;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24706 ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1220 ;; QUESTION SECTION: ;www.baidu.com. IN A
;; ANSWER SECTION: www.baidu.com. 35 IN CNAME www.a.shifen.com. www.a.shifen.com. 35 IN CNAME www.wshifen.com. www.wshifen.com. 35 IN A 103.235.46.39
是不是你unbound也配置了dnsproxy作为上游了?
没有的,unbound只指定了smartdns上游,然后dnsproxy作为一个本地dns开别的端口给smartdns
其实我加入国外dns主要是补充国内dns有时候更新不及时用国外dns的结果来补充下,但就碰到这个奇怪的情况
那就奇怪了,smartdns并没有返回www.wshifen.com啊,并且代码上,一定不会返回这个。 我这也配置了好几个国外DNS,没有遇到这种情况。
是否是unbound本地缓存导致?
我直接去请求smartdns的端口也不会有这个情况,但经过unbound请求就是这样的,我特意新开了一个debug的配置文件去前台运行unbound,应该不会是缓存问题,我一旦把smartdns的dns组去掉国外的dns,再运行unbonud和smartdns马上就能查到是国内的结果了。
应该是unbound解析别名导致的 国内dns服务器不会返回www.wshifen.com这个别名,所以没问题。
当有国外的时候,unbound通过两次查询,查询到了www.wshifen.com了这个域名。 下面这个解释了原因。 www.baidu.com. 605 IN CNAME www.a.shifen.com. www.a.shifen.com. 57 IN CNAME www.wshifen.com. www.wshifen.com. 120 IN A 103.235.46.39
要看一下unbound是否有什么配置,避免去多次查询CNAME
目前还没找到相关unbound配置解决这个问题,smartdns这个查询返回结果的机制,是会返回所有服务器的cname结果而不是返回优选服务器那组的的cname结果?百度可能是针对不通地区DNS发布了不同的cname结果
unbound上游DNS使用DOT或DOH,一直提示ssl错误。这个怎么解,哪位大佬有成功案例,可以参考下嘛
unbound上游DNS使用DOT或DOH,一直提示ssl错误。这个怎么解,哪位大佬有成功案例,可以参考下嘛
我的一直正常。建议去unbound项目问 https://github.com/NLnetLabs/unbound 。另外你的unbound编译时添加ssl支持了吗?
问题现象
我的53端口运行的是unbound,smartdns作为他的上游,然后查询www.baidu.com的时候,使用smartdns的端口查出来的结果是正常的,是本省的ip,然后使用53端口,也就是unbound去查的时候,结果就是美国或者香港的ip,可以确定的是ubound的上游的确是smartdns,我把smartdns里面的一组服务器去掉国外的服务器(本地的dnscrypt)就能正常查到省内的ip,或者直接用smartdns的端口查也没问题,我观察日志之后发现直接请求smartdns的端口和请求unboud的端口有区别: 请求unbound的dig表现是这样的:
; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18430 ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;www.baidu.com. IN A
;; ANSWER SECTION: www.baidu.com. 605 IN CNAME www.a.shifen.com. www.a.shifen.com. 57 IN CNAME www.wshifen.com. www.wshifen.com. 120 IN A 103.235.46.39
而直接请求smartdns的表现是这样的: ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59344 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;www.baidu.com. IN A
;; ANSWER SECTION: www.baidu.com. 1077 IN CNAME www.a.shifen.com. www.a.shifen.com. 82 IN A 14.215.177.39
看到多了一个www.wshifen.com.,这很奇怪 运行环境 x86
运营商
电信 重现步骤
上游DNS配置。
server 119.29.29.29 server 202.96.134.133 server 202.96.128.166 server 127.0.0.1:553 (本地dnscrypt-proxy)
访问的域名。
www.baidu.com