Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

speed-check-mode使用问题 #1742

Open
yangpin97 opened this issue May 21, 2024 · 34 comments
Open

speed-check-mode使用问题 #1742

yangpin97 opened this issue May 21, 2024 · 34 comments

Comments

@yangpin97
Copy link

yangpin97 commented May 21, 2024

问题现象
解析海外域名(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 [email protected], 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#

@yangpin97 yangpin97 changed the title DNS分流问题 speed-check-mode使用问题 May 21, 2024
@PikuZheng
Copy link
Contributor

PikuZheng commented May 21, 2024

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

@PikuZheng
Copy link
Contributor

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
Copy link
Author

yangpin97 commented May 22, 2024 via email

@yangpin97
Copy link
Author

yangpin97 commented May 22, 2024 via email

@yangpin97
Copy link
Author

yangpin97 commented May 22, 2024 via email

@pymumu
Copy link
Owner

pymumu commented May 22, 2024

server没有speed-check-mode选项

@yangpin97
Copy link
Author

server没有speed-check-mode选项

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

@yangpin97
Copy link
Author

yangpin97 commented May 22, 2024

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
Copy link
Author

yangpin97 commented May 22, 2024

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

这个我明白了,谢谢

image

@yangpin97
Copy link
Author

server没有speed-check-mode选项

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

image

@PikuZheng
Copy link
Contributor

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
Copy link
Contributor

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

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

@yangpin97
Copy link
Author

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
Copy link
Contributor

PikuZheng commented May 22, 2024

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

  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
Copy link
Author

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

  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
Copy link
Author

yangpin97 commented May 22, 2024

@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
Copy link
Owner

pymumu commented May 22, 2024

看你的需求,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
Copy link
Author

看你的需求,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
Copy link
Owner

pymumu commented May 22, 2024

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

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

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

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

@pymumu
Copy link
Owner

pymumu commented May 22, 2024

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

@yangpin97
Copy link
Author

(# 设置海外-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
Copy link
Owner

pymumu commented May 22, 2024

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

@yangpin97
Copy link
Author

yangpin97 commented May 22, 2024

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

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

image

@PikuZheng
Copy link
Contributor

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

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

image

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

@yangpin97
Copy link
Author

yangpin97 commented May 22, 2024

你的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
Copy link
Owner

pymumu commented May 22, 2024

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

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

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

@yangpin97
Copy link
Author

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

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

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

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

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

@pymumu
Copy link
Owner

pymumu commented May 22, 2024

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

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

@yangpin97
Copy link
Author

yangpin97 commented May 22, 2024

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

  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
Copy link
Author

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

@yangpin97
Copy link
Author

@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
Copy link
Author

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

image

@PikuZheng
Copy link
Contributor

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

@yangpin97
Copy link
Author

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

好的,谢谢

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants