pymumu / smartdns

A local DNS server to obtain the fastest website IP for the best Internet experience, support DoT, DoH. 一个本地DNS服务器,获取最快的网站IP,获得最佳上网体验,支持DoH,DoT。
https://pymumu.github.io/smartdns/
GNU General Public License v3.0
7.93k stars 1.05k forks source link

监听的端口指定服务器组之后,只能返回一个IP地址 #1685

Closed InspoOnU closed 4 months ago

InspoOnU commented 4 months ago

问题现象
OpenWRT中分别设置SmartDNS的第一/第二服务器的监听端口为52853/52653,其中第二服务器指定服务器组,设置max-reply-ip-num 64 分别使用nslookup查询结果如下:

nslookup www.youtube.com 127.0.0.1:52853
Server:         127.0.0.1:52853
Address:        127.0.0.1:52853

Non-authoritative answer:
www.youtube.com canonical name = youtube-ui.l.google.com
Name:   youtube-ui.l.google.com
Address: 142.250.188.238
Name:   youtube-ui.l.google.com
Address: 142.250.72.142
Name:   youtube-ui.l.google.com
Address: 142.250.72.174
Name:   youtube-ui.l.google.com
Address: 142.250.176.14
Name:   youtube-ui.l.google.com
Address: 142.250.189.14
Name:   youtube-ui.l.google.com
Address: 142.250.217.142
Name:   youtube-ui.l.google.com
Address: 142.251.40.46
Name:   youtube-ui.l.google.com
Address: 142.250.68.14
Name:   youtube-ui.l.google.com
Address: 172.217.12.142

Non-authoritative answer:
www.youtube.com canonical name = youtube-ui.l.google.com
Name:   youtube-ui.l.google.com
Address: 2607:f8b0:4007:80a::200e
Name:   youtube-ui.l.google.com
Address: 2607:f8b0:4007:814::200e
Name:   youtube-ui.l.google.com
Address: 2607:f8b0:4007:815::200e
Name:   youtube-ui.l.google.com
Address: 2607:f8b0:4007:809::200e
nslookup www.youtube.com 127.0.0.1:52653
Server:         127.0.0.1:52653
Address:        127.0.0.1:52653

Non-authoritative answer:
www.youtube.com canonical name = youtube-ui.l.google.com
Name:   youtube-ui.l.google.com
Address: 2607:f8b0:4007:801::200e

Non-authoritative answer:
www.youtube.com canonical name = youtube-ui.l.google.com
Name:   youtube-ui.l.google.com
Address: 172.217.12.142

日志里显示上游返回了多IP,但是nslookup里只有一个: smartdns.log

去掉bind里的group参数就能正常返回多IP

smartdns来源以及版本: 1.2024.v45.0.5-1

配置文件: speed-check-mode none dualstack-ip-selection no prefetch-domain yes serve-expired yes cache-size 131072 rr-ttl-min 0 log-size 2048K log-num 1 log-level error log-file /var/log/smartdns.log audit-size 64K audit-num 1 response-mode fastest-response cache-persist yes cache-file /etc/smartdns/smartdns.cache resolv-file /tmp/resolv.conf.d/resolv.conf.auto bind [::]:52553 bind-tcp [::]:52553 domain-set -name domain-block-list -file /etc/smartdns/domain-block.list domain-rules /domain-set:domain-block-list/ -address # conf-file /etc/smartdns/address.conf conf-file /etc/smartdns/blacklist-ip.conf conf-file /etc/smartdns/custom.conf

以下是/etc/smartdns/custom.conf

bind [::]:52653 -group secure -no-speed-check bind-tcp [::]:52653 -group secure -no-speed-check

bind [::]:51553 -group sing-box -no-cache -no-speed-check bind-tcp [::]:51553 -group sing-box -no-cache -no-speed-check

cache-file /etc/smartdns/smartdns.cache tcp-idle-time 300 prefetch-domain yes

serve-expired-ttl 172800 serve-expired-prefetch-time 28800 serve-expired-reply-ttl 1 local-ttl 60 max-reply-ip-num 64

server 211.138.180.2 server 2402:4e00:: server 127.0.0.1:52853 -e -g secure server-tcp 127.0.0.1:52253 -e -g sing-box

domain-set -name AD -type list -file /etc/adblock/adb_list.overall address /domain-set:AD/198.18.0.1,198:18::

PikuZheng commented 4 months ago

第二服务器的 cache-size, speed-test 和 response-mode 分别是怎么设置的? 用第二服务器连续查询一个域名两次,都是只有一条结果吗?

InspoOnU commented 4 months ago

第二服务器的 cache-size, speed-test 和 response-mode 分别是怎么设置的? 用第二服务器连续查询一个域名两次,都是只有一条结果吗?

cache-size 131072 speed-test none response-mode fastest-response 没有看到单独设置第二服务器的cache-size, speed-test 和 response-mode。连续查询结果依旧。目前发现去掉bind里的group参数才能返回多个IP

PikuZheng commented 4 months ago

那很有可能是最快应答的上游只给出了一个结果

InspoOnU commented 4 months ago

那很有可能是最快应答的上游只给出了一个结果

应该不是,我先用上游查询,返回的是多IP。再用SmartDNS查询,还是只返回一个

nslookup www.youtube.com 127.0.0.1:52853
Server:         127.0.0.1:52853
Address:        127.0.0.1:52853

Non-authoritative answer:
www.youtube.com canonical name = youtube-ui.l.google.com
Name:   youtube-ui.l.google.com
Address: 142.250.68.14
Name:   youtube-ui.l.google.com
Address: 172.217.12.142
Name:   youtube-ui.l.google.com
Address: 172.217.14.110
Name:   youtube-ui.l.google.com
Address: 172.217.14.78
Name:   youtube-ui.l.google.com
Address: 142.250.68.110
Name:   youtube-ui.l.google.com
Address: 142.250.68.46
Name:   youtube-ui.l.google.com
Address: 142.250.188.238
Name:   youtube-ui.l.google.com
Address: 142.250.72.142
Name:   youtube-ui.l.google.com
Address: 142.250.72.174
Name:   youtube-ui.l.google.com
Address: 142.250.176.14
Name:   youtube-ui.l.google.com
Address: 142.250.189.14
Name:   youtube-ui.l.google.com
Address: 142.250.217.142

Non-authoritative answer:
www.youtube.com canonical name = youtube-ui.l.google.com
Name:   youtube-ui.l.google.com
Address: 2607:f8b0:4007:80f::200e
Name:   youtube-ui.l.google.com
Address: 2607:f8b0:4007:801::200e
Name:   youtube-ui.l.google.com
Address: 2607:f8b0:4007:80e::200e
Name:   youtube-ui.l.google.com
Address: 2607:f8b0:4007:803::200e
nslookup www.youtube.com 127.0.0.1:52653
Server:         127.0.0.1:52653
Address:        127.0.0.1:52653

Non-authoritative answer:
www.youtube.com canonical name = youtube-ui.l.google.com
Name:   youtube-ui.l.google.com
Address: 142.250.68.14

Non-authoritative answer:
www.youtube.com canonical name = youtube-ui.l.google.com
Name:   youtube-ui.l.google.com
Address: 2607:f8b0:4007:80f::200e
InspoOnU commented 4 months ago

那很有可能是最快应答的上游只给出了一个结果

奇怪的是日志里显示上游返回了多个IP,但是nslookup里只有一个 smartdns.log

PikuZheng commented 4 months ago

我想了想,关了缓存且关了测速的确是只返回一个ip。可以考虑修改response-mode fastest-response或去掉 -no-cache(二选一,不能同时

InspoOnU commented 4 months ago

我想了想,关了缓存且关了测速的确是只返回一个ip。可以考虑修改response-mode fastest-response或去掉 -no-cache(二选一,不能同时

查询的服务器(52653)没有开启-no-cache,修改response-mode问题依旧。我测试了只能去掉-group才能解决

PikuZheng commented 4 months ago

查询的服务器(52653)没有开启-no-cache,修改response-mode问题依旧。我测试了只能去掉-group才能解决

我的错。。。。 有没有可能是测速失败,可以试试改成不测速

InspoOnU commented 4 months ago

查询的服务器(52653)没有开启-no-cache,修改response-mode问题依旧。我测试了只能去掉-group才能解决

我的错。。。。 有没有可能是测速失败,可以试试改成不测速

配置文件里就是speed-check-mode none,而且还用了-no-speed-check

PikuZheng commented 4 months ago

大致试了一下,bind 指定group时,好像无论如何都会跳过测速,应该是跳了某些全局规则(openwrt的“第二服务器”遗留问题?)@pymumu

pymumu commented 4 months ago

你所有bind的端口,都关闭了测速,第二服务器还关闭了缓存。 这种情况下,smartdns会将返回上游最快的响应,指定了不缓存的查询,将不会对结果进行缓存。

也就是你上游服务器可能就返回了一个IP地址给你,所以smartdns也只会返回一个地址

你可以打开log看具体上游返回了多少地址。

@PikuZheng 另外bind 指定-group查询,没有问题,不会跳过测速,除非显式指定跳过测速,例如楼主的配置。

PikuZheng commented 4 months ago

也就是你上游服务器可能就返回了一个IP地址给你,所以smartdns也只会返回一个地址

你可以打开log看具体上游返回了多少地址。

试过了。用这个配置

speed-check-mode ping
dualstack-ip-selection no
response-mode fastest-response
cache-persist no
bind [::]:52653  -group secure
max-reply-ip-num 64
server 上游:53 -group secure

理论上单一上游且fastest-response,应该是将上游结果原样返回的。但上游给出多个结果,smartdns只选用了第一个,和楼主的日志一致。

InspoOnU commented 4 months ago

你所有bind的端口,都关闭了测速,第二服务器还关闭了缓存。 这种情况下,smartdns会将返回上游最快的响应,指定了不缓存的查询,将不会对结果进行缓存。

也就是你上游服务器可能就返回了一个IP地址给你,所以smartdns也只会返回一个地址

你可以打开log看具体上游返回了多少地址。

@PikuZheng 另外bind 指定-group查询,没有问题,不会跳过测速,除非显式指定跳过测速,例如楼主的配置。

log里看到了多个地址,但是nslookup里只显示一个

[2024-02-29 18:38:54,833][DEBUG][ dns_server.c:7155] query www.youtube.com from 127.0.0.1, qtype: 1, id: 52725, query-num: 1 [2024-02-29 18:38:54,833][DEBUG][ dns_client.c:3845] send query to server 127.0.0.1:52853 [2024-02-29 18:38:54,833][ INFO][ dns_client.c:4242] request: www.youtube.com, qtype: 1, id: 12525, group: secure [2024-02-29 18:38:54,833][DEBUG][ dns_server.c:7114] recv query packet from 127.0.0.1, len = 33, type = 0 [2024-02-29 18:38:54,833][DEBUG][ dns_server.c:7130] request qdcount = 1, ancount = 0, nscount = 0, nrcount = 0, len = 33, id = 53494, tc = 0, rd = 1, ra = 0, rcode = 0 [2024-02-29 18:38:54,833][DEBUG][ dns_server.c:7155] query www.youtube.com from 127.0.0.1, qtype: 28, id: 53494, query-num: 2 [2024-02-29 18:38:54,833][DEBUG][ dns_client.c:3845] send query to server 127.0.0.1:52853 [2024-02-29 18:38:54,833][ INFO][ dns_client.c:4242] request: www.youtube.com, qtype: 28, id: 22681, group: secure

[2024-02-29 18:38:54,992][DEBUG][ dns_client.c:1848] domain: www.youtube.com qtype: 28 qclass: 1 [2024-02-29 18:38:54,992][DEBUG][ dns_server.c:4622] query result from server 127.0.0.1:52853, type: 0, domain: www.youtube.com qtype: 28 rcode: 0, id: 53494 [2024-02-29 18:38:54,992][DEBUG][ dns_server.c:4118] name: www.youtube.com ttl: 298 cname: youtube-ui.l.google.com [2024-02-29 18:38:54,992][DEBUG][ dns_server.c:3888] domain: youtube-ui.l.google.com TTL: 298 IP: 2607:f8b0:4007:080f:0000:0000:0000:200e [2024-02-29 18:38:54,992][DEBUG][ dns_server.c:3888] domain: youtube-ui.l.google.com TTL: 298 IP: 2607:f8b0:4007:0801:0000:0000:0000:200e [2024-02-29 18:38:54,992][DEBUG][ dns_server.c:3888] domain: youtube-ui.l.google.com TTL: 298 IP: 2607:f8b0:4007:080e:0000:0000:0000:200e [2024-02-29 18:38:54,992][DEBUG][ dns_server.c:3888] domain: youtube-ui.l.google.com TTL: 298 IP: 2607:f8b0:4007:0803:0000:0000:0000:200e [2024-02-29 18:38:54,992][ INFO][ dns_server.c:2616] result: www.youtube.com, qtype: 28, rtt: -0.1 ms, 2607:f8b0:4007:080f:0000:0000:0000:200e [2024-02-29 18:38:54,992][DEBUG][ dns_server.c:2335] reply www.youtube.com qtype: 28, rcode: 0, reply: 1 [2024-02-29 18:38:54,992][DEBUG][ dns_server.c:1195] result: www.youtube.com, rtt: -0.1 ms, 2607:f8b0:4007:080f:0000:0000:0000:200e [2024-02-29 18:38:54,992][DEBUG][ dns_server.c:1665] cache www.youtube.com qtype: 28 ttl: 298 [2024-02-29 18:38:54,992][DEBUG][ dns_server.c:1818] Cache CNAME: youtube-ui.l.google.com, qtype: 28, speed: -1 [2024-02-29 18:38:54,992][ INFO][ dns_server.c:2390] result: www.youtube.com, client: 127.0.0.1, qtype: 28, id: 53494, group: secure, time: 160ms [2024-02-29 18:38:54,992][DEBUG][ dns_client.c:1600] result: www.youtube.com, qtype: 28, has-result: 1, id 22681 [2024-02-29 18:38:55,000][DEBUG][ dns_client.c:2599] recv udp packet from 127.0.0.1, len: 270, ttl: 64, latency: 167 [2024-02-29 18:38:55,000][DEBUG][ dns_client.c:1836] qdcount = 1, ancount = 13, nscount = 0, nrcount = 0, len = 270, id = 12525, tc = 0, rd = 1, ra = 1, rcode = 0, payloadsize = 512 [2024-02-29 18:38:55,000][DEBUG][ dns_client.c:1848] domain: www.youtube.com qtype: 1 qclass: 1 [2024-02-29 18:38:55,000][DEBUG][ dns_server.c:4622] query result from server 127.0.0.1:52853, type: 0, domain: www.youtube.com qtype: 1 rcode: 0, id: 52725 [2024-02-29 18:38:55,000][DEBUG][ dns_server.c:4118] name: www.youtube.com ttl: 298 cname: youtube-ui.l.google.com [2024-02-29 18:38:55,000][DEBUG][ dns_server.c:3858] domain: youtube-ui.l.google.com TTL: 300 IP: 142.250.68.14 [2024-02-29 18:38:55,000][DEBUG][ dns_server.c:3858] domain: youtube-ui.l.google.com TTL: 300 IP: 172.217.12.142 [2024-02-29 18:38:55,000][DEBUG][ dns_server.c:3858] domain: youtube-ui.l.google.com TTL: 300 IP: 172.217.14.110 [2024-02-29 18:38:55,000][DEBUG][ dns_server.c:3858] domain: youtube-ui.l.google.com TTL: 300 IP: 172.217.14.78 [2024-02-29 18:38:55,000][DEBUG][ dns_server.c:3858] domain: youtube-ui.l.google.com TTL: 300 IP: 142.250.68.110 [2024-02-29 18:38:55,000][DEBUG][ dns_server.c:3858] domain: youtube-ui.l.google.com TTL: 300 IP: 142.250.68.46 [2024-02-29 18:38:55,000][DEBUG][ dns_server.c:3858] domain: youtube-ui.l.google.com TTL: 300 IP: 142.250.188.238 [2024-02-29 18:38:55,000][DEBUG][ dns_server.c:3858] domain: youtube-ui.l.google.com TTL: 300 IP: 142.250.72.142 [2024-02-29 18:38:55,000][DEBUG][ dns_server.c:3858] domain: youtube-ui.l.google.com TTL: 300 IP: 142.250.72.174 [2024-02-29 18:38:55,000][DEBUG][ dns_server.c:3858] domain: youtube-ui.l.google.com TTL: 300 IP: 142.250.176.14 [2024-02-29 18:38:55,000][DEBUG][ dns_server.c:3858] domain: youtube-ui.l.google.com TTL: 300 IP: 142.250.189.14 [2024-02-29 18:38:55,000][DEBUG][ dns_server.c:3858] domain: youtube-ui.l.google.com TTL: 300 IP: 142.250.217.142 [2024-02-29 18:38:55,000][ INFO][ dns_server.c:2612] result: www.youtube.com, qtype: 1, rtt: -0.1 ms, 142.250.68.14 [2024-02-29 18:38:55,000][DEBUG][ dns_server.c:2335] reply www.youtube.com qtype: 1, rcode: 0, reply: 1 [2024-02-29 18:38:55,000][DEBUG][ dns_server.c:1188] result: www.youtube.com, rtt: -0.1 ms, 142.250.68.14 [2024-02-29 18:38:55,000][DEBUG][ dns_server.c:1665] cache www.youtube.com qtype: 1 ttl: 300 [2024-02-29 18:38:55,000][DEBUG][ dns_server.c:1818] Cache CNAME: youtube-ui.l.google.com, qtype: 1, speed: -1 [2024-02-29 18:38:55,000][ INFO][ dns_server.c:2390] result: www.youtube.com, client: 127.0.0.1, qtype: 1, id: 52725, group: secure, time: 168ms [2024-02-29 18:38:55,000][DEBUG][ dns_client.c:1600] result: www.youtube.com, qtype: 1, has-result: 1, id 12525

pymumu commented 4 months ago

没有问题

[2024-03-01 22:38:20,550][NOTICE][       smartdns.c:640 ] smartdns starting...(Copyright (C) Nick Peng <pymumu@gmail.com>, build: 1.20240301-2204 (Release43-140-g2ee1528))
[2024-03-01 22:38:20,554][ INFO][     dns_server.c:9272] IPV6 is ready, enable IPV6 features
[2024-03-01 22:38:20,556][ INFO][     dns_client.c:1272] add server 223.6.6.6:53, type: udp
[2024-03-01 22:38:20,557][ INFO][     dns_client.c:1272] add server 223.5.5.5:53, type: udp
[2024-03-01 22:38:20,557][ INFO][     dns_client.c:1272] add server 114.114.114.114:53, type: udp

[2024-03-01 22:38:22,666][ INFO][     dns_client.c:4242] request: www.baidu.com, qtype: 1, id: 52224, group: secure
[2024-03-01 22:38:22,677][ INFO][     dns_server.c:4483] result: www.baidu.com, client: 127.0.0.1, qtype: 1, id: 52999, group: secure, time: 16ms
[2024-03-01 22:38:22,686][ INFO][     dns_server.c:964 ] result: www.baidu.com, id: 52999, index: 1, rtt: 7.7 ms, 157.148.69.80
[2024-03-01 22:38:22,686][ INFO][     dns_server.c:964 ] result: www.baidu.com, id: 52999, index: 2, rtt: 8.3 ms, 157.148.69.74
rock@rock-5b:~/code/smartdns$ dig www.baidu.com  @127.0.0.1 -p 9053

; <<>> DiG 9.18.18-0ubuntu0.22.04.2-Ubuntu <<>> www.baidu.com @127.0.0.1 -p 9053
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52999
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1408
;; QUESTION SECTION:
;www.baidu.com.                 IN      A

;; ANSWER SECTION:
www.baidu.com.          3       IN      CNAME   www.a.shifen.com.
www.a.shifen.com.       3       IN      A       157.148.69.80
www.a.shifen.com.       3       IN      A       157.148.69.74

;; Query time: 16 msec
;; SERVER: 127.0.0.1#9053(127.0.0.1) (UDP)
;; WHEN: Fri Mar 01 22:38:22 CST 2024
;; MSG SIZE  rcvd: 101
pymumu commented 4 months ago

@InspoOnU 你用dig命令看看。

InspoOnU commented 4 months ago

@InspoOnU 你用dig命令看看。

问题依旧

dig @127.0.0.1 -p 52853 www.youtube.com

; <<>> DiG 9.18.24 <<>> @127.0.0.1 -p 52853 www.youtube.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30698
;; flags: qr rd ra; QUERY: 1, ANSWER: 12, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;www.youtube.com.               IN      A

;; ANSWER SECTION:
www.youtube.com.        138     IN      CNAME   youtube-ui.l.google.com.
youtube-ui.l.google.com. 300    IN      A       142.250.189.14
youtube-ui.l.google.com. 300    IN      A       142.250.217.142
youtube-ui.l.google.com. 300    IN      A       142.251.40.46
youtube-ui.l.google.com. 300    IN      A       172.217.12.142
youtube-ui.l.google.com. 300    IN      A       172.217.14.110
youtube-ui.l.google.com. 300    IN      A       172.217.14.78
youtube-ui.l.google.com. 300    IN      A       142.250.72.238
youtube-ui.l.google.com. 300    IN      A       142.250.188.238
youtube-ui.l.google.com. 300    IN      A       142.250.72.142
youtube-ui.l.google.com. 300    IN      A       142.250.72.174
youtube-ui.l.google.com. 300    IN      A       142.250.176.14

;; Query time: 160 msec
;; SERVER: 127.0.0.1#52853(127.0.0.1) (UDP)
;; WHEN: Fri Mar 01 22:45:23 CST 2024
;; MSG SIZE  rcvd: 254
dig @127.0.0.1 -p 52653 www.youtube.com

; <<>> DiG 9.18.24 <<>> @127.0.0.1 -p 52653 www.youtube.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14631
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.youtube.com.               IN      A

;; ANSWER SECTION:
www.youtube.com.        124     IN      CNAME   youtube-ui.l.google.com.
youtube-ui.l.google.com. 124    IN      A       142.250.189.14

;; Query time: 0 msec
;; SERVER: 127.0.0.1#52653(127.0.0.1) (UDP)
;; WHEN: Fri Mar 01 22:45:37 CST 2024
;; MSG SIZE  rcvd: 83
pymumu commented 4 months ago

你换其他域名查询下看看吧,比如baidu

InspoOnU commented 4 months ago

你换其他域名查询下看看吧,比如baidu

还是返回一个

dig @127.0.0.1 -p 52853 www.baidu.com

; <<>> DiG 9.18.24 <<>> @127.0.0.1 -p 52853 www.baidu.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32227 ;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;www.baidu.com. IN A

;; ANSWER SECTION: www.baidu.com. 123 IN CNAME www.a.shifen.com. www.a.shifen.com. 30 IN CNAME www.wshifen.com. www.wshifen.com. 300 IN A 103.235.46.40 www.wshifen.com. 300 IN A 103.235.47.103

;; Query time: 460 msec ;; SERVER: 127.0.0.1#52853(127.0.0.1) (UDP) ;; WHEN: Fri Mar 01 22:48:42 CST 2024 ;; MSG SIZE rcvd: 127

dig @127.0.0.1 -p 52653 www.baidu.com

; <<>> DiG 9.18.24 <<>> @127.0.0.1 -p 52653 www.baidu.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21833 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION: ;www.baidu.com. IN A

;; ANSWER SECTION: www.baidu.com. 300 IN CNAME www.wshifen.com. www.wshifen.com. 300 IN A 103.235.46.40

;; Query time: 470 msec ;; SERVER: 127.0.0.1#52653(127.0.0.1) (UDP) ;; WHEN: Fri Mar 01 22:48:57 CST 2024 ;; MSG SIZE rcvd: 73

pymumu commented 4 months ago

我这不复现,你发一下查询baidu的时候的log。

pymumu commented 4 months ago

另外,你更换下上游为国内的看看,查询baidu的时候。

InspoOnU commented 4 months ago

另外,你更换下上游为国内的看看,查询baidu的时候。

我发现正式版2024.02.08确实没有这个问题,测试版45.0.6.1/45.0.5.1就会出现 测试版是这个:https://github.com/PikuZheng/smartdns/releases/download/1.2024.v45.0.6-OpenWrt-openssl3/smartdns_1.2024.v45.0.6-1_aarch64_cortex-a53.ipk 可能是最新的bug或者编译的问题吗?

pymumu commented 4 months ago

我测试的是最新代码。

InspoOnU commented 4 months ago

刚确认了一下,https://github.com/PikuZheng/smartdns/releases/tag/1.2024.v45.0.6-OpenWrt-openssl3会出现问题,https://github.com/pymumu/smartdns/releases/tag/Release45则不会

2024.v45.0.6版查询www.baidu.com的log如下,用的是国内上游 [2024-03-01 23:22:47,986][DEBUG][ dns_server.c:7155] query www.baidu.com from fc66::5cc7:c8b0:94c4:c4b3, qtype: 1, id: 2, query-num: 1 [2024-03-01 23:22:47,986][DEBUG][ dns_client.c:3845] send query to server 127.0.0.1:50053 [2024-03-01 23:22:47,986][ INFO][ dns_client.c:4242] request: www.baidu.com, qtype: 1, id: 29679, group: box [2024-03-01 23:22:47,987][DEBUG][ dns_server.c:7114] recv query packet from 127.0.0.1, len = 42, type = 0 [2024-03-01 23:22:47,987][DEBUG][ dns_server.c:7130] request qdcount = 1, ancount = 0, nscount = 0, nrcount = 0, len = 42, id = 53256, tc = 0, rd = 1, ra = 0, rcode = 0 [2024-03-01 23:22:47,987][DEBUG][ dns_server.c:7155] query www.baidu.com from 127.0.0.1, qtype: 1, id: 53256, query-num: 2 [2024-03-01 23:22:47,987][DEBUG][ dns_server.c:4410] name: www.baidu.com, ttl: 259, cname: www.a.shifen.com [2024-03-01 23:22:47,987][ INFO][ dns_server.c:4478] result: www.baidu.com, client: 127.0.0.1, qtype: 1, id: 53256, group: default, time: 0ms [2024-03-01 23:22:47,987][DEBUG][ dns_client.c:2897] recv tcp packet from 127.0.0.1, len = 140 [2024-03-01 23:22:47,988][DEBUG][ dns_client.c:1836] qdcount = 1, ancount = 3, nscount = 0, nrcount = 0, len = 138, id = 29679, tc = 0, rd = 1, ra = 1, rcode = 0, payloadsize = 0 [2024-03-01 23:22:47,988][DEBUG][ dns_client.c:1848] domain: www.baidu.com qtype: 1 qclass: 1 [2024-03-01 23:22:47,988][DEBUG][ dns_server.c:4622] query result from server 127.0.0.1:50053, type: 1, domain: www.baidu.com qtype: 1 rcode: 0, id: 2 [2024-03-01 23:22:47,988][DEBUG][ dns_server.c:4118] name: www.baidu.com ttl: 153 cname: www.a.shifen.com [2024-03-01 23:22:47,988][DEBUG][ dns_server.c:3858] domain: www.a.shifen.com TTL: 153 IP: 36.155.132.76 [2024-03-01 23:22:47,988][DEBUG][ dns_server.c:3858] domain: www.a.shifen.com TTL: 153 IP: 36.155.132.3 [2024-03-01 23:22:47,988][ INFO][ dns_server.c:2612] result: www.baidu.com, qtype: 1, rtt: -0.1 ms, 36.155.132.76 [2024-03-01 23:22:47,988][DEBUG][ dns_server.c:2335] reply www.baidu.com qtype: 1, rcode: 0, reply: 1 [2024-03-01 23:22:47,988][DEBUG][ dns_server.c:1188] result: www.baidu.com, rtt: -0.1 ms, 36.155.132.76 [2024-03-01 23:22:47,988][ INFO][ dns_server.c:2390] result: www.baidu.com, client: fc66::5cc7:c8b0:94c4:c4b3, qtype: 1, id: 2, group: box, time: 1ms [2024-03-01 23:22:47,988][DEBUG][ dns_client.c:1600] result: www.baidu.com, qtype: 1, has-result: 1, id 29679 [2024-03-01 23:22:47,992][DEBUG][ dns_server.c:7114] recv query packet from fc66::5cc7:c8b0:94c4:c4b3, len = 31, type = 0 [2024-03-01 23:22:47,992][DEBUG][ dns_server.c:7130] request qdcount = 1, ancount = 0, nscount = 0, nrcount = 0, len = 31, id = 3, tc = 0, rd = 1, ra = 0, rcode = 0 [2024-03-01 23:22:47,992][DEBUG][ dns_server.c:7155] query www.baidu.com from fc66::5cc7:c8b0:94c4:c4b3, qtype: 28, id: 3, query-num: 1 [2024-03-01 23:22:47,992][DEBUG][ dns_client.c:3845] send query to server 127.0.0.1:50053 [2024-03-01 23:22:47,992][ INFO][ dns_client.c:4242] request: www.baidu.com, qtype: 28, id: 29320, group: box [2024-03-01 23:22:47,993][DEBUG][ dns_server.c:7114] recv query packet from 127.0.0.1, len = 42, type = 0 [2024-03-01 23:22:47,993][DEBUG][ dns_server.c:7130] request qdcount = 1, ancount = 0, nscount = 0, nrcount = 0, len = 42, id = 22420, tc = 0, rd = 1, ra = 0, rcode = 0 [2024-03-01 23:22:47,993][DEBUG][ dns_server.c:7155] query www.baidu.com from 127.0.0.1, qtype: 28, id: 22420, query-num: 2 [2024-03-01 23:22:47,993][DEBUG][ dns_server.c:4410] name: www.baidu.com, ttl: 259, cname: www.a.shifen.com [2024-03-01 23:22:47,993][ INFO][ dns_server.c:4478] result: www.baidu.com, client: 127.0.0.1, qtype: 28, id: 22420, group: default, time: 0ms [2024-03-01 23:22:47,993][DEBUG][ dns_client.c:2897] recv tcp packet from 127.0.0.1, len = 164 [2024-03-01 23:22:47,993][DEBUG][ dns_client.c:1836] qdcount = 1, ancount = 3, nscount = 0, nrcount = 0, len = 162, id = 29320, tc = 0, rd = 1, ra = 1, rcode = 0, payloadsize = 0 [2024-03-01 23:22:47,993][DEBUG][ dns_client.c:1848] domain: www.baidu.com qtype: 28 qclass: 1 [2024-03-01 23:22:47,993][DEBUG][ dns_server.c:4622] query result from server 127.0.0.1:50053, type: 1, domain: www.baidu.com qtype: 28 rcode: 0, id: 3 [2024-03-01 23:22:47,993][DEBUG][ dns_server.c:4118] name: www.baidu.com ttl: 153 cname: www.a.shifen.com [2024-03-01 23:22:47,993][DEBUG][ dns_server.c:3888] domain: www.a.shifen.com TTL: 153 IP: 2409:8c20:0006:1d55:0000:00ff:b09c:7d77 [2024-03-01 23:22:47,993][DEBUG][ dns_server.c:3888] domain: www.a.shifen.com TTL: 153 IP: 2409:8c20:0006:1135:0000:00ff:b027:210c [2024-03-01 23:22:47,993][ INFO][ dns_server.c:2616] result: www.baidu.com, qtype: 28, rtt: -0.1 ms, 2409:8c20:0006:1d55:0000:00ff:b09c:7d77 [2024-03-01 23:22:47,994][DEBUG][ dns_server.c:2335] reply www.baidu.com qtype: 28, rcode: 0, reply: 1 [2024-03-01 23:22:47,994][DEBUG][ dns_server.c:1195] result: www.baidu.com, rtt: -0.1 ms, 2409:8c20:0006:1d55:0000:00ff:b09c:7d77 [2024-03-01 23:22:47,994][ INFO][ dns_server.c:2390] result: www.baidu.com, client: fc66::5cc7:c8b0:94c4:c4b3, qtype: 28, id: 3, group: box, time: 2ms [2024-03-01 23:22:47,994][DEBUG][ dns_client.c:1600] result: www.baidu.com, qtype: 28, has-result: 1, id 29320

dig结果还是只有一个 dig @127.0.0.1 -p 51553 www.baidu.com

; <<>> DiG 9.18.24 <<>> @127.0.0.1 -p 51553 www.baidu.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60685 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION: ;www.baidu.com. IN A

;; ANSWER SECTION: www.baidu.com. 1 IN CNAME www.a.shifen.com. www.a.shifen.com. 1 IN A 36.155.132.76

;; Query time: 0 msec ;; SERVER: 127.0.0.1#51553(127.0.0.1) (UDP) ;; WHEN: Fri Mar 01 23:27:59 CST 2024 ;; MSG SIZE rcvd: 74

InspoOnU commented 4 months ago

切换到正式版就返回多个IP了

dig @127.0.0.1 -p 51553 www.baidu.com

; <<>> DiG 9.18.24 <<>> @127.0.0.1 -p 51553 www.baidu.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62890 ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION: ;www.baidu.com. IN A

;; ANSWER SECTION: www.baidu.com. 204 IN CNAME www.a.shifen.com. www.a.shifen.com. 204 IN A 36.155.132.76 www.a.shifen.com. 204 IN A 36.155.132.3

;; Query time: 10 msec ;; SERVER: 127.0.0.1#51553(127.0.0.1) (UDP) ;; WHEN: Fri Mar 01 23:29:35 CST 2024 ;; MSG SIZE rcvd: 138

[2024-03-01 23:27:59,086][DEBUG][ dns_server.c:7155] query www.baidu.com from 127.0.0.1, qtype: 1, id: 60685, query-num: 1 [2024-03-01 23:27:59,086][DEBUG][ dns_client.c:3845] send query to server 127.0.0.1:50053 [2024-03-01 23:27:59,086][ INFO][ dns_client.c:4242] request: www.baidu.com, qtype: 1, id: 30225, group: box [2024-03-01 23:27:59,087][DEBUG][ dns_server.c:7114] recv query packet from 127.0.0.1, len = 42, type = 0 [2024-03-01 23:27:59,087][DEBUG][ dns_server.c:7130] request qdcount = 1, ancount = 0, nscount = 0, nrcount = 0, len = 42, id = 13187, tc = 0, rd = 1, ra = 0, rcode = 0 [2024-03-01 23:27:59,087][DEBUG][ dns_server.c:7155] query www.baidu.com from 127.0.0.1, qtype: 1, id: 13187, query-num: 2 [2024-03-01 23:27:59,087][DEBUG][ dns_server.c:4410] name: www.baidu.com, ttl: 153, cname: www.a.shifen.com [2024-03-01 23:27:59,087][ INFO][ dns_server.c:4478] result: www.baidu.com, client: 127.0.0.1, qtype: 1, id: 13187, group: default, time: 0ms [2024-03-01 23:27:59,087][DEBUG][ dns_client.c:3845] send query to server 2402:4e00:::53 [2024-03-01 23:27:59,087][DEBUG][ dns_client.c:3845] send query to server 211.138.180.2:53 [2024-03-01 23:27:59,087][ INFO][ dns_client.c:4242] request: www.baidu.com, qtype: 1, id: 23453, group: [2024-03-01 23:27:59,087][DEBUG][ dns_client.c:2897] recv tcp packet from 127.0.0.1, len = 140 [2024-03-01 23:27:59,087][DEBUG][ dns_client.c:1836] qdcount = 1, ancount = 3, nscount = 0, nrcount = 0, len = 138, id = 30225, tc = 0, rd = 1, ra = 1, rcode = 0, payloadsize = 0 [2024-03-01 23:27:59,087][DEBUG][ dns_client.c:1848] domain: www.baidu.com qtype: 1 qclass: 1 [2024-03-01 23:27:59,087][DEBUG][ dns_server.c:4622] query result from server 127.0.0.1:50053, type: 1, domain: www.baidu.com qtype: 1 rcode: 0, id: 60685 [2024-03-01 23:27:59,087][DEBUG][ dns_server.c:4118] name: www.baidu.com ttl: 1 cname: www.a.shifen.com [2024-03-01 23:27:59,087][DEBUG][ dns_server.c:3858] domain: www.a.shifen.com TTL: 1 IP: 36.155.132.76 [2024-03-01 23:27:59,087][DEBUG][ dns_server.c:3858] domain: www.a.shifen.com TTL: 1 IP: 36.155.132.3 [2024-03-01 23:27:59,087][ INFO][ dns_server.c:2612] result: www.baidu.com, qtype: 1, rtt: -0.1 ms, 36.155.132.76 [2024-03-01 23:27:59,087][DEBUG][ dns_server.c:2335] reply www.baidu.com qtype: 1, rcode: 0, reply: 1 [2024-03-01 23:27:59,087][DEBUG][ dns_server.c:1188] result: www.baidu.com, rtt: -0.1 ms, 36.155.132.76 [2024-03-01 23:27:59,088][ INFO][ dns_server.c:2390] result: www.baidu.com, client: 127.0.0.1, qtype: 1, id: 60685, group: box, time: 2ms [2024-03-01 23:27:59,088][DEBUG][ dns_client.c:1600] result: www.baidu.com, qtype: 1, has-result: 1, id 30225 [2024-03-01 23:27:59,098][DEBUG][ dns_client.c:2599] recv udp packet from 211.138.180.2, len: 90, ttl: 247, latency: 12 [2024-03-01 23:27:59,098][DEBUG][ dns_client.c:1836] qdcount = 1, ancount = 3, nscount = 0, nrcount = 0, len = 90, id = 23453, tc = 0, rd = 1, ra = 1, rcode = 0, payloadsize = 0 [2024-03-01 23:27:59,099][DEBUG][ dns_client.c:1848] domain: www.baidu.com qtype: 1 qclass: 1 [2024-03-01 23:27:59,099][DEBUG][ dns_server.c:4622] query result from server 211.138.180.2:53, type: 0, domain: www.baidu.com qtype: 1 rcode: 0, id: 0 [2024-03-01 23:27:59,099][DEBUG][ dns_server.c:4118] name: www.baidu.com ttl: 961 cname: www.a.shifen.com [2024-03-01 23:27:59,099][DEBUG][ dns_server.c:3858] domain: www.a.shifen.com TTL: 91 IP: 36.155.132.3 [2024-03-01 23:27:59,099][DEBUG][ dns_server.c:3858] domain: www.a.shifen.com TTL: 91 IP: 36.155.132.76 [2024-03-01 23:27:59,122][DEBUG][ dns_client.c:2599] recv udp packet from 2402:4e00::, len: 101, ttl: 243, latency: 35 [2024-03-01 23:27:59,122][DEBUG][ dns_client.c:1836] qdcount = 1, ancount = 3, nscount = 0, nrcount = 0, len = 101, id = 23453, tc = 0, rd = 1, ra = 1, rcode = 0, payloadsize = 4096 [2024-03-01 23:27:59,122][DEBUG][ dns_client.c:1848] domain: www.baidu.com qtype: 1 qclass: 1 [2024-03-01 23:27:59,122][DEBUG][ dns_server.c:4622] query result from server 2402:4e00:::53, type: 0, domain: www.baidu.com qtype: 1 rcode: 0, id: 0 [2024-03-01 23:27:59,122][DEBUG][ dns_server.c:4118] name: www.baidu.com ttl: 1114 cname: www.a.shifen.com [2024-03-01 23:27:59,122][DEBUG][ dns_server.c:3858] domain: www.a.shifen.com TTL: 34 IP: 36.155.132.3 [2024-03-01 23:27:59,122][DEBUG][ dns_server.c:3858] domain: www.a.shifen.com TTL: 34 IP: 36.155.132.76 [2024-03-01 23:27:59,122][DEBUG][ dns_client.c:1600] result: www.baidu.com, qtype: 1, has-result: 1, id 23453 [2024-03-01 23:27:59,122][DEBUG][ dns_server.c:2791] select best ip address, www.baidu.com [2024-03-01 23:27:59,122][DEBUG][ dns_server.c:2796] possible result: www.baidu.com, rcode: 0, hitnum: 2, 36.155.132.76 [2024-03-01 23:27:59,122][DEBUG][ dns_server.c:2335] reply www.baidu.com qtype: 1, rcode: 0, reply: 1 [2024-03-01 23:27:59,122][DEBUG][ dns_server.c:1188] result: www.baidu.com, rtt: -0.1 ms, 36.155.132.76 [2024-03-01 23:27:59,122][ INFO][ dns_server.c:963 ] result: www.baidu.com, id: 0, index: 1, rtt: -0.1 ms, 36.155.132.76 [2024-03-01 23:27:59,122][ INFO][ dns_server.c:963 ] result: www.baidu.com, id: 0, index: 2, rtt: -0.1 ms, 36.155.132.3 [2024-03-01 23:27:59,122][DEBUG][ dns_server.c:1665] cache www.baidu.com qtype: 1 ttl: 300

PikuZheng commented 4 months ago

那是我自动编译出问题了?

PikuZheng commented 4 months ago

发现dns_conf.c文件不一致,刚修正了 :sweat: 不知道从什么时候出现分歧的