smartdns icon indicating copy to clipboard operation
smartdns copied to clipboard

请求让同一个DNS Server 可以填写多个subnet

Open Canda15 opened this issue 3 months ago • 20 comments

希望能让同一个DNS服务器可以填写多个subnet。用于国外服务器,访问国内CDN网站时,自动匹配到延迟最低的线路。

server 8.8.8.8 -subnet 111.30.96.0/24 #联通 server 8.8.8.8 -subnet 101.127.0.0/24 #电信

当前版本下,同一个8.8.8.8,只生效一个

Canda15 avatar Nov 21 '25 14:11 Canda15

RFC7871要求每次查询只能附加一个ip段作为client subnet。多个ip或ip段是不可行的。

PikuZheng avatar Nov 22 '25 00:11 PikuZheng

server 8.8.8.8 -group domestic -exclude-default-group -subnet 111.30.96.0/24 server 8.8.8.8 -group cdn -exclude-default-group -subnet 101.127.0.0/24

可以搞两个组,间接实现一部分,但是没理解你的自动匹配需求

xianren78 avatar Nov 22 '25 08:11 xianren78

不理解,为啥要匹配多个ECS?

cresky-github avatar Nov 23 '25 06:11 cresky-github

RFC7871要求每次查询只能附加一个ip段作为client subnet。多个ip或ip段是不可行的。

像这样,填写两行,不能请求两次吗?目前情况下相同的server 8.8.8.8,如果像这样填写,第二次的值会覆盖第一次的。而不会请求两次

server 8.8.8.8 -subnet 111.30.96.0/24 #联通
server 8.8.8.8 -subnet 101.127.0.0/24 #电信

Canda15 avatar Nov 23 '25 17:11 Canda15

不理解,为啥要匹配多个ECS?

@xianren78 主楼里说了,国内有些网站是没有国外CDN的,有些网站他的电信CDN跟国外延迟很低,有些网站移动的更低。所以要填写两个,让smartdns自动测。如果给每个域名分组,那太繁琐了,下载直播的时候,给的CDN域名是网站随机分配的。有时候不同直播间的线路都不一样。

希望能让同一个DNS服务器可以填写多个subnet。用于国外服务器,访问国内CDN网站时,自动匹配到延迟最低的线路。

Canda15 avatar Nov 23 '25 17:11 Canda15

1, 延迟低,又不代表带宽一定高 2, 这种特殊需求建议套娃,上游再套两个 smartdns 即可

xianren78 avatar Nov 23 '25 22:11 xianren78

不理解,为啥要匹配多个ECS?

@xianren78 主楼里说了,国内有些网站是没有国外CDN的,有些网站他的电信CDN跟国外延迟很低,有些网站移动的更低。所以要填写两个,让smartdns自动测。如果给每个域名分组,那太繁琐了,下载直播的时候,给的CDN域名是网站随机分配的。有时候不同直播间的线路都不一样。

希望能让同一个DNS服务器可以填写多个subnet。用于国外服务器,访问国内CDN网站时,自动匹配到延迟最低的线路。

你想让 smartdns 怎么知道用哪个 ECS? 也就是使用依据是什么?

cresky-github avatar Nov 24 '25 01:11 cresky-github

server 8.8.8.8 -group domestic -exclude-default-group -subnet 111.30.96.0/24 server 8.8.8.8 -group cdn -exclude-default-group -subnet 101.127.0.0/24

可以搞两个组,间接实现一部分,但是没理解你的自动匹配需求

我试过这种写法,但是目前从 smartdns-ui 中可以看到,当 8888 在 domestic 分组时,下一个同为 udp 的 8888 服务器无法再次添加到 cdn 这个组。

server 8.8.8.8 -bootstrap-dns
server 8.8.8.8 -exclude-default-group -group globalDNS # 这个配置会被吞
server 8.8.8.8 # 这个配置也会被吞

CallMeR avatar Nov 24 '25 03:11 CallMeR

server 8.8.8.8 -group domestic -exclude-default-group -subnet 111.30.96.0/24 server 8.8.8.8 -group cdn -exclude-default-group -subnet 101.127.0.0/24 可以搞两个组,间接实现一部分,但是没理解你的自动匹配需求

我试过这种写法,但是目前从 smartdns-ui 中可以看到,当 8888 在 domestic 分组时,下一个同为 udp 的 8888 服务器无法再次添加到 cdn 这个组。

server 8.8.8.8 -bootstrap-dns
server 8.8.8.8 -exclude-default-group -group globalDNS # 这个配置会被吞
server 8.8.8.8 # 这个配置也会被吞

Image

没问题,可以的,你试试严格按我的写法

xianren78 avatar Nov 24 '25 03:11 xianren78

你的两个 alidns quic 是在不同组么,具体配置是怎么写的。 我可能明白了,可能是 -bootstrap-dns 这个参数导致的

我可能需要再测一下 -bootstrap-dns 或者 -fallback 参数带来的影响

CallMeR avatar Nov 24 '25 03:11 CallMeR

你的两个 alidns quic 是在不同组么,具体配置是怎么写的。 我可能明白了,可能是 -bootstrap-dns 这个参数导致的

我可能需要再测一下 -bootstrap-dns 或者 -fallback 参数带来的影响

分组,最好是用 group_begin/group_end

cresky-github avatar Nov 24 '25 03:11 cresky-github

不理解,为啥要匹配多个ECS?

@xianren78 主楼里说了,国内有些网站是没有国外CDN的,有些网站他的电信CDN跟国外延迟很低,有些网站移动的更低。所以要填写两个,让smartdns自动测。如果给每个域名分组,那太繁琐了,下载直播的时候,给的CDN域名是网站随机分配的。有时候不同直播间的线路都不一样。

希望能让同一个DNS服务器可以填写多个subnet。用于国外服务器,访问国内CDN网站时,自动匹配到延迟最低的线路。

你想让 smartdns 怎么知道用哪个 ECS? 也就是使用依据是什么?

不能让smartdns把同一DNS的不同的subnet,分别认为是两个不同的Server吗?这种比较难实现吗? server 8.8.8.8 -subnet 111.30.96.0/24 #联通 server 8.8.8.8 -subnet 101.127.0.0/24 #电信

ddd-zero avatar Nov 24 '25 14:11 ddd-zero

不理解,为啥要匹配多个ECS?

@xianren78 主楼里说了,国内有些网站是没有国外CDN的,有些网站他的电信CDN跟国外延迟很低,有些网站移动的更低。所以要填写两个,让smartdns自动测。如果给每个域名分组,那太繁琐了,下载直播的时候,给的CDN域名是网站随机分配的。有时候不同直播间的线路都不一样。

希望能让同一个DNS服务器可以填写多个subnet。用于国外服务器,访问国内CDN网站时,自动匹配到延迟最低的线路。

你想让 smartdns 怎么知道用哪个 ECS? 也就是使用依据是什么?

不能让smartdns把同一DNS的不同的subnet,分别认为是两个不同的Server吗?这种比较难实现吗? server 8.8.8.8 -subnet 111.30.96.0/24 #联通 server 8.8.8.8 -subnet 101.127.0.0/24 #电信

最后的规则会覆盖前面的。 不一样的才有效。

cresky-github avatar Nov 25 '25 11:11 cresky-github

不理解,为啥要匹配多个ECS?

@xianren78 主楼里说了,国内有些网站是没有国外CDN的,有些网站他的电信CDN跟国外延迟很低,有些网站移动的更低。所以要填写两个,让smartdns自动测。如果给每个域名分组,那太繁琐了,下载直播的时候,给的CDN域名是网站随机分配的。有时候不同直播间的线路都不一样。

希望能让同一个DNS服务器可以填写多个subnet。用于国外服务器,访问国内CDN网站时,自动匹配到延迟最低的线路。

你想让 smartdns 怎么知道用哪个 ECS? 也就是使用依据是什么?

不能让smartdns把同一DNS的不同的subnet,分别认为是两个不同的Server吗?这种比较难实现吗? server 8.8.8.8 -subnet 111.30.96.0/24 #联通 server 8.8.8.8 -subnet 101.127.0.0/24 #电信

最后的规则会覆盖前面的。 不一样的才有效。

我知道会覆盖。发这个issues的目的不就在说让作者分开吗?不让他自动覆盖掉。 后面的回复都是比较负面的,所以我就问了一下,把不同的subnet当成两个上游,是这个功能很难实现吗?

ddd-zero avatar Nov 25 '25 11:11 ddd-zero

不理解,为啥要匹配多个ECS?

@xianren78 主楼里说了,国内有些网站是没有国外CDN的,有些网站他的电信CDN跟国外延迟很低,有些网站移动的更低。所以要填写两个,让smartdns自动测。如果给每个域名分组,那太繁琐了,下载直播的时候,给的CDN域名是网站随机分配的。有时候不同直播间的线路都不一样。

希望能让同一个DNS服务器可以填写多个subnet。用于国外服务器,访问国内CDN网站时,自动匹配到延迟最低的线路。

你想让 smartdns 怎么知道用哪个 ECS? 也就是使用依据是什么?

不能让smartdns把同一DNS的不同的subnet,分别认为是两个不同的Server吗?这种比较难实现吗? server 8.8.8.8 -subnet 111.30.96.0/24 #联通 server 8.8.8.8 -subnet 101.127.0.0/24 #电信

最后的规则会覆盖前面的。 不一样的才有效。

我知道会覆盖。发这个issues的目的不就在说让作者分开吗?不让他自动覆盖掉。 后面的回复都是比较负面的,所以我就问了一下,把不同的subnet当成两个上游,是这个功能很难实现吗?

可以用 group_begin/group_end 为不同组指定不同 ECS。

cresky-github avatar Nov 25 '25 11:11 cresky-github

这个不是支持的吗,找到什么BUG了?

pymumu avatar Nov 25 '25 13:11 pymumu

这个不是支持的吗,找到什么BUG了?

能否让,这两行,当成两个不同的上游,而不是第二个覆盖掉第一个?

server 8.8.8.8 -subnet 123.126.74.0/24    #联通
server 8.8.8.8  -subnet 220.181.141.0/24 #电信

现在的版本下,下面这条会把上面这条覆盖掉,只查询一次。我想把这两行当做两个不同的上游查询两次。 场景是国外访问国内网站时,返回不同国内线路的CDN。自动测速选择延迟最低的ip。

Canda15 avatar Nov 25 '25 16:11 Canda15

在海外vps上想要获取国内cdn的最低延迟ip解析,故使用了三个不同地区的subnet获取三个不同地区的cdn解析

server 180.184.1.1 -subnet 111.30.96.0/23 -group mainland -exclude-default-group
server 180.184.1.1 -subnet 223.71.97.0/23 -group mainland -exclude-default-group
server 180.184.1.1 -subnet 36.129.4.0/23 -group mainland -exclude-default-group

nameserver /pull-hls-l26.douyincdn.com/mainland
......

期望是查询三次然后使用最低延迟的ip,目前如上设置实现情况是只会有第三条生效(覆盖前两条)。

这是正常的吗?还是说应该填写不一样的dns,例如: (虽然这样写还是只会被第三条覆盖)

server 180.184.1.1 -subnet 111.30.96.0/23 -group douyinlive -exclude-default-group
server 223.5.5.5 -subnet 223.71.97.0/23 -group douyinlive -exclude-default-group
server 119.29.29.29 -subnet 36.129.4.0/23 -group douyinlive -exclude-default-group

Sora3QwQ avatar Nov 25 '25 18:11 Sora3QwQ

要不你用最新版本试试?

pymumu avatar Nov 25 '25 22:11 pymumu

最新代码修改了一个问题,用最新代码。

pymumu avatar Nov 27 '25 13:11 pymumu