看到论坛里有不少愿意折腾 Mosdns 的网友,所以把这个项目转过来分享给大家,目前已经被 Mosdns 官方 wiki 收录,我记得 mosdns 的作者也在 V2EX ,感谢认可 : )
项目地址: https://github.com/pmkol/easymosdns
简化 Mosdns 基本功能使用的辅助脚本,仅需几分钟即可搭建一台支持 ECS 的无污染 DNS 服务器。
- 支持 EDNS 解析,根据域名与中国大陆 IP 列表智能分流,查询结果无污染
- 污染列表与自定义列表中的域名,请求上游 DNS 时自动替换附带的用户 IP 子网信息,保护隐私
- 强化 Hosts 功能,域名支持多个 IP ,支持 IPv6
- 支持自定义 ECS ,强制域名附带中国大陆 /台湾地区的 ECS 解析
- DNS 缓存时间优化,自动更新缓存,支持 Redis 持久化存储,可根据场景切换缓存规则
- 轻度过滤恶意网址,可通过白名单自定义过滤规则
- 屏蔽 TYPE65 与非中国大陆地区的 IPv6 请求,自动保留纯 IPv6 域名的请求,以获取更好的网络体验
- 支持规则自动更新,提供直连 /CDN/Socks5 三种下载更新规则的方式
- 支持上游节点故障时自动转移,优化 DNS 服务的稳定性
- 切换本地上游 DNS
- 切换远程上游 DNS
- 切换缓存策略
- 手动 /自动更新规则
- 配置 Socks5 代理
- 切换 ECS 模式
- 开启 /关闭 恶意广告过滤
- 开启 /关闭 IPv6 屏蔽
日访问人数 1000+ 日处理请求 200w+ Intel Xeon Processor 系列的单核 2.5G 主频 CPU mosdns + nginx +redis 的 CPU 峰值基本不会超过 5% 比我早年多个 DNS 程序组合的方案降低了至少一半的负载压力
我写了一篇评测与搭建教程,感兴趣的可以 前往查看
最后附上自建 DoH 地址 前往获取
方便大家研究对比使用,对稳定性不做承诺,虽然已经从 2019 年运行到现在了...
1
PMkol OP 唯一不足的是,部分域名的 NS 服务器不看 ECS 只看请求来源 IP ,例如知名的 akamai ,这会导致如果 DNS 服务器距离访问者距离较远,会解析到较远的 CDN 节点。理论上除非全世界建节点,否则无解,不知道有没有更好的办法,还请大神们指点。
|
2
Bingchunmoli 2022-07-06 02:35:15 +08:00 via Android
不知道和其他无污染的 dns 有什么优缺点,没有听说过 mosdns 是我孤陋寡闻了,希望有个对比有个替换的念头(支持 edns 一般是国内走 dnspod ,其他似乎就没了)
|
3
PMkol OP @Bingchunmoli
首先 mosdns 是开源的 DNS 转发器,不是无污染的 DNS 服务器。 与其他 DNS 转发器相比,逻辑处理的细节差距很明显,mosdns 是插件式的,逻辑可以定制。我目前只看见 coredns 使用了这种插件模式,可惜不支持 ip 分流,并不适合中国大陆地区。 另外 mosdns 的缓存机制有自动更新功能,并不是通过强制修改 ttl 来实现的,这可以在保证数据新鲜度的前提下,大幅度提高缓存的命中率,即 DNS 解析域名的响应速度会快很多。 再回答与其它无污染 DNS 的差异问题,拿我做的这个测试用的 DOH 为例,可以用以下两种情况与你现在使用的纯净 DNS 做下对比: 1 、不开代理,连我的 doh 访问 github 测试下速度; 区别是,我的 DNS 会将 github 指向日本的节点,而一般自建的无污染 DNS 会指向新加坡的节点,而这个节点经常会炸 2 、可以试下 2311.host 这个域名,用其它无污染的 DNS 和国内的 DNS 做下对比,几乎所有的自建无污染 DNS 解析结果都为空,但如果使用国内有污染的 DNS 是可以解析出结果的; 原因是这个域名属于特殊状态,禁止了国外 DNS 解析; 自建 DNS 大部分只能通过修改 hosts 或 domain 名单,来强制解决这些问题,但这种方式并不可信,例如 github 日本节点换 IP 了,修改 hosts 肯定不靠谱,再例如第二种情况的域名,人工收集也不及时。 而使用这种插件式的 DNS 程序,完全是通过逻辑规则解决的。 |
4
imoo 2022-07-06 09:59:35 +08:00 1
能出个 openwrt 的插件就好了
|
6
laincat 2022-07-06 10:29:02 +08:00 via iPhone
其实目前也主要是:路由器上架,内网小主机(直接或容器),然后公网(直接或容器)
配置文件其实也算挺通用的。根据 OP 的改改小部分就能爽了。 |
7
Bingchunmoli 2022-07-06 17:31:23 +08:00
|
8
PMkol OP @Bingchunmoli
规则方面,源码里已经写的很清楚了,建议你自己接入尝试下效果,而且我更倾向在内网自建,所以我发的不光是 DOH 服务器地址,更多是让你可以随时在家里自己部署 DNS 的脚本 维护方面,这个 DNS 本身就是我自己在用的,之前也就几十个朋友在用,觉得服务器闲置大量资源有点浪费了,所以就做了个 DOH ,我的评测链接里有数据截图,稳定性自己判断,所以这个 DOH 完全就是我自己在用的东西,并不是用来做公共 DNS 引流其他业务的,没有商业目的 |
9
xuesumin 2022-07-06 19:22:06 +08:00 via iPhone
@PMkol 请教一下,在家虚拟机部署一个这个后,如何和 openwrt 配合使用,尤其是 passwall 翻墙如何设置
|
10
PMkol OP @xuesumin 我家里的是 padavan ,openwrt 应该类似,和你说下思路
首先虚拟机一定保证 24 小时在线,不然使用起来会很不方便,而且要桥接网卡,让内网能通过 IP 访问到 然后 openwrt 里,一般都有 smartdns 一类的功能,不同版本的设置可能不一样,把国内国外的 DNS 都指向到你自己这台虚拟机上,国内分流建议你再加一条本地的 DNS ,防止虚拟机挂掉网直接崩了 |
12
xuesumin 2022-07-06 22:47:44 +08:00 via iPhone
@PMkol 还有一个问题,如果直接使用您现成的 DOH ,例如我是南方电信,您 DOH 是北方联通,这样效果就削弱很多?
|
13
PMkol OP @xuesumin 建议你只用我的 DOH 解析海外网站,速度据南方用户反馈还可以,国内网站建议还是直接用大厂的 DNS 或者本地 DNS ,效果都一样,但我的服务器在北方,再过一道 CDN 会有一些延迟,虽然基本感觉不到
|
16
Bunnyranch 2022-07-07 11:06:55 +08:00
非常有用! 我只会改 3.x 版本的配置文件,到 4.x 之后一直用不好了.
自己一改动 4.x 版本的 ttl/lazy cache 这些设置就跑不起来...还一直停在 3.x 版本呢 |
18
xuesumin 2022-07-10 16:35:11 +08:00
@PMkol 用了几天,感觉不错!谢谢!请教一下,如果将来 MOSDNS 更新了或者您更新了,我该如何更新 DNS 服务器虚拟机?
|
19
PMkol OP @xuesumin 关于 easymosdns ,我已经更新 3 个版本了,每个版本之间,只需要覆盖就可以完成升级。如果 mosdns 产生了像 v3-v4 这样要改动配置文件格式的升级,那我的脚本也就不能用了。
关于 mosdns ,你直接关闭程序,覆盖原有二进制文件就行了。 |
20
HalloCQ 2022-07-26 11:48:13 +08:00
mosdns 的 doh 支持不完善,我看 issues 有人提过此类问题.
我发现 doh 有问题是我在爱快上使用 mosdns 的 doh,会不能工作,而使用 adguardhome 的 doh 可以正常使用 |
21
PMkol OP @HalloCQ 去 github 上向 mosdns 作者反馈下,目前我对外开放的那个 DoH 的用户反馈,因为不支持 HTTP1.0 ,所以一些客户端用不了
|
22
hoor 2022-08-06 16:12:34 +08:00
已经在 vps 部署了一下,没开 doh ,测试一下,效果还是比较明显,之前用双 adguard home ,现在一起用,还是比较方便,按照步骤来,自用完全没有问题
|