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

断网问题应该找到了 #536

Closed
wyjtm opened this issue Jun 18, 2020 · 35 comments
Closed

断网问题应该找到了 #536

wyjtm opened this issue Jun 18, 2020 · 35 comments

Comments

@wyjtm
Copy link

wyjtm commented Jun 18, 2020

#501

只要用doh,smartdns就不停崩溃

只用dot和常规53端口用法不崩溃了

日志里一直刷doh连不上 换什么doh都会刷错误

8888dot虽然一直报ssl错误 但是没再出现崩溃的问题

AdGuard的DNS无论dot还是doh 只要用了smartdns一定会不停崩溃 半天就连不上网了

用的是#501你给的 smartdns.1.2020.05.17-0943.arm-openwrt-all.ipk.zip

求更新release

@pymumu
Copy link
Owner

pymumu commented Jun 19, 2020

https服务器是什么?

@wyjtm
Copy link
Author

wyjtm commented Jun 19, 2020

https服务器是什么?

https://dns.alidns.com/dns-query
https://doh.opendns.com/dns-query
https://dns.adguard.com/dns-query
https://dns.twnic.tw/dns-query
https://cloudflare-dns.com/dns-query

上面这几个都试了

日常用的doh只有open和adguard这俩

只要doh一开日志就会刷smartdns重启&连不上 一直到崩溃连不上网

但只有adguard的dns不管是doh还是dot日志都会刷smartdns重启&连不上

这几天用这8888和8844的dot虽然日志一直不停的刷ssl错误 但没在遇到连不上网 日志好像也没看到刷smartdns重启

@pymumu

这是配置
config 2.txt

@pymumu
Copy link
Owner

pymumu commented Jun 19, 2020

出问题的日志是什么,我这用那配置实验了一下,没复现

@wyjtm
Copy link
Author

wyjtm commented Jun 20, 2020

smartdns.log
这是日志
@pymumu

只要用doh就会出现
FATAL
create ssl ctx failed.
还有查询失败
那些刷出来连不通和失败的都是doh的

@pymumu
Copy link
Owner

pymumu commented Jun 21, 2020

将https的域名换成IP地址测试下看看。
我这边一直都没法复现。

另外可以开启一下INFO日志。

@wyjtm
Copy link
Author

wyjtm commented Jun 22, 2020

将https的域名换成IP地址测试下看看。
我这边一直都没法复现。

另外可以开启一下INFO日志。

INFO要注意上什么信息? 好像看不到什么信息 不定时的刷warn信息
@pymumu

smartdns.log
这个是回家从七点多到现在开始刷FATAL信息了 开了doh 用的是域名

@wyjtm
Copy link
Author

wyjtm commented Jun 23, 2020

试了下 无论域名还是IP方式的doh都会刷
[ERROR][ dns_client.c:2551] send query to 176.103.130.130 failed, Bad address, type: 3
[ERROR][ dns_client.c:2551] send query to 176.103.130.130 failed, Bad address, type: 2
[ERROR][ dns_client.c:2551] send query to 210.17.9.228 failed, Bad address, type: 3
[ERROR][ dns_client.c:2551] send query to 146.112.41.2 failed, Bad address, type: 3
[ERROR][ dns_client.c:2551] send query to 223.5.5.5 failed, Bad address, type: 3
这种东西

然后就
[FATAL][ smartdns.c:359 ] process exit with signal 11, code = 1, errno = 0, pid = -1096671232, self = 2555, pc = 0x1d9b78, addr = 0xbea22000, build(May 17 2020 09:44:29)
不停循环 直到连不上网

@pymumu

@PikuZheng
Copy link
Contributor

怀疑你系统的ca-certificate包不对

@wyjtm
Copy link
Author

wyjtm commented Jun 24, 2020

怀疑你系统的ca-certificate包不对

你好 我搜了下 路由的已安装里就没有这个包?
他也没有提到要用 只装了ca-bundle
我在Software里搜到了 ca-certificates这个是必须要安装的吗?

ARMv7 Processor rev 5 (v7l)
固件版本 OpenWrt 19.07.3

用的是官方版本

@PikuZheng

@pymumu
Copy link
Owner

pymumu commented Jun 25, 2020

把DOH换成IP地址看看。

@wyjtm
Copy link
Author

wyjtm commented Jun 26, 2020

把DOH换成IP地址看看。

换成ip试了 还是一样错误
https://146.112.41.2/dns-query
https://210.17.9.228/dns-query
1.0.0.1 500+延迟 没用
dns.adguard.com 好像不支持ip替换 换上ip直接不能用了

smartdns.log
这是log

@pymumu

@pymumu
Copy link
Owner

pymumu commented Jun 27, 2020

smartdns.1.2020.06.27-1018.arm-openwrt-all.ipk.zip

编译了一个debug版本。
在自定义页面,将生成coredump功能打开,并且配置开启DEBUG日志

log-level debug

待出问题后,将coredump文件和对应的debug日志发一下

另外,确认一下是否只有DOH才出问题。代码上DOH和DOT差别不大。看错误都是和SSL相关,如果SSL相关,那么DOT也应该要有错误。

另外,可以逐一尝试单独配置一个DOH,看看哪个DOH有问题。

@wyjtm
Copy link
Author

wyjtm commented Jun 29, 2020

smartdns.1.2020.06.27-1018.arm-openwrt-all.ipk.zip

编译了一个debug版本。
在自定义页面,将生成coredump功能打开,并且配置开启DEBUG日志

log-level debug

待出问题后,将coredump文件和对应的debug日志发一下

另外,确认一下是否只有DOH才出问题。代码上DOH和DOT差别不大。看错误都是和SSL相关,如果SSL相关,那么DOT也应该要有错误。

另外,可以逐一尝试单独配置一个DOH,看看哪个DOH有问题。

你好 我装了smartdns.1.2020.06.27-1018.arm-openwrt-all.ipk用了几天发现在 level error下没有再出现fatal的日志了
刷ssl错误的日志在去掉谷歌8888@853和8844@853后也消失了
目前还会不断的刷
create ssl ctx failed.
failed, Bad address, type: 3
failed, Bad address, type: 2
这种错误 failed前面的ip都是doh的
今天我换成level debug用几天再把日志发上来 你再看下什么情况
@pymumu

@wyjtm
Copy link
Author

wyjtm commented Jul 1, 2020

问题重现了
SmartDNS - NOT RUNNING.zip
进入路由发现 SmartDNS - NOT RUNNING
f5刷新一下
提示
Internal Server Error
Failed to create CGI process: Out of memory

但刚进入路由看到还有一半内存都是空闲的
@pymumu

@wyjtm
Copy link
Author

wyjtm commented Jul 1, 2020

今天早上起来又崩了 环境是在大量挂bt

7.55重启SmartDNS 网络就恢复了
smartdns.log
@pymumu

@TheZ4ro
Copy link

TheZ4ro commented Jul 3, 2020

这个问题初步判断是这样产生的:
1、本地大量持续请求,如bt/ed2k产生的大量dns持续请求
2、上游网络未建立或者建立中,smatdns不能正常获得反馈
3、此情况下导致资源消耗迅速,产生大量错误,进程崩溃。
4、可能涉及doh/dot的逻辑

症状复现条件:
1、断开上行出口
2、开启dot/doh请求
3、开启多客户端的dns查询请求
现象:
1、日志大量报错滚动
2、cpu占用较高
3、坚持一会儿即崩溃

建议:参考dnsmasq对网络出口进行一定处理。如果出口异常,暂时停止上行请求。

补充一下:
貌似bug比较严重,去掉doh之后,在以上条件中,进程还会假死,导致log持续增加不受控制,造成更严重的问题。所以和doh没关系。
root@beta:# pgrep -fla dns
21741 smartdns -c /etc/smartdns/smartdns.conf (假死)
21938 /usr/sbin/dnsmasq -C /var/etc/dnsmasq.conf.cfg01411c -k -x /var/run/dnsmasq/dnsmasq.cfg01411c.pid
23000 smartdns -c /etc/smartdns/smartdns.conf (同端口自动新开)
root@beta:# ll /tmp/smartdns.log*
-rw-r----- 1 root root 6976358 Jul 2 21:59 /tmp/smartdns.log (持续增加不受控制)
-rw-r----- 1 root root 3763 Jul 2 21:56 /tmp/smartdns.log-20200702-215633.gz
-rw-r----- 1 root root 3926 Jul 2 21:56 /tmp/smartdns.log-20200702-215636.gz
-rw-r----- 1 root root 131106 Jul 2 21:56 /tmp/smartdns.log.pending

@pymumu
Copy link
Owner

pymumu commented Jul 3, 2020

把146那个删掉看看

@TheZ4ro
Copy link

TheZ4ro commented Jul 3, 2020

把146那个删掉看看

只要断开外网接口然后大量请求就会出错,和doh基本无关

@pymumu
Copy link
Owner

pymumu commented Jul 3, 2020

有多大的请求量?

@wyjtm
Copy link
Author

wyjtm commented Jul 3, 2020

把146那个删掉看看

不行
试了下过一段时间还是会断网
@pymumu

@wyjtm
Copy link
Author

wyjtm commented Jul 3, 2020

这个问题初步判断是这样产生的:
1、本地大量持续请求,如bt/ed2k产生的大量dns持续请求
2、上游网络未建立或者建立中,smatdns不能正常获得反馈
3、此情况下导致资源消耗迅速,产生大量错误,进程崩溃。
4、可能涉及doh/dot的逻辑

症状复现条件:
1、断开上行出口
2、开启dot/doh请求
3、开启多客户端的dns查询请求
现象:
1、日志大量报错滚动
2、cpu占用较高
3、坚持一会儿即崩溃

建议:参考dnsmasq对网络出口进行一定处理。如果出口异常,暂时停止上行请求。

补充一下:
貌似bug比较严重,去掉doh之后,在以上条件中,进程还会假死,导致log持续增加不受控制,造成更严重的问题。所以和doh没关系。
root@beta:# pgrep -fla dns
21741 smartdns -c /etc/smartdns/smartdns.conf (假死)
21938 /usr/sbin/dnsmasq -C /var/etc/dnsmasq.conf.cfg01411c -k -x /var/run/dnsmasq/dnsmasq.cfg01411c.pid
23000 smartdns -c /etc/smartdns/smartdns.conf (同端口自动新开)
root@beta:# ll /tmp/smartdns.log*
-rw-r----- 1 root root 6976358 Jul 2 21:59 /tmp/smartdns.log (持续增加不受控制)
-rw-r----- 1 root root 3763 Jul 2 21:56 /tmp/smartdns.log-20200702-215633.gz
-rw-r----- 1 root root 3926 Jul 2 21:56 /tmp/smartdns.log-20200702-215636.gz
-rw-r----- 1 root root 131106 Jul 2 21:56 /tmp/smartdns.log.pending

上行阻塞是可能的 但断网应该不会 bt和pd里有日志监测网络状态
我挂bt或者pd的时候会有一段时间全速上传或者下载的情况 那时候速度跑满chrome都会打不开网页或者卡
日志debug里能看到滚动的很快 WinSCP里一刷新窗口里日志一整页都更新了
@TheZ4ro

请教你的建议我该怎么操作 自己去看了看不知道怎么搞

@TheZ4ro
Copy link

TheZ4ro commented Jul 3, 2020

在作者修复前,可以自建一个monitor脚本,检查到异常后重启smartdns
抱歉各位,我的时区不一样,所以一般北京时间早上和晚上发言 :D

@TheZ4ro
Copy link

TheZ4ro commented Jul 3, 2020

有多大的请求量?

我的环境差不多就一个notebook,几台手机,还有一些智能家居设备。差不多十几个设备。断网情况下,smartdns的log,只开error,10-30秒钟会写500k以上

server 114.114.114.114 -blacklist-ip
server 202.96.134.133 -blacklist-ip
server 101.6.6.6 -blacklist-ip

server-tcp 1.0.0.1 -check-edns
server-tcp 9.9.9.9 -check-edns
server-tcp 8.8.8.8 -check-edns
server-tcp 199.85.126.10 -check-edns
server-tcp 208.67.222.222 -check-edns

server-tls 96.113.151.145
server-tls 8.8.8.8
server-tls 1.0.0.1

server-https https://dns.quad9.net/dns-query
server-https https://mozilla.cloudflare-dns.com/dns-query
server-https https://dns.adguard.com/dns-query

@pymumu
Copy link
Owner

pymumu commented Jul 3, 2020

你看看日志里面是什么?
我这也是10多台设备,基本没什么日志
另外,cache是打开还是关闭的

@pymumu
Copy link
Owner

pymumu commented Jul 3, 2020

这个问题初步判断是这样产生的:

1、本地大量持续请求,如bt/ed2k产生的大量dns持续请求

2、上游网络未建立或者建立中,smatdns不能正常获得反馈

3、此情况下导致资源消耗迅速,产生大量错误,进程崩溃。

4、可能涉及doh/dot的逻辑

症状复现条件:

1、断开上行出口

2、开启dot/doh请求

3、开启多客户端的dns查询请求

现象:

1、日志大量报错滚动

2、cpu占用较高

3、坚持一会儿即崩溃

建议:参考dnsmasq对网络出口进行一定处理。如果出口异常,暂时停止上行请求。

补充一下:

貌似bug比较严重,去掉doh之后,在以上条件中,进程还会假死,导致log持续增加不受控制,造成更严重的问题。所以和doh没关系。

root@beta:# pgrep -fla dns

21741 smartdns -c /etc/smartdns/smartdns.conf (假死)

21938 /usr/sbin/dnsmasq -C /var/etc/dnsmasq.conf.cfg01411c -k -x /var/run/dnsmasq/dnsmasq.cfg01411c.pid

23000 smartdns -c /etc/smartdns/smartdns.conf (同端口自动新开)

root@beta:# ll /tmp/smartdns.log*

-rw-r----- 1 root root 6976358 Jul 2 21:59 /tmp/smartdns.log (持续增加不受控制)

-rw-r----- 1 root root 3763 Jul 2 21:56 /tmp/smartdns.log-20200702-215633.gz

-rw-r----- 1 root root 3926 Jul 2 21:56 /tmp/smartdns.log-20200702-215636.gz

-rw-r----- 1 root root 131106 Jul 2 21:56 /tmp/smartdns.log.pending

上行阻塞是可能的 但断网应该不会 bt和pd里有日志监测网络状态

我挂bt或者pd的时候会有一段时间全速上传或者下载的情况 那时候速度跑满chrome都会打不开网页或者卡

日志debug里能看到滚动的很快 WinSCP里一刷新窗口里日志一整页都更新了

@TheZ4ro

请教你的建议我该怎么操作 自己去看了看不知道怎么搞

smartdns能支持5000条/秒的请求量,看你是什么设备了,如果设备内存小,请求量大,上游又不通,短时间内可能会占用几十兆内存

@TheZ4ro
Copy link

TheZ4ro commented Jul 3, 2020

日志如下:(xz压缩)
slog.tar.xz.gz

设备是小米的7621路由器,256内存
root@beta:/tmp# zip
-ash: zip: not found
root@beta:/tmp# free
total used free shared buff/cache available
Mem: 252084 34768 155332 16872 61984 157472
Swap: 0 0 0
root@beta:/tmp# cat /proc/cpuinfo
system type : MediaTek MT7621 ver:1 eco:3
machine : miwifi
processor : 0
cpu model : MIPS 1004Kc V2.15
BogoMIPS : 702.46
wait instruction : yes
microsecond timers : yes
tlb_entries : 32
extra interrupt vector : yes
hardware watchpoint : yes, count: 4, address/irw mask: [0x0ffc, 0x0ffc, 0x0ffb, 0x0ffb]
isa : mips1 mips2 mips32r1 mips32r2
ASEs implemented : mips16 dsp mt

虽然硬件比不上电脑和arm,但这个bug导致的崩溃看起来和硬件资源无关。等会试一下arm的

@pymumu
Copy link
Owner

pymumu commented Jul 4, 2020

日志如下:(xz压缩)

slog.tar.xz.gz

设备是小米的7621路由器,256内存

root@beta:/tmp# zip

-ash: zip: not found

root@beta:/tmp# free

          total        used        free      shared  buff/cache   available

Mem: 252084 34768 155332 16872 61984 157472

Swap: 0 0 0

root@beta:/tmp# cat /proc/cpuinfo

system type : MediaTek MT7621 ver:1 eco:3

machine : miwifi

processor : 0

cpu model : MIPS 1004Kc V2.15

BogoMIPS : 702.46

wait instruction : yes

microsecond timers : yes

tlb_entries : 32

extra interrupt vector : yes

hardware watchpoint : yes, count: 4, address/irw mask: [0x0ffc, 0x0ffc, 0x0ffb, 0x0ffb]

isa : mips1 mips2 mips32r1 mips32r2

ASEs implemented : mips16 dsp mt

虽然硬件比不上电脑和arm,但这个bug导致的崩溃看起来和硬件资源无关。等会试一下arm的

日志里面大量网络不可达错误,你先确认网络是否正常吧

@TheZ4ro
Copy link

TheZ4ro commented Jul 4, 2020

这是故意断开的,网络正常的时候这个bug不复现了。
大量错误是正常的,因为网络断开查不到了,但是smartdns不应该因为大量错误崩溃掉

@wyjtm
Copy link
Author

wyjtm commented Jul 5, 2020

在作者修复前,可以自建一个monitor脚本,检查到异常后重启smartdns
抱歉各位,我的时区不一样,所以一般北京时间早上和晚上发言 :D

看了看不会弄 求大佬帮忙写个脚本 谢谢
@TheZ4ro

@wyjtm
Copy link
Author

wyjtm commented Jul 5, 2020

日志里面大量网络不可达错误,你先确认网络是否正常吧

这个问题最近会修复吗?
@pymumu

@pymumu
Copy link
Owner

pymumu commented Jul 6, 2020

日志里面大量网络不可达错误,你先确认网络是否正常吧

这个问题最近会修复吗?

@pymumu

在看,但我这里也不出现,目前找不到原因,上次core文件看了,异常在ssl库里面,目前没有找到bug点。

你可以先用openwrt上游编译的版本替换静态编译版本,排除静态版本ssl的问题
路径:https://download.openwrt.org/snapshots/packages/[arch]/packages/smartdns_xxxx.ipk

另外,把146那个服务器删掉看看

@wyjtm
Copy link
Author

wyjtm commented Jul 6, 2020

另外,把146那个服务器删掉看看

好 目前还要报告一个问题
我是两个路由 一个在办公那边 另一个是这个频繁崩溃出错的下载用 两个同型号路由
昨天给办公用的路由装上smartdns.1.2020.06.27-1018.arm-openwrt-all.ipk.zip后早上看log一晚上自己崩溃了十几次(我把-5改成了999)
但是昨晚那网络就根本没人在用

@chainofhonor
Copy link

把doh的域名换成IP试试
例如
server-https https://223.5.5.5/dns-query
server-https https://8.8.8.8/dns-query

@LitingLin
Copy link

支持,用dot后重播pppoe进程必挂

@pymumu
Copy link
Owner

pymumu commented Aug 27, 2020

使用最新版本,如果有问题reopen issue,提交日志。

@pymumu pymumu closed this as completed Aug 27, 2020
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

6 participants