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.92k stars 1.05k forks source link

speed-check-mode使用问题 #1742

Open yangpin97 opened 1 month ago

yangpin97 commented 1 month ago

问题现象
解析海外域名(www.youtube.com) 第一次返回一个ip(最快的IP是吗),但是第二次解析没有返回最快IP(给了很多个IP)

运行环境

  1. 固件型号
    ubuntu
  2. 运营商
    本地电信
  3. smartdns来源以及版本 smartdns.1.2024.02.08-0828.x86_64-debian-all.deb
  4. 涉及的配置(注意去除个人相关信息)
开启全局-DNS服务(绑定tcp和udp)

bind :53 bind-tcp :53

设置海外-oversea组-DNS列表(1、从默认DNS组排除;2、拦截被污染的IP;3、解析海外域名测速,返回最快IP)

server 8.8.8.8 -group oversea -exclude-default-group -blacklist-ip speed-check-mode ping,tcp:80,tcp:443 server 8.8.4.4 -group oversea -exclude-default-group -blacklist-ip speed-check-mode ping,tcp:80,tcp:443 server 208.67.222.222 -group oversea -exclude-default-group -blacklist-ip speed-check-mode ping,tcp:80,tcp:443 server 208.67.220.220 -group oversea -exclude-default-group -blacklist-ip speed-check-mode ping,tcp:80,tcp:443 server 1.0.0.1 -group oversea -exclude-default-group -blacklist-ip speed-check-mode ping,tcp:80,tcp:443 server 9.9.9.9 -group oversea -exclude-default-group -blacklist-ip speed-check-mode ping,tcp:80,tcp:443

设置大陆-domestic组-DNS列表(1、从默认DNS组排除;2、拦截被污染的IP;3、解析大陆域名不测速)

server 202.96.209.133 -group domestic -exclude-default-group -blacklist-ip speed-check-mode none server 202.96.209.5 -group domestic -exclude-default-group -blacklist-ip speed-check-mode none server 180.168.255.118 -group domestic -exclude-default-group -blacklist-ip speed-check-mode none server 116.228.111.118 -group domestic -exclude-default-group -blacklist-ip speed-check-mode none server 223.5.5.5 -group domestic -exclude-default-group -blacklist-ip speed-check-mode none server 114.114.114.114 -group domestic -exclude-default-group -blacklist-ip speed-check-mode none

设置大陆域名集:domestic_domainlist,映射到:/etc/smartdns/domestic_domainlist.conf

domain-set -name domestic_domainlist -file /etc/smartdns/domestic_domainlist.conf

设置海外域名集:oversea_domainlist,映射到:/etc/smartdns/oversea_domainlist.conf

domain-set -name oversea_domainlist -file /etc/smartdns/oversea_domainlist.conf

指定大陆域名集用domestic组内DNS解析

nameserver /domain-set:domestic_domainlist/domestic

指定海外域名集用oversea组内DNS解析

nameserver /domain-set:oversea_domainlist/oversea

缓存配置

cache-size 32768 cache-persist yes prefetch-domain yes cache-file /etc/smartdns/dnscache

日志

log-level debug log-size 50m log-file /etc/smartdns/smartdns.log log-num 2 audit-enable yes audit-file /etc/smartdns/smartdns-audit.log audit-size 50m audit-num 2

开启过期缓存服务功能

serve-expired yes

设定过期缓存服务最长超时时间(秒)

serve-expired-ttl 3

设定回应的过期缓存TTL(秒)

serve-expired-reply-ttl 5

禁用IPV6

force-AAAA-SOA yes

其他

force-qtype-SOA 65 log-level info

重现步骤

  1. 上游DNS配置。
    如上:海外-oversea组-DNS列表
  2. 访问的域名。
    www.youtube.com

信息收集

  1. 将/var/log/smrtdns.log日志作为附件上传(注意去除个人相关信息)。
  2. 如进程异常,请将coredump功能开启,上传coredump信息文件,同时上传配套的smartdns进程文件。
    在自定义界面,开启设置->自定义设置->生成coredump配置,重现问题后提交coredump文件 coredump文件在/tmp目录下

root@test-server:/etc/smartdns# nslookup www.youtube.com 10.225.97.8 Server: 10.225.97.8 Address: 10.225.97.8#53

Non-authoritative answer: Name: www.youtube.com Address: 54.234.18.200

root@test-server:/etc/smartdns# nslookup www.youtube.com 10.225.97.8 Server: 10.225.97.8 Address: 10.225.97.8#53

Non-authoritative answer: Name: www.youtube.com Address: 103.97.3.19 Name: www.youtube.com Address: 54.234.18.200 Name: www.youtube.com Address: 128.242.240.117 Name: www.youtube.com Address: 31.13.75.12 Name: www.youtube.com Address: 31.13.67.19 Name: www.youtube.com Address: 74.86.228.110

root@test-server:/etc/smartdns# cat smartdns.log [2024-05-22 00:17:46,228][NOTICE][ smartdns.c:640 ] smartdns starting...(Copyright (C) Nick Peng pymumu@gmail.com, build: 1.2024.02.08-0828 (Release43-141-g9ee27e7)) [2024-05-22 00:17:46,230][ INFO][ dns_server.c:9267] IPV6 is not ready or speed check is disabled, disable IPV6 features [2024-05-22 00:17:46,230][ INFO][ dns_cache.c:739 ] load cache file /etc/smartdns/dnscache, total 2 records [2024-05-22 00:17:46,230][ INFO][ dns_client.c:1272] add server 8.8.8.8:53, type: udp [2024-05-22 00:17:46,230][ INFO][ dns_client.c:1272] add server 8.8.4.4:53, type: udp [2024-05-22 00:17:46,231][ INFO][ dns_client.c:1272] add server 208.67.222.222:53, type: udp [2024-05-22 00:17:46,231][ INFO][ dns_client.c:1272] add server 208.67.220.220:53, type: udp [2024-05-22 00:17:46,231][ INFO][ dns_client.c:1272] add server 1.0.0.1:53, type: udp [2024-05-22 00:17:46,231][ INFO][ dns_client.c:1272] add server 9.9.9.9:53, type: udp [2024-05-22 00:17:46,231][ INFO][ dns_client.c:1272] add server 202.96.209.133:53, type: udp [2024-05-22 00:17:46,231][ INFO][ dns_client.c:1272] add server 202.96.209.5:53, type: udp [2024-05-22 00:17:46,231][ INFO][ dns_client.c:1272] add server 180.168.255.118:53, type: udp [2024-05-22 00:17:46,231][ INFO][ dns_client.c:1272] add server 116.228.111.118:53, type: udp [2024-05-22 00:17:46,231][ INFO][ dns_client.c:1272] add server 223.5.5.5:53, type: udp [2024-05-22 00:17:46,231][ INFO][ dns_client.c:1272] add server 114.114.114.114:53, type: udp [2024-05-22 00:17:56,745][ INFO][ dns_client.c:4242] request: www.youtube.com, qtype: 1, id: 45291, group: oversea [2024-05-22 00:17:57,033][ INFO][ dns_server.c:2612] result: www.youtube.com, qtype: 1, rtt: 0.6 ms, 54.234.18.200 [2024-05-22 00:17:57,033][ INFO][ dns_server.c:2390] result: www.youtube.com, client: 10.225.97.8, qtype: 1, id: 39484, group: default, time: 288ms [2024-05-22 00:17:57,034][ INFO][ dns_server.c:2390] result: www.youtube.com, client: 10.225.97.8, qtype: 28, id: 32286, group: default, time: 0ms [2024-05-22 00:17:57,751][ INFO][ dns_server.c:963 ] result: www.youtube.com, id: 39484, index: 1, rtt: 0.5 ms, 103.97.3.19 [2024-05-22 00:17:57,751][ INFO][ dns_server.c:963 ] result: www.youtube.com, id: 39484, index: 2, rtt: 0.6 ms, 54.234.18.200 [2024-05-22 00:17:57,751][ INFO][ dns_server.c:963 ] result: www.youtube.com, id: 39484, index: 3, rtt: 0.9 ms, 128.242.240.117 [2024-05-22 00:17:57,751][ INFO][ dns_server.c:963 ] result: www.youtube.com, id: 39484, index: 4, rtt: 0.8 ms, 31.13.75.12 [2024-05-22 00:17:57,751][ INFO][ dns_server.c:963 ] result: www.youtube.com, id: 39484, index: 5, rtt: 0.8 ms, 31.13.67.19 [2024-05-22 00:17:57,751][ INFO][ dns_server.c:963 ] result: www.youtube.com, id: 39484, index: 6, rtt: 0.9 ms, 74.86.228.110 [2024-05-22 00:17:58,234][ INFO][ dns_server.c:4478] result: www.youtube.com, client: 10.225.97.8, qtype: 1, id: 2474, group: default, time: 0ms [2024-05-22 00:17:58,234][ INFO][ dns_server.c:2390] result: www.youtube.com, client: 10.225.97.8, qtype: 28, id: 32856, group: default, time: 0ms root@test-server:/etc/smartdns#

PikuZheng commented 1 month ago

预期行为,首次返回取决于response-mode设置。之后的返回取决于speedcheck-mode。 如果要限制返回数量,请使用max-ip-reply-num。参考 https://github.com/pymumu/smartdns/issues/1398#issuecomment-1658195338

PikuZheng commented 1 month ago

Non-authoritative answer: Name: www.youtube.com Address: 54.234.18.200

root@test-server:/etc/smartdns# nslookup www.youtube.com 10.225.97.8 Server: 10.225.97.8 Address: 10.225.97.8#53

Non-authoritative answer: Name: www.youtube.com Address: 103.97.3.19 Name: www.youtube.com Address: 54.234.18.200 Name: www.youtube.com Address: 128.242.240.117 Name: www.youtube.com Address: 31.13.75.12 Name: www.youtube.com Address: 31.13.67.19 Name: www.youtube.com Address: 74.86.228.110

这些都是虚假ip,你使用的的上游(oversea组)被污染了

yangpin97 commented 1 month ago

应该是的,因为我目前的上游还是没有走富强,所以被污染了

---Original--- From: @.> Sent at: 2024年5月22日(Wed) AM6:40 To: @.>; Cc: @.**@.>; Subject: Re: [pymumu/smartdns] speed-check-mode使用问题 (Issue #1742)

Non-authoritative answer: Name: www.youtube.com Address: 54.234.18.200

@.***:/etc/smartdns# nslookup www.youtube.com 10.225.97.8 Server: 10.225.97.8 Address: 10.225.97.8#53

Non-authoritative answer: Name: www.youtube.com Address: 103.97.3.19 Name: www.youtube.com Address: 54.234.18.200 Name: www.youtube.com Address: 128.242.240.117 Name: www.youtube.com Address: 31.13.75.12 Name: www.youtube.com Address: 31.13.67.19 Name: www.youtube.com Address: 74.86.228.110

这些都是虚假ip,你使用的的上游(oversea组)被污染了

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>

yangpin97 commented 1 month ago

好的,谢谢你,这俩个参数我还没看到怎么使用,我先研究一下。

---Original--- From: @.> Sent at: 2024年5月22日(Wed) AM6:38 To: @.>; Cc: @.**@.>; Subject: Re: [pymumu/smartdns] speed-check-mode使用问题 (Issue #1742)

预期行为,首次返回取决于response-mode设置。之后的返回取决于speedcheck-mode。 如果要限制返回数量,请使用max-ip-reply-num。

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>

yangpin97 commented 1 month ago

我的配置文件中是没有写  response-mode参数,只在海外dns组写了speedcheck,为什么smartdns还会使用response-mode去测试域名呢。

speed-check-mode测速模式选择ping,tcp:80,tcp:443[ping|tcp:[80]|none]speed-check-mode ping,tcp:80,tcp:443 response-mode首次查询响应模式first-ping

---Original--- From: @.> Sent at: 2024年5月22日(Wed) AM6:38 To: @.>; Cc: @.**@.>; Subject: Re: [pymumu/smartdns] speed-check-mode使用问题 (Issue #1742)

预期行为,首次返回取决于response-mode设置。之后的返回取决于speedcheck-mode。 如果要限制返回数量,请使用max-ip-reply-num。

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>

pymumu commented 1 month ago

server没有speed-check-mode选项

yangpin97 commented 1 month ago

server没有speed-check-mode选项

nameserver中配置是吧,类似这样,nameserver /domain-set:oversea_domainlist/oversea speed-check-mode ping,tcp:80,tcp:443

yangpin97 commented 1 month ago

server没有speed-check-mode选项

另外对于blacklist-ip配置我也有疑问,麻烦指导一下。

1、是需要单独配置比如下面这样才能生效吗?:

image

blacklist-ip 1.2.3.4/16

2、还是可以像我这样配置,也是可以的呢(如果这样配置是可以的,怎么理解呢):

image

server 8.8.8.8 -group oversea -exclude-default-group -blacklist-ip

yangpin97 commented 1 month ago

预期行为,首次返回取决于response-mode设置。之后的返回取决于speedcheck-mode。 如果要限制返回数量,请使用max-ip-reply-num。参考 #1398 (comment)

这个我明白了,谢谢

image

yangpin97 commented 1 month ago

server没有speed-check-mode选项

我看只有domain-rules支持后面加‘‘-speed-check-mode’’,如果我要指定我上面配置文件中的oversea_domainlist域名组,进行测速,我该怎么修改配置。

image

PikuZheng commented 1 month ago

server没有speed-check-mode选项

另外对于blacklist-ip配置我也有疑问,麻烦指导一下。

1、是需要单独配置比如下面这样才能生效吗?:

image

blacklist-ip 1.2.3.4/16

2、还是可以像我这样配置,也是可以的呢(如果这样配置是可以的,怎么理解呢):

image

server 8.8.8.8 -group oversea -exclude-default-group -blacklist-ip

都可以。实际运行时smartdns先把2处理成1

PikuZheng commented 1 month ago

server 8.8.8.8 -group oversea -exclude-default-group -blacklist-ip speed-check-mode ping,tcp:80,tcp:443

这个 speed-check-mode前面是不是少个减号

yangpin97 commented 1 month ago

server 8.8.8.8 -group oversea -exclude-default-group -blacklist-ip speed-check-mode ping,tcp:80,tcp:443

这个 speed-check-mode前面是不是少个减号

@pymumu 说server后面不支持speed-check-mode

image

PikuZheng commented 1 month ago

昂 上面我说得不对(上午在外面用手机 没仔细看)

  1. blacklist-ip 和 server 的 -blacklist-ip 要同时做。blacklist-ip 提供ip列表。server....-blacklist-ip 表示对这个上游应用这个黑名单。

  2. speed-check-mode 可以用配置分组做,也可以用domain-rules做。我建议是用domain-rules重写所有规则,这样可以把所有规则写在同一行,比较方便。重写后大概是这样

bind :53
bind-tcp :53
server 8.8.8.8 -group oversea -exclude-default-group -blacklist-ip
server.......

domain-set -name domestic_domainlist -file /etc/smartdns/domestic_domainlist.conf
domain-set -name oversea_domainlist -file /etc/smartdns/oversea_domainlist.conf

domain-rules /domain-set:domestic_domainlist/ -nameserver domestic -speed-check-mode ping,tcp:80,tcp:443
domain-rules /domain-set:oversea_domainlist/ -nameserver oversea -speed-check-mode none

blacklist-ip 4.36.66.178
blacklist-ip 8.7.198.45
blacklist-ip..............

cache-size..........
........
log-level debug
........
log-level info       <-----------这两个log-level请只保留一个
  1. 建议对国内域名测速,国外的不测速。
yangpin97 commented 1 month ago

昂 上面我说得不对(上午在外面用手机 没仔细看)

  1. blacklist-ip 和 server 的 -blacklist-ip 要同时做。blacklist-ip 提供ip列表。server....-blacklist-ip 表示对这个上游应用这个黑名单。
  2. speed-check-mode 可以用配置分组做,也可以用domain-rules做。我建议是用domain-rules重写所有规则,这样可以把所有规则写在同一行,比较方便。重写后大概是这样
bind :53
bind-tcp :53
server 8.8.8.8 -group oversea -exclude-default-group -blacklist-ip
server.......

domain-set -name domestic_domainlist -file /etc/smartdns/domestic_domainlist.conf
domain-set -name oversea_domainlist -file /etc/smartdns/oversea_domainlist.conf

domain-rules /domain-set:domestic_domainlist/ -nameserver domestic -speed-check-mode ping,tcp:80,tcp:443
domain-rules /domain-set:oversea_domainlist/ -nameserver oversea -speed-check-mode none

blacklist-ip 4.36.66.178
blacklist-ip 8.7.198.45
blacklist-ip..............

cache-size..........
........
log-level debug
........
log-level info       <-----------这两个log-level请只保留一个
  1. 建议对国内域名测速,国外的不测速。

好的,谢谢大佬指导,下班回去梭哈一边试试

yangpin97 commented 1 month ago

@pymumu @PikuZheng

俩位大佬,我重新整理了我的SmartDNS配置,说明我的网络架构,麻烦俩位前辈,给予指点,谢谢。

架构图

yydy_2024-05-22_22-42-03

SmartDNS配置

(# DNS服务器名称 server-name smartdns

(# 大陆DNS-服务端口 bind :8888 -force-aaaa-soa -group domestic bind-tcp :8888 -force-aaaa-soa -group domestic

(# 海外DNS-服务端口 bind :6666 -force-aaaa-soa -group oversea -no-speed-check bind-tcp :6666 -force-aaaa-soa -group oversea -no-speed-check

(# GPT-DNS-服务端口 bind :9999 -force-aaaa-soa -group chatgpt -no-speed-check bind-tcp :9999 -force-aaaa-soa -group chatgpt -no-speed-check

(# 设置海外-oversea组-DNS列表 server 8.8.8.8 -group oversea server 8.8.4.4 -group oversea server 1.0.0.1 -group oversea server 9.9.9.9 -group oversea

(# 设置大陆-domestic组-DNS列表 server 202.96.209.133 -group domestic server 180.168.255.118 -group domestic server 116.228.111.118 -group domestic server 202.96.209.5 -group domestic

(# 设置OpenAI-chatgpt组-DNS列表 server 208.67.222.222 -group chatgpt server 208.67.220.220 -group chatgpt server 209.244.0.4 -group chatgpt server 209.244.0.3 -group chatgpt

(# 设置大陆域名集:domestic_domainlist,映射到:/etc/smartdns/domestic_domainlist.conf domain-set -name domestic_domainlist -file /etc/smartdns/domestic_domainlist.conf

(# 设置海外域名集:oversea_domainlist,映射到:/etc/smartdns/oversea_domainlist.conf domain-set -name oversea_domainlist -file /etc/smartdns/oversea_domainlist.conf

(# 设置GPT域名集:chatgpt_domainlist,映射到:/etc/smartdns/chatgpt_domainlist.conf domain-set -name chatgpt_domainlist -file /etc/smartdns/chatgpt_domainlist.conf

(# 指定大陆域名集:使用domestic组-DNS解析(大陆测速) domain-rules /domain-set:domestic_domainlist/ -nameserver domestic -speed-check-mode ping,tcp:80,tcp:443

(# 指定GPT域名集:使用chatgpt组-DNS解析(海外不测速) domain-rules /domain-set:chatgpt_domainlist/ -nameserver chatgpt -speed-check-mode none

(# 指定海外域名集:使用oversea组-DNS解析(GPT不测速) domain-rules /domain-set:oversea_domainlist/ -nameserver oversea -speed-check-mode none

(# 日志(系统+审计) log-level debug log-size 50m log-file /tmp/smartdns.log log-num 8 audit-enable yes audit-file /tmp/smartdns-audit.log audit-size 50m audit-num 2

(# 缓存配置 cache-size 32768 cache-persist yes prefetch-domain yes cache-file /tmp/smartdns.cache

(# 开启过期缓存服务功能 serve-expired yes

(# 设定过期缓存服务最长超时时间(秒) serve-expired-ttl 3

(# 设定回应的过期缓存TTL(秒) serve-expired-reply-ttl 5

(# 禁用IPV6 force-AAAA-SOA yes

(# 强制指定 qtyp 返回 SOA force-qtype-SOA 65

存在疑问点

1、按照我的这个配置,如果不在域名集里面的域名怎么解析?

2、当前SmartDNS是我的AdGuard-Home的上游服务器,所以我写的DNS端口是,6666(海外DNS端口),8888(国内DNS端口),9999(GPT DNS端口),这种模式我当前使用没问题,但是是否存在BUG?或者说我的SmartDNS有逻辑配置问题,或者还有其他配置及缺陷问题?

3、安装我这个架构理解,只要我用SmartDNS解决解析问题就好了,因为我的分流是根据IP地址分流的,只要解析没问题,就可以正常访问。

pymumu commented 1 month ago

看你的需求,smartdns分流有好几种方式,选择适合你的。

第一种:基于域名 这种最简单,就是用domain-rules加-group或者-nameserver,配合server指定-group分流,域名集合用domain-set

server x.x.x.x -g oversea
domain-set -name domain -file xx
domain-rules /domain-set:domain/ -nameserver oversea -speed-check-mode none ....

第二种:基于监听端口。 这种就是来自这个端口的查询,全部使用指定的上游查询。

bind [::]:9999 -group oversea ...
server x.x.x. -g oversea

第三种:根据不同客户端。

group-begin oversea
client-rules 192.168.1.13
client-rules 01:02:03:04:05:06
server x.x.x.x -e
speed-check-mode none
group-end

当然,上述几种方案可以嵌套,但要明确你想实现什么功能。

日常使用一般都第一种,配合ipset/nftset即可达成你要的功能。

# 运营商DNS
server x.x.x.x
# 安全DNS
server-tls x.x.x.x -g oversea -e
# 分流的域名
domain-set -name domain -file xx
domain-rules /domain-set:domain/ -nameserver oversea -speed-check-mode none -ipset xxx -nftset xxx

这个也有另外group方式的写法

# 运营商DNS
server x.x.x.x

# 国外规则组oversea开始
group-begin oversea
# 安全DNS,排除默认
server-tls x.x.x.x  -e
# 分流的域名
domain-set -name domain -file xx
# 按域名分流
group-match -domain domain-set:domain 
# 设置IPSET
ipset xxx
# 设置NFTSET
nftset xxx
# 禁用测速
speed-check-mode none
# 规则组结束
group-end

反向集合,即国内域名走国内,其他都分流

# 安全DNS
server-tls x.x.x.x
ipset xxx
nftset xxx
speed-check-mode none

#运营商DNS,排除默认
server x.x.x.x -g domestic -e

# 国内域名
domain-set -name china-domain -file xx
domain-rules /domain-set:china-domain/ -nameserver domestic -speed-check-mode ping,tcp:80,tcp:443 -ipset - -nftset -
yangpin97 commented 1 month ago

看你的需求,smartdns分流有好几种方式,选择适合你的。

第一种:基于域名 这种最简单,就是用domain-rules加-group或者-nameserver,配合server指定-group分流,域名集合用domain-set

server x.x.x.x -g oversea
domain-set -name domain -file xx
domain-rules /domain-set:domain/ -speed-check-mode none ....

第二种:基于监听端口。 这种就是来自这个端口的查询,全部使用指定的上游查询。

bind [::]:9999 -group oversea ...
server x.x.x. -g oversea

第三种:根据不同客户端。

group-begin oversea
client-rules 192.168.1.13
client-rules 01:02:03:04:05:06
server x.x.x.x -e
speed-check-mode none
group-end

当然,上述几种方案可以嵌套,但要明确你想实现什么功能。

日常使用一般都第一种,配合ipset/nftset即可达成你要的功能。

# 运营商DNS
server x.x.x.x
# 安全DNS
server-tls x.x.x.x -g oversea -e
# 分流的域名
domain-set -name domain -file xx
domain-rules /domain-set:domain/ -speed-check-mode none -ipset xxx -nftset xxx

这个也有另外group方式的写法

# 运营商DNS
server x.x.x.x

# 国外规则组,按域名匹配
group-begin oversea
# 安全DNS,排除默认
server-tls x.x.x.x  -e
# 分流的域名
domain-set -name domain -file xx
# 按域名分流
group-match -domain domain-set:domain 
# 设置IPSET
ipset xxx
# 设置NFTSET
nftset xxx
# 禁用测速
speed-check-mode none
group-end

反向集合,即国内域名走国内,其他都分流

# 安全DNS
server-tls x.x.x.x
ipset xxx
nftset xxx
speed-check-mode none

#运营商DNS,排除默认
server x.x.x.x -g domestic -e

# 国内域名
domain-set -name china-domain -file xx
domain-rules /domain-set:china-domain/ -speed-check-mode ping,tcp:80,tcp:443 -ipset - -nftset -

好的好的,谢谢指导,按照你说这些方式,我的配置即使第一种:基于域名分流。其他的方式我也研究以下,这第一种方式是否存在我说的疑点1,不在域名列表里面的域名,默认用什么DNS解析。

pymumu commented 1 month ago

在我说的疑点1,不在域名列表里面的域名,默认用什么DNS解析

你的第一个配置:server全部都排除了默认组,没在列表里面的域名将无法查询。 第二个配置,将会使用所有server(未排除默认组)查询

好的好的,谢谢指导,按照你说这些方式,我的配置即使第一种:基于域名分流

你的配置,是第一种,第二种的结合。

pymumu commented 1 month ago

建议是不要搞太复杂,大部分场景选第一种即可。

yangpin97 commented 1 month ago

(# 设置海外-oversea组-DNS列表 server 8.8.8.8 -group oversea server 8.8.4.4 -group oversea server 1.0.0.1 -group oversea server 9.9.9.9 -group oversea

(# 设置大陆-domestic组-DNS列表 server 202.96.209.133 -group domestic server 180.168.255.118 -group domestic server 116.228.111.118 -group domestic server 202.96.209.5 -group domestic

(# 设置OpenAI-chatgpt组-DNS列表 server 208.67.222.222 -group chatgpt server 208.67.220.220 -group chatgpt server 209.244.0.4 -group chatgpt server 209.244.0.3 -group chatgpt

这是最新配置,我没写排除

(# 设置海外-oversea组-DNS列表 server 8.8.8.8 -group oversea server 8.8.4.4 -group oversea server 1.0.0.1 -group oversea server 9.9.9.9 -group oversea

(# 设置大陆-domestic组-DNS列表 server 202.96.209.133 -group domestic server 180.168.255.118 -group domestic server 116.228.111.118 -group domestic server 202.96.209.5 -group domestic

(# 设置OpenAI-chatgpt组-DNS列表 server 208.67.222.222 -group chatgpt server 208.67.220.220 -group chatgpt server 209.244.0.4 -group chatgpt server 209.244.0.3 -group chatgpt

pymumu commented 1 month ago

你的bind是带了-group的,这里就进行了一次分流操作。

yangpin97 commented 1 month ago

你的bind是带了-group的,这里就进行了一次分流操作。

我下面这个图中的流量路径理解对吗,【你的bind是带了-group的,这里就进行了一次分流操作。(我的bing的group和server的group是同一个,那其实就是分流了一次吧)】

image

PikuZheng commented 1 month ago

你的bind是带了-group的,这里就进行了一次分流操作。

我下面这个图中的流量路径理解对吗,【你的bind是带了-group的,这里就进行了一次分流操作。(我的bing的group和server的group是同一个,那其实就是分流了一次吧)】

image

我先问一下啊,配置中的 bind :9999 -group chatgpt 哪个程序负责根据不同域名将dns查询送到smartdns的9999端口?

yangpin97 commented 1 month ago

你的bind是带了-group的,这里就进行了一次分流操作。

我下面这个图中的流量路径理解对吗,【你的bind是带了-group的,这里就进行了一次分流操作。(我的bing的group和server的group是同一个,那其实就是分流了一次吧)】 image

我先问一下啊,配置中的 bind :9999 -group chatgpt 哪个程序负责根据不同域名将dns查询送到smartdns的9999端口?

AdGuard不能根据域名发送请求到9999,终端找AD解析,AD解析转发给6666,8888,9999

image

pymumu commented 1 month ago

你的图,分流的软件是adguard,smartdns只是按不同端口的请求查询了不同的上游

如果上游分流不正确,才会在smartdns分流

这里建议是保留一个分流设置即可,否则要维护两套分流列表

yangpin97 commented 1 month ago

你的图,分流的软件是adguard,smartdns只是按不同端口的请求查询了不同的上游

如果上游分流不正确,才会在smartdns分流

这里建议是保留一个分流设置即可,否则要维护两套分流列表

明白你的意思,我把AD拿掉吧,本来就没啥用处,只是因为他有图形化,可以方便web看日志。

容我想想我的smartdns配置该怎么修改,应该是把bind删掉,只保留一个53端口就好了。

pymumu commented 1 month ago

如果这样,建议配置方案如下

  1. adguard 配置一个上游,指向smartdns
  2. smartdns 仅开启一个服务端口,按域名分流,配置方法采用我上面写的方法一
yangpin97 commented 1 month ago

如果这样,建议配置方案如下

  1. adguard 配置一个上游,指向smartdns
  2. smartdns 仅开启一个服务端口,按域名分流,配置方法采用我上面写的方法一

明白你的意思了,我把配置发出来,便于后续的人能看到这个配置

SmartDNS配置

(# 全局DNS服务端口(禁用IPV6查询) bind :5053 -force-aaaa-soa bind-tcp :5053 -force-aaaa-soa

(# 设置海外-oversea组-DNS列表 server 8.8.8.8 -group oversea ..................

(# 设置大陆-domestic组-DNS列表 server 202.96.209.133 -group domestic ....................

(# 设置OpenAI-chatgpt组-DNS列表 server 208.67.222.222 -group chatgpt ...........................

(# 设置大陆域名集:domestic_domainlist,映射到:/etc/smartdns/domestic_domainlist.conf domain-set -name domestic_domainlist -file /etc/smartdns/domestic_domainlist.conf

(# 设置海外域名集:oversea_domainlist,映射到:/etc/smartdns/oversea_domainlist.conf domain-set -name oversea_domainlist -file /etc/smartdns/oversea_domainlist.conf

(# 设置GPT域名集:chatgpt_domainlist,映射到:/etc/smartdns/chatgpt_domainlist.conf domain-set -name chatgpt_domainlist -file /etc/smartdns/chatgpt_domainlist.conf

(# 指定大陆域名集:使用domestic组-DNS解析(大陆测速) domain-rules /domain-set:domestic_domainlist/ -nameserver domestic -speed-check-mode ping,tcp:80,tcp:443

(# 指定GPT域名集:使用chatgpt组-DNS解析(海外不测速) domain-rules /domain-set:chatgpt_domainlist/ -nameserver chatgpt -speed-check-mode none

(# 指定海外域名集:使用oversea组-DNS解析(GPT不测速) domain-rules /domain-set:oversea_domainlist/ -nameserver oversea -speed-check-mode none

AdGuard配置

image

yangpin97 commented 1 month ago

Ubuntu 安装 SmartDNS 配置域名分流SmartDNS 从入门到精通(二:DNS分流)

yangpin97 commented 1 month ago

@pymumu @PikuZheng 这里还有一个问题,关于域名列表格式的,我现在的配置如下:

设置大陆域名集:domestic_domainlist,映射到:/etc/smartdns/domestic_domainlist.conf

domain-set -name domestic_domainlist -file /etc/smartdns/domestic_domainlist.conf

指定大陆域名集:使用domestic组-DNS解析(大陆测速)

domain-rules /domain-set:domestic_domainlist/ -nameserver domestic -speed-check-mode ping,tcp:80,tcp:443

这个domestic_domainlist.conf是存放我国内域名的文件,是不是后缀得是list,比如:domestic_domainlist.list

image

我这个domestic_domainlist.conf里面的域名是这样,一行一个的,不知道生效了没有。

image

yangpin97 commented 1 month ago

@pymumu @PikuZheng 这个配置指导里面,是这样写的,那我的配置方式应该没问题是吧

image

PikuZheng commented 1 month ago

文件扩展名无所谓。一行一个域名,上面图中正确。

yangpin97 commented 1 month ago

文件扩展名无所谓。一行一个域名,上面图中正确。

好的,谢谢