-
Notifications
You must be signed in to change notification settings - Fork 1.1k
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
莫名其妙的丢一些 DNS 解析 #1730
Comments
猜测是查询循环,向上游查询时被劫持,但是劫持了的目标又是自己 |
用最新代码看看有没有问题 |
还是不行,这次卡到 cloudfront 一个域名上了。
smartdns 1.2024.04.27-0055 (Release45-13-g9642dc4) |
把1.1.1.1和1.0.0.1去掉看看 |
@pymumu 去掉了 1111 和 1001 DNS,用了一天,好像不出问题了,这么神奇的吗?想知道这是什么情况。 |
可能你的客户端启用了ecs,1.1.1.1这种情况下可能会返回空结果 |
并没有,从 43 直接升级到 45 什么都没有动。在服务器上直接 dig 也是一样,有时候得不到解析,甚至有时候影响到 debian 的 repo,apt install 软件下载不了,再一看 DNS 解析没了。我在另外一个非 aws 服务器上,采用完全一模一样的配置,倒是没有遇到解析问题。 update: 在一台瓦工日本vps、德国linode也遇到了相同的丢解析情况。 |
那你吧blacklist.conf注释掉看看 |
我附上一份完整的 log,DEBUG 模式,测试机是瓦工日本。 smartdns.log 目前没有作为代理机,只是执行了一个流媒体测试脚本,用于模拟访问多个域名的情况。 具体日志里可以观察 www.youtube.com ,在服务器上执行脚本时,DNS解析直接丢失。 如果有进一步的测试需要,我可以提供 ROOT 密码。 |
同服主机(?),但是一用https就被封端口,搞得我都不敢用了。 有没有试过到8.8.8.8或1.1.1.1用tls? |
我遇到出问题的厂商有:AWS(东京、首尔、德国、英国)、Linode(德国)、瓦工(大阪)。这些都很出名,绝对是不会是因为网络问题导致这种现象。要说一家网络是坏的,那么列出的这些厂商不可能全不行。我尝试过重装服务器,重新开新的服务器,都是一样的通病。我换成旧版本的 smartdns,也不存在这种现象。我之前一直在用 release 43 或者更早版本,是近期才换到 45 版本的。43 版本及之前没有发生过这种问题。
将上面 DNS 配置去掉 刚刚经过测试,将 |
也就是说,只有smartdns与1.1.1.1、1.0.0.1的udp搭配会有问题 😅 |
老版本,跑一下,发一下debug log |
目前附件中传的是,使用 Release 43 的 debug 模式的 log 结果。 在版本 43 中,测试没有任何 DNS 解析结果丢失。 |
之前版本查询1.1.1.1也是有问题,不过忽略了查询错误。返回的其实是其他DNS的结果。
这里tc=1一般数据都有缺失。 我这里看1.1.1.1,不会有tc = 1的情况,不清楚你网络有什么不同? |
这真的就十分困惑了,因为 resolv.conf 直接填 1111 没问题。 我把 ssh 登录信息通过alipay捐赠发给你了,你可以登录研究一下。 |
同一个域名,是随机出现,还是必现? |
随机。使用过程中,根本不知道具体会在哪个域名上出现了丢失 DNS 解析。且丢失 DNS 解析的域名不止一个。
步骤: 将 设置完毕后,可在服务器上,直接执行该测试脚本,测试在一段时间内,查询多个域名的情况:
https://github.com/lmc999/RegionRestrictionCheck |
简单看了一下,可能是1.1.1.1对你的机器做了限流,连续查询就会返回空记录。 在你给的那个机器上,root目录执行下面命令,让mdig连续查询,就会出现查询超时的情形。
tcpdump看回应记录,确认回的结果就是空
你用resolv.conf没有问题,是因为查询失败会用tcp查询,用dig命令没有问题,是因为每次dig算是一个新的进程,1.1.1.1限流是按端口限流的,新进程会用新端口。 你可以用你家里的机器看看有没有问题。 因为smartdns目前查询失败,不会自动fallback到tcp。 针对这种场景,我修改了一下代码,在你的那个机器上,可以看看有没有问题。 |
啊啊,原来是这个样子,这下明白了。。。感谢解惑。。
好,等您的提交,我编译来试试看。 |
1.1.1.1 支持tcp查询吗?是不是用tcp/53可以避免这个问题? |
更新了代码 |
@pymumu 经过两天的测试,DNS 解析不存在任何问题了。 |
问题现象
目前使用 SS 连接这台服务器使用,这台服务器作为我的代理服务器。服务器用着用着,访问一些网站时,DNS 解析记录就消失了,这些域名并不固定,也不知道具体是赶上了哪个。就比如日志里,这次赶上了 dynamic.t0.tiles.ditu.live.com。
等个10分钟过去以后,这域名解析记录就恢复正常了,有时候等不及,重启 smartdns 服务,也能让它访问正常。
我试过打开 cache-persist,不关这里的事,开了也同样遇到相同情况。
我在以前用 release 43 的时候,相同的配置,并没有遇到这种很奇怪的问题。
运行环境
Debian 12
AWS Lightsail 日本
最新的 release 45
smartdns.conf 文件
重现步骤
信息收集
log:
audit log:
The text was updated successfully, but these errors were encountered: