smartdns icon indicating copy to clipboard operation
smartdns copied to clipboard

昨天的fix有bug

Open galaxyskyknight opened this issue 2 years ago • 25 comments

debug log里一直在狂ping 一些内网地址都fail,也不知道干啥,没用任何查询记录显示,dns查询全挂了。 image

galaxyskyknight avatar Jun 01 '22 00:06 galaxyskyknight

看了下我的没有这样的情况 看看你的配置文件什么样的

PikuZheng avatar Jun 01 '22 12:06 PikuZheng

openwrt的配置文件

config smartdns
        option enabled '1'
        option server_name 'smartdns'
        option port '6053'
        option tcp_server '1'
        option ipv6_server '1'
        option dualstack_ip_selection '0'
        option prefetch_domain '1'
        option serve_expired '0'
        option redirect 'dnsmasq-upstream'
        option cache_size '100000'
        option rr_ttl_min '300'
        option rr_ttl_max '3600'
        option seconddns_tcp_server '1'
        option seconddns_no_speed_check '0'
        option seconddns_no_rule_ipset '0'
        option seconddns_no_rule_soa '0'
        option seconddns_no_dualstack_selection '0'
        option seconddns_no_cache '0'
        option force_aaaa_soa '0'
        option coredump '0'
        option seconddns_enabled '1'
        option seconddns_port '5335'
        option seconddns_server_group 'gfwlist'
        option seconddns_no_rule_addr '1'
        option seconddns_no_rule_nameserver '1'
        list old_redirect 'dnsmasq-upstream'
        list old_port '6053'
        list old_enabled '1'

custom.conf

force-AAAA-SOA no
# 国内域名, 生成脚本 https://github.com/huifukejian/test/blob/master/update-china-list.sh
conf-file /etc/smartdns/smartdns-domains.china.conf
speed-check-mode tcp:443,tcp:80,ping
bind: 6053 -group china
bind: 5335 -group gfwlist

#################           国内DNS解析组           #################
#腾讯dnspod DoH
server-https  https://1.12.12.12/dns-query -hostname 'doh.pub' -group china -exclude-default-group
server-https  https://120.53.53.53/dns-query -group china -exclude-default-group
server-https  https://106.55.91.174/dns-query -hostname 'sm2.doh.pub' -group china -exclude-default-group

#阿里 DoH
server-https https://223.5.5.5/dns-query -hostname 'dns.alidns.com' -group china -exclude-default-group
server-https https://223.6.6.6/dns-query -hostname 'dns.alidns.com' -group china -exclude-default-group


#################           国外DNS解析组           #################
server-https https://1.1.1.1/dns-query  -group gfwlist
server-https https://1.0.0.1/dns-query  -group gfwlist
#server-https https://8.8.8.8/dns-query -group gfwlist
#server-https https://8.8.4.4/dns-query -group gfwlist
#server-https https://9.9.9.9/dns-query -group gfwlist
#server-https https://94.140.14.14/dns-query -group gfwlist
server-tls 1.1.1.1:853  -group gfwlist

#smartdns日志设置
log-level debug
log-file /mnt/sda3/smartdns_log/smartdns.log
log-size 100m
log-num 10

#查询审计日志
audit-enable yes
audit-file /mnt/sda3/smartdns_log/audit.log
audit-size 10m
audit-num 10

galaxyskyknight avatar Jun 01 '22 16:06 galaxyskyknight

回退到之前的0a04b917632d932a8bc0feb8c087c03928faf886 没问题了。

galaxyskyknight avatar Jun 01 '22 16:06 galaxyskyknight

你说的问题,用你的配置没有发现问题。 那个log,只是说明smartdns收到了非自己发送的ping包回应,并不是说是smartdns对外发送ping的。你应该排查你网络的地址情况。或者是防火墙配置。

还有,你的配置,下面两个有误。:号在bind后有空格,和后面端口连在一起。

bind: 6053 -group china
bind: 5335 -group gfwlist

正确示例:

bind :6053 -group china
bind :5335 -group gfwlist

pymumu avatar Jun 03 '22 09:06 pymumu

你说的问题,用你的配置没有发现问题。 那个log,只是说明smartdns收到了非自己发送的ping包回应,并不是说是smartdns对外发送ping的。你应该排查你网络的地址情况。或者是防火墙配置。

还有,你的配置,下面两个有误。:号在bind后有空格,和后面端口连在一起。

bind: 6053 -group china
bind: 5335 -group gfwlist

正确示例:

bind :6053 -group china
bind :5335 -group gfwlist

感谢指出,但是很奇怪的事,我这样写smartdns能正常启动,也能正常工作,如果按你的写法,smartdns根本没法启动,查看debug日志,提示6053端口已经被占用,但实际用ps和netstat -anp|grep 6053查看,发现既没有smartdns进程也没有任何其他进程启用6053端口啊。

image

galaxyskyknight avatar Jun 05 '22 05:06 galaxyskyknight

之前那样写是没生效,没有启用6053端口,所以能启动 修改正确后,因为6053端口被其他程序占用了,所以无法启用,进程启动失败。

pymumu avatar Jun 05 '22 07:06 pymumu

只有按照我那样写的才能正常启动,而且启动占用6053的就是smartdns,如果按照你那样写的,根本没法启动,提示6053被占用,但系统进程里没有smartdns,而且也没有程序占用6053,我也是感到非常不理解

galaxyskyknight avatar Jun 05 '22 08:06 galaxyskyknight

建议是换个端口,或者可以dig查询下6053有没有服务。

另外也可以用最新代码看看,修正了一个测速配置的问题。

pymumu avatar Jun 05 '22 08:06 pymumu

刷到了最新的code啊,在lede里面只能这样写才能起来 bind: 6053, 一旦写成bind :6053必然说端口被占用,换其他任何端口都是一样的,大佬检查一下代码?而且写成bind: 6053起来后,dig是没问题的,也就是说其确实提供了6053端口的 查询服务,而且netstat也看到了smartdns监听在6053,所以我在想,这是什么鬼

galaxyskyknight avatar Jun 06 '22 02:06 galaxyskyknight

bind :6053 的写法是正确的。 既然你用lede,为什么不在uci里写端口号,而要直接写在配置文件?

PikuZheng avatar Jun 06 '22 22:06 PikuZheng

bind :6053 的写法是正确的。 既然你用lede,为什么不在uci里写端口号,而要直接写在配置文件?

原因很简单,第一服务器组默认绑定的是default,而且在luci“常规设置”里没有设置服务器组的选项,只有第二服务器组才有,你看我的配置是把6053绑定给了'china'这个服务器组,这个在配置界面没法实现,只能用配置文件方式实现。要不麻烦大佬更新一下luci-app-smartdns的代码把第一服务器也加入一个这个配置服务器组的选项?

另外,的确很奇怪了,我就是用大佬你正确的写法就是不行。。。。用我的写法才行,狗血了。

galaxyskyknight avatar Jun 07 '22 00:06 galaxyskyknight

请看一下/var/etc/smartdns/smartdns.conf (无论写法是否正确)生成的配置是什么。 我怀疑uci生成的配置和你的自定义配置有冲突

PikuZheng avatar Jun 07 '22 23:06 PikuZheng

请看一下/var/etc/smartdns/smartdns.conf (无论写法是否正确)生成的配置是什么。 我怀疑uci生成的配置和你的自定义配置有冲突

配置如下,貌似luci生成的没法被custom.conf override啊..... luci的第一服务器没法指定服务器名字

server-name smartdns bind [::]:6053 bind-tcp [::]:6053 dualstack-ip-selection no prefetch-domain yes cache-size 100000 rr-ttl-min 300 rr-ttl-max 3600 log-size 64K log-num 1 log-level error bind [::]:5335 -group gfwlist -no-rule-addr -no-rule-nameserver bind-tcp [::]:5335 -group gfwlist -no-rule-addr -no-rule-nameserver conf-file /etc/smartdns/address.conf conf-file /etc/smartdns/blacklist-ip.conf conf-file /etc/smartdns/custom.conf

galaxyskyknight avatar Jun 08 '22 06:06 galaxyskyknight

那肯定的啊 coustom本来就是包含关系 不是覆盖关系 所以端口冲突了

PikuZheng avatar Jun 08 '22 08:06 PikuZheng

要不你在uci再起一个端口吧(相当于起了三个进程

PikuZheng avatar Jun 08 '22 08:06 PikuZheng

要不你在uci再起一个端口吧(相当于起了三个进程

我有点晕了,luci只能设置两个端口,我现在是6053/5335, 5335在ssr里指定为gfwlist的解析渠道。6053就走国内,命名服务器组为china,专门有配合的解析chinalist列表的,所以这部分是用的-exclude-default-group, 那我再起一个端口,怎么起呢,配哪里呢?再custom指定吗?假设为设为7053, 那是不是要把dnsmasq的上游设为7053?然后6053等于空置为default了?

galaxyskyknight avatar Jun 08 '22 08:06 galaxyskyknight

要不你在uci再起一个端口吧(相当于起了三个进程

我有点晕了,luci只能设置两个端口,我现在是6053/5335, 5335在ssr里指定为gfwlist的解析渠道。6053就走国内,命名服务器组为china,专门有配合的解析chinalist列表的,所以这部分是用的-exclude-default-group, 那我再起一个端口,怎么起呢,配哪里呢?再custom指定吗?假设为设为7053, 那是不是要把dnsmasq的上游设为7053?然后6053等于空置为default了?

刚试了一下,如果同时起6053/7053(在custom里可以按bind :7053指定)/5335,dnsmasq会同时添加127.0.0.1:6053和127.0.0.1:7053作为上游,那到时候查询到底是走6053还是7053呢,只有7053才绑定了group china的策略,那6053用哪些服务器查询?我没有配任何上游服务器和default 服务器,那6053是怎么个返回?

galaxyskyknight avatar Jun 08 '22 08:06 galaxyskyknight

openwrt的配置文件

config smartdns
        option enabled '1'
        option server_name 'smartdns'
        option port '6053'
        option tcp_server '1'
        option ipv6_server '1'
        option dualstack_ip_selection '0'
        option prefetch_domain '1'
        option serve_expired '0'
        option redirect 'dnsmasq-upstream'
        option cache_size '100000'
        option rr_ttl_min '300'
        option rr_ttl_max '3600'
        option seconddns_tcp_server '1'
        option seconddns_no_speed_check '0'
        option seconddns_no_rule_ipset '0'
        option seconddns_no_rule_soa '0'
        option seconddns_no_dualstack_selection '0'
        option seconddns_no_cache '0'
        option force_aaaa_soa '0'
        option coredump '0'
        option seconddns_enabled '1'
        option seconddns_port '5335'
        option seconddns_server_group 'gfwlist'
        option seconddns_no_rule_addr '1'
        option seconddns_no_rule_nameserver '1'
        list old_redirect 'dnsmasq-upstream'
        list old_port '6053'
        list old_enabled '1'

custom.conf

force-AAAA-SOA no
# 国内域名, 生成脚本 https://github.com/huifukejian/test/blob/master/update-china-list.sh
conf-file /etc/smartdns/smartdns-domains.china.conf
speed-check-mode tcp:443,tcp:80,ping
bind: 6053 -group china
bind: 5335 -group gfwlist

#################           国内DNS解析组           #################
#腾讯dnspod DoH
server-https  https://1.12.12.12/dns-query -hostname 'doh.pub' -group china -exclude-default-group
server-https  https://120.53.53.53/dns-query -group china -exclude-default-group
server-https  https://106.55.91.174/dns-query -hostname 'sm2.doh.pub' -group china -exclude-default-group

#阿里 DoH
server-https https://223.5.5.5/dns-query -hostname 'dns.alidns.com' -group china -exclude-default-group
server-https https://223.6.6.6/dns-query -hostname 'dns.alidns.com' -group china -exclude-default-group


#################           国外DNS解析组           #################
server-https https://1.1.1.1/dns-query  -group gfwlist
server-https https://1.0.0.1/dns-query  -group gfwlist
#server-https https://8.8.8.8/dns-query -group gfwlist
#server-https https://8.8.4.4/dns-query -group gfwlist
#server-https https://9.9.9.9/dns-query -group gfwlist
#server-https https://94.140.14.14/dns-query -group gfwlist
server-tls 1.1.1.1:853  -group gfwlist

#smartdns日志设置
log-level debug
log-file /mnt/sda3/smartdns_log/smartdns.log
log-size 100m
log-num 10

#查询审计日志
audit-enable yes
audit-file /mnt/sda3/smartdns_log/audit.log
audit-size 10m
audit-num 10

国外组,得排除在默认组之外

cresky-github avatar Jun 08 '22 09:06 cresky-github

其实在 .conf 文件里写 bind 语句意义不大, uci 写有就行了

cresky-github avatar Jun 08 '22 09:06 cresky-github

其实在 .conf 文件里写 bind 语句意义不大, uci 写有就行了

其实我的目的是这样,整个就没有default 组指定的server, 6053就是china组,china这个组呢我想全部用我在custom里指定的国内DoH,但如果luci没有配置项没有把6053跟服务器组名称关联起来的话,6053端口默认我就不知道它的default去哪里查询了,是否还是会走到我china组指定的那些DoH server?,5335 就是国外组,5335当然可以用-exclude-default-group排除出来。不知道我说明白没有

galaxyskyknight avatar Jun 08 '22 11:06 galaxyskyknight

其实在 .conf 文件里写 bind 语句意义不大, uci 写有就行了

其实我的目的是这样,整个就没有default 组指定的server, 6053就是china组,china这个组呢我想全部用我在custom里指定的国内DoH,但如果luci没有配置项没有把6053跟服务器组名称关联起来的话,6053端口默认我就不知道它的default去哪里查询了,是否还是会走到我china组指定的那些DoH server?,5335 就是国外组,5335当然可以用-exclude-default-group排除出来。不知道我说明白没有

其实,压根就不用理会什么端口。

端口,作用只是进入到smartdns而已,不用与哪个组绑定。

进入了smartdns,用nameserver分组就行了,你想分多少组就分多少组,并注意与DNS组别匹配。我用第一端口把域名分为3个组,direct/proxy/default。另加一个DoH域名一个组,比如:dns.alidns.com。

没用到第二个端口。

cresky-github avatar Jun 08 '22 13:06 cresky-github

其实在 .conf 文件里写 bind 语句意义不大, uci 写有就行了

其实我的目的是这样,整个就没有default 组指定的server, 6053就是china组,china这个组呢我想全部用我在custom里指定的国内DoH,但如果luci没有配置项没有把6053跟服务器组名称关联起来的话,6053端口默认我就不知道它的default去哪里查询了,是否还是会走到我china组指定的那些DoH server?,5335 就是国外组,5335当然可以用-exclude-default-group排除出来。不知道我说明白没有

其实,压根就不用理会什么端口。

端口,作用只是进入到smartdns而已,不用与哪个组绑定。

进入了smartdns,用nameserver分组就行了,你想分多少组就分多少组,并注意与DNS组别匹配。我用第一端口把域名分为3个组,direct/proxy/default。另加一个DoH域名一个组,比如:dns.alidns.com。

没用到第二个端口。

那听上去bind端口时指定服务器组名没有任何卵意义了....?有意义的是每一个指定的dns server所配置的归属组的名称+nameserver 所指定的解析服务器组名之间的映射挂接关系了?看上去是这样?

galaxyskyknight avatar Jun 08 '22 14:06 galaxyskyknight

其实在 .conf 文件里写 bind 语句意义不大, uci 写有就行了

其实我的目的是这样,整个就没有default 组指定的server, 6053就是china组,china这个组呢我想全部用我在custom里指定的国内DoH,但如果luci没有配置项没有把6053跟服务器组名称关联起来的话,6053端口默认我就不知道它的default去哪里查询了,是否还是会走到我china组指定的那些DoH server?,5335 就是国外组,5335当然可以用-exclude-default-group排除出来。不知道我说明白没有

其实,压根就不用理会什么端口。 端口,作用只是进入到smartdns而已,不用与哪个组绑定。 进入了smartdns,用nameserver分组就行了,你想分多少组就分多少组,并注意与DNS组别匹配。我用第一端口把域名分为3个组,direct/proxy/default。另加一个DoH域名一个组,比如:dns.alidns.com。 没用到第二个端口。

那听上去bind端口时指定服务器组名没有任何卵意义了....?有意义的是每一个指定的dns server所配置的归属组的名称+nameserver 所指定的解析服务器组名之间的映射挂接关系了?看上去是这样?

对,就是这样,入口单一。 nameserver 和 DNS 组名一致就行了。

例如:

nameserver /00006801.com/proxy …… nameserver /000wx.com/direct …… server-https https://doh.pub/dns-query -group direct -exclude-default-group …… server-https https://dns.google/dns-query -group proxy -exclude-default-group …… server-tls 8.8.8.8

cresky-github avatar Jun 08 '22 14:06 cresky-github

你说的问题,用你的配置没有发现问题。 那个log,只是说明smartdns收到了非自己发送的ping包回应,并不是说是smartdns对外发送ping的。你应该排查你网络的地址情况。或者是防火墙配置。

还有,你的配置,下面两个有误。:号在bind后有空格,和后面端口连在一起。

bind: 6053 -group china
bind: 5335 -group gfwlist

正确示例:

bind :6053 -group china
bind :5335 -group gfwlist

能否在技术上处理一下不要求这么严格啊,用了两年的用户表示我也有这问题,要不是今天上来看看估计会一直错下去

LsnmxNB avatar Jun 10 '22 07:06 LsnmxNB

其实在 .conf 文件里写 bind 语句意义不大, uci 写有就行了

其实我的目的是这样,整个就没有default 组指定的server, 6053就是china组,china这个组呢我想全部用我在custom里指定的国内DoH,但如果luci没有配置项没有把6053跟服务器组名称关联起来的话,6053端口默认我就不知道它的default去哪里查询了,是否还是会走到我china组指定的那些DoH server?,5335 就是国外组,5335当然可以用-exclude-default-group排除出来。不知道我说明白没有

其实,压根就不用理会什么端口。

端口,作用只是进入到smartdns而已,不用与哪个组绑定。

进入了smartdns,用nameserver分组就行了,你想分多少组就分多少组,并注意与DNS组别匹配。我用第一端口把域名分为3个组,direct/proxy/default。另加一个DoH域名一个组,比如:dns.alidns.com。

没用到第二个端口。

玩意很多,不要轻易说没用,哪只是相对你而言,反正对我来讲有用

LsnmxNB avatar Jun 10 '22 07:06 LsnmxNB

最新版本验证,有问题reopen issue

pymumu avatar Oct 20 '22 12:10 pymumu