smartdns
smartdns copied to clipboard
昨天的fix有bug
debug log里一直在狂ping 一些内网地址都fail,也不知道干啥,没用任何查询记录显示,dns查询全挂了。
看了下我的没有这样的情况 看看你的配置文件什么样的
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
回退到之前的0a04b917632d932a8bc0feb8c087c03928faf886
没问题了。
你说的问题,用你的配置没有发现问题。 那个log,只是说明smartdns收到了非自己发送的ping包回应,并不是说是smartdns对外发送ping的。你应该排查你网络的地址情况。或者是防火墙配置。
还有,你的配置,下面两个有误。:
号在bind后有空格,和后面端口连在一起。
bind: 6053 -group china
bind: 5335 -group gfwlist
正确示例:
bind :6053 -group china
bind :5335 -group gfwlist
你说的问题,用你的配置没有发现问题。 那个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端口啊。
之前那样写是没生效,没有启用6053端口,所以能启动 修改正确后,因为6053端口被其他程序占用了,所以无法启用,进程启动失败。
只有按照我那样写的才能正常启动,而且启动占用6053的就是smartdns,如果按照你那样写的,根本没法启动,提示6053被占用,但系统进程里没有smartdns,而且也没有程序占用6053,我也是感到非常不理解
建议是换个端口,或者可以dig查询下6053有没有服务。
另外也可以用最新代码看看,修正了一个测速配置的问题。
刷到了最新的code啊,在lede里面只能这样写才能起来 bind: 6053, 一旦写成bind :6053必然说端口被占用,换其他任何端口都是一样的,大佬检查一下代码?而且写成bind: 6053起来后,dig是没问题的,也就是说其确实提供了6053端口的 查询服务,而且netstat也看到了smartdns监听在6053,所以我在想,这是什么鬼
bind :6053
的写法是正确的。
既然你用lede,为什么不在uci里写端口号,而要直接写在配置文件?
bind :6053
的写法是正确的。 既然你用lede,为什么不在uci里写端口号,而要直接写在配置文件?
原因很简单,第一服务器组默认绑定的是default,而且在luci“常规设置”里没有设置服务器组的选项,只有第二服务器组才有,你看我的配置是把6053绑定给了'china'这个服务器组,这个在配置界面没法实现,只能用配置文件方式实现。要不麻烦大佬更新一下luci-app-smartdns的代码把第一服务器也加入一个这个配置服务器组的选项?
另外,的确很奇怪了,我就是用大佬你正确的写法就是不行。。。。用我的写法才行,狗血了。
请看一下/var/etc/smartdns/smartdns.conf
(无论写法是否正确)生成的配置是什么。
我怀疑uci生成的配置和你的自定义配置有冲突
请看一下
/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
那肯定的啊 coustom本来就是包含关系 不是覆盖关系 所以端口冲突了
要不你在uci再起一个端口吧(相当于起了三个进程
要不你在uci再起一个端口吧(相当于起了三个进程
我有点晕了,luci只能设置两个端口,我现在是6053/5335, 5335在ssr里指定为gfwlist的解析渠道。6053就走国内,命名服务器组为china,专门有配合的解析chinalist列表的,所以这部分是用的-exclude-default-group, 那我再起一个端口,怎么起呢,配哪里呢?再custom指定吗?假设为设为7053, 那是不是要把dnsmasq的上游设为7053?然后6053等于空置为default了?
要不你在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是怎么个返回?
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
国外组,得排除在默认组之外
其实在 .conf 文件里写 bind 语句意义不大, uci 写有就行了
其实在 .conf 文件里写 bind 语句意义不大, uci 写有就行了
其实我的目的是这样,整个就没有default 组指定的server, 6053就是china组,china这个组呢我想全部用我在custom里指定的国内DoH,但如果luci没有配置项没有把6053跟服务器组名称关联起来的话,6053端口默认我就不知道它的default去哪里查询了,是否还是会走到我china组指定的那些DoH server?,5335 就是国外组,5335当然可以用-exclude-default-group排除出来。不知道我说明白没有
其实在 .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。
没用到第二个端口。
其实在 .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 所指定的解析服务器组名之间的映射挂接关系了?看上去是这样?
其实在 .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
你说的问题,用你的配置没有发现问题。 那个log,只是说明smartdns收到了非自己发送的ping包回应,并不是说是smartdns对外发送ping的。你应该排查你网络的地址情况。或者是防火墙配置。
还有,你的配置,下面两个有误。
:
号在bind后有空格,和后面端口连在一起。bind: 6053 -group china bind: 5335 -group gfwlist
正确示例:
bind :6053 -group china bind :5335 -group gfwlist
能否在技术上处理一下不要求这么严格啊,用了两年的用户表示我也有这问题,要不是今天上来看看估计会一直错下去
其实在 .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。
没用到第二个端口。
玩意很多,不要轻易说没用,哪只是相对你而言,反正对我来讲有用
最新版本验证,有问题reopen issue