Code Monkey home page Code Monkey logo

Comments (34)

PikuZheng avatar PikuZheng commented on June 28, 2024

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

from smartdns.

PikuZheng avatar PikuZheng commented on June 28, 2024

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组)被污染了

from smartdns.

yangpin97 avatar yangpin97 commented on June 28, 2024

from smartdns.

yangpin97 avatar yangpin97 commented on June 28, 2024

from smartdns.

yangpin97 avatar yangpin97 commented on June 28, 2024

from smartdns.

pymumu avatar pymumu commented on June 28, 2024

server没有speed-check-mode选项

from smartdns.

yangpin97 avatar yangpin97 commented on June 28, 2024

server没有speed-check-mode选项

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

from smartdns.

yangpin97 avatar yangpin97 commented on June 28, 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

from smartdns.

yangpin97 avatar yangpin97 commented on June 28, 2024

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

这个我明白了,谢谢

image

from smartdns.

yangpin97 avatar yangpin97 commented on June 28, 2024

server没有speed-check-mode选项

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

image

from smartdns.

PikuZheng avatar PikuZheng commented on June 28, 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

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

from smartdns.

PikuZheng avatar PikuZheng commented on June 28, 2024

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

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

from smartdns.

yangpin97 avatar yangpin97 commented on June 28, 2024

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

from smartdns.

PikuZheng avatar PikuZheng commented on June 28, 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. 建议对国内域名测速,国外的不测速。

from smartdns.

yangpin97 avatar yangpin97 commented on June 28, 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. 建议对国内域名测速,国外的不测速。

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

from smartdns.

yangpin97 avatar yangpin97 commented on June 28, 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地址分流的,只要解析没问题,就可以正常访问。

from smartdns.

pymumu avatar pymumu commented on June 28, 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 -

from smartdns.

yangpin97 avatar yangpin97 commented on June 28, 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/ -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解析。

from smartdns.

pymumu avatar pymumu commented on June 28, 2024

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

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

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

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

from smartdns.

pymumu avatar pymumu commented on June 28, 2024

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

from smartdns.

yangpin97 avatar yangpin97 commented on June 28, 2024

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

from smartdns.

pymumu avatar pymumu commented on June 28, 2024

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

from smartdns.

yangpin97 avatar yangpin97 commented on June 28, 2024

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

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

image

from smartdns.

PikuZheng avatar PikuZheng commented on June 28, 2024

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

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

image

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

from smartdns.

yangpin97 avatar yangpin97 commented on June 28, 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

from smartdns.

pymumu avatar pymumu commented on June 28, 2024

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

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

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

from smartdns.

yangpin97 avatar yangpin97 commented on June 28, 2024

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

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

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

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

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

from smartdns.

pymumu avatar pymumu commented on June 28, 2024

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

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

from smartdns.

yangpin97 avatar yangpin97 commented on June 28, 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

from smartdns.

yangpin97 avatar yangpin97 commented on June 28, 2024

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

from smartdns.

yangpin97 avatar yangpin97 commented on June 28, 2024

@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

from smartdns.

yangpin97 avatar yangpin97 commented on June 28, 2024

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

image

from smartdns.

PikuZheng avatar PikuZheng commented on June 28, 2024

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

from smartdns.

yangpin97 avatar yangpin97 commented on June 28, 2024

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

好的,谢谢

from smartdns.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.