V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
PMkol
V2EX  ?  DNS

EasyMosdns 让 mosdns 开箱即用 (附 DoH)

  •  1
     
  •   PMkol · 2022-07-06 00:54:51 +08:00 · 15407 次点击
    这是一个创建于 674 天前的主题,其中的信息可能已经有所发展或是发生改变。

    腾讯云最新优惠活动来了:云产品限时1折,云服务器低至88元/年 ,点击这里立即抢购:9i0i.cn/qcloud,更有2860元代金券免费领取,付款直接抵现金用,点击这里立即领取:9i0i.cn/qcloudquan

    (福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

    EasyMosdns 开源的 EDNS 方案

    看到论坛里有不少愿意折腾 Mosdns 的网友,所以把这个项目转过来分享给大家,目前已经被 Mosdns 官方 wiki 收录,我记得 mosdns 的作者也在 V2EX ,感谢认可 : )

    项目地址: https://github.com/pmkol/easymosdns

    简化 Mosdns 基本功能使用的辅助脚本,仅需几分钟即可搭建一台支持 ECS 的无污染 DNS 服务器。

    • 无需重新编译,适配原生的 Mosdns 4.1+
    • 内置中国大陆地区的优化规则,满足 DNS 日常使用场景,开箱即用
    • 常用功能通过脚本控制,大幅度降低使用门槛
    • 使用 shell 语言编写,对 Linux 系统具有较好的兼容性,CentOS/RedHat 7+已通过测试

    • 基础功能包括:
    • 支持 EDNS 解析,根据域名与中国大陆 IP 列表智能分流,查询结果无污染
    • 污染列表与自定义列表中的域名,请求上游 DNS 时自动替换附带的用户 IP 子网信息,保护隐私
    • 强化 Hosts 功能,域名支持多个 IP ,支持 IPv6
    • 支持自定义 ECS ,强制域名附带中国大陆 /台湾地区的 ECS 解析
    • DNS 缓存时间优化,自动更新缓存,支持 Redis 持久化存储,可根据场景切换缓存规则
    • 轻度过滤恶意网址,可通过白名单自定义过滤规则
    • 屏蔽 TYPE65 与非中国大陆地区的 IPv6 请求,自动保留纯 IPv6 域名的请求,以获取更好的网络体验
    • 支持规则自动更新,提供直连 /CDN/Socks5 三种下载更新规则的方式
    • 支持上游节点故障时自动转移,优化 DNS 服务的稳定性
    • 脚本功能包括:
    • 切换本地上游 DNS
    • 切换远程上游 DNS
    • 切换缓存策略
    • 手动 /自动更新规则
    • 配置 Socks5 代理
    • 切换 ECS 模式
    • 开启 /关闭 恶意广告过滤
    • 开启 /关闭 IPv6 屏蔽

    分享一下我的 DoH 服务器数据

    日访问人数 1000+ 日处理请求 200w+ Intel Xeon Processor 系列的单核 2.5G 主频 CPU mosdns + nginx +redis 的 CPU 峰值基本不会超过 5% 比我早年多个 DNS 程序组合的方案降低了至少一半的负载压力

    我写了一篇评测与搭建教程,感兴趣的可以 前往查看


    最后附上自建 DoH 地址 前往获取

    方便大家研究对比使用,对稳定性不做承诺,虽然已经从 2019 年运行到现在了...

    24 条回复  ?  2023-11-01 18:54:33 +08:00
    PMkol
        1
    PMkol  
    OP
       2022-07-06 01:09:06 +08:00
    唯一不足的是,部分域名的 NS 服务器不看 ECS 只看请求来源 IP ,例如知名的 akamai ,这会导致如果 DNS 服务器距离访问者距离较远,会解析到较远的 CDN 节点。理论上除非全世界建节点,否则无解,不知道有没有更好的办法,还请大神们指点。
    Bingchunmoli
        2
    Bingchunmoli  
       2022-07-06 02:35:15 +08:00 via Android
    不知道和其他无污染的 dns 有什么优缺点,没有听说过 mosdns 是我孤陋寡闻了,希望有个对比有个替换的念头(支持 edns 一般是国内走 dnspod ,其他似乎就没了)
    PMkol
        3
    PMkol  
    OP
       2022-07-06 03:30:48 +08:00
    @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 程序,完全是通过逻辑规则解决的。
    imoo
        4
    imoo  
       2022-07-06 09:59:35 +08:00   ?? 1
    能出个 openwrt 的插件就好了
    laincat
        5
    laincat  
       2022-07-06 10:24:08 +08:00 via iPhone
    @imoo 早就有,不过还是需要像 OP ,这样的辅助脚本来完成一个适合自己用的配置文件。
    laincat
        6
    laincat  
       2022-07-06 10:29:02 +08:00 via iPhone
    其实目前也主要是:路由器上架,内网小主机(直接或容器),然后公网(直接或容器)

    配置文件其实也算挺通用的。根据 OP 的改改小部分就能爽了。
    Bingchunmoli
        7
    Bingchunmoli  
       2022-07-06 17:31:23 +08:00
    @PMkol 国内外分流的通常策略就是海外为准,或者国内解析为 facebook 等已知污染 IP 然后使用海外,或者域名等规则,2133.host 属于少数情况,如何保证该域名不是污染的解析的呢,逻辑规则如何判定,而且目前是否有人维护。 国内直连 github 可以使用反向代理和 hosts ,最优办法依然是 代理,目前是 clash 会解析 198.18.0.0,前置加入 ad home 去广告,而且因为 windows 强制 53 端口,我是无污染选择 DOH ,国内走 53 的, 目前远程 DNS 主要使用 /t/832145 痛点就是 dns 层层解析的问题
    PMkol
        8
    PMkol  
    OP
       2022-07-06 18:18:44 +08:00
    @Bingchunmoli
    规则方面,源码里已经写的很清楚了,建议你自己接入尝试下效果,而且我更倾向在内网自建,所以我发的不光是 DOH 服务器地址,更多是让你可以随时在家里自己部署 DNS 的脚本

    维护方面,这个 DNS 本身就是我自己在用的,之前也就几十个朋友在用,觉得服务器闲置大量资源有点浪费了,所以就做了个 DOH ,我的评测链接里有数据截图,稳定性自己判断,所以这个 DOH 完全就是我自己在用的东西,并不是用来做公共 DNS 引流其他业务的,没有商业目的
    xuesumin
        9
    xuesumin  
       2022-07-06 19:22:06 +08:00 via iPhone
    @PMkol 请教一下,在家虚拟机部署一个这个后,如何和 openwrt 配合使用,尤其是 passwall 翻墙如何设置
    PMkol
        10
    PMkol  
    OP
       2022-07-06 22:20:51 +08:00
    @xuesumin 我家里的是 padavan ,openwrt 应该类似,和你说下思路

    首先虚拟机一定保证 24 小时在线,不然使用起来会很不方便,而且要桥接网卡,让内网能通过 IP 访问到

    然后 openwrt 里,一般都有 smartdns 一类的功能,不同版本的设置可能不一样,把国内国外的 DNS 都指向到你自己这台虚拟机上,国内分流建议你再加一条本地的 DNS ,防止虚拟机挂掉网直接崩了
    xuesumin
        11
    xuesumin  
       2022-07-06 22:43:07 +08:00 via iPhone
    @PMkol 好的,谢谢!我试一试
    xuesumin
        12
    xuesumin  
       2022-07-06 22:47:44 +08:00 via iPhone
    @PMkol 还有一个问题,如果直接使用您现成的 DOH ,例如我是南方电信,您 DOH 是北方联通,这样效果就削弱很多?
    PMkol
        13
    PMkol  
    OP
       2022-07-06 22:57:57 +08:00
    @xuesumin 建议你只用我的 DOH 解析海外网站,速度据南方用户反馈还可以,国内网站建议还是直接用大厂的 DNS 或者本地 DNS ,效果都一样,但我的服务器在北方,再过一道 CDN 会有一些延迟,虽然基本感觉不到
    xuesumin
        14
    xuesumin  
       2022-07-06 23:02:41 +08:00 via iPhone
    @PMkol 好的??
    xuesumin
        15
    xuesumin  
       2022-07-07 06:55:43 +08:00
    @PMkol 如果不是外网 VPS 的话,是不是需要关闭 ECS?
    Bunnyranch
        16
    Bunnyranch  
       2022-07-07 11:06:55 +08:00
    非常有用! 我只会改 3.x 版本的配置文件,到 4.x 之后一直用不好了.
    自己一改动 4.x 版本的 ttl/lazy cache 这些设置就跑不起来...还一直停在 3.x 版本呢
    PMkol
        17
    PMkol  
    OP
       2022-07-07 13:04:23 +08:00
    @xuesumin 是的,必须关闭
    xuesumin
        18
    xuesumin  
       2022-07-10 16:35:11 +08:00
    @PMkol 用了几天,感觉不错!谢谢!请教一下,如果将来 MOSDNS 更新了或者您更新了,我该如何更新 DNS 服务器虚拟机?
    PMkol
        19
    PMkol  
    OP
       2022-07-10 23:13:50 +08:00
    @xuesumin 关于 easymosdns ,我已经更新 3 个版本了,每个版本之间,只需要覆盖就可以完成升级。如果 mosdns 产生了像 v3-v4 这样要改动配置文件格式的升级,那我的脚本也就不能用了。
    关于 mosdns ,你直接关闭程序,覆盖原有二进制文件就行了。
    HalloCQ
        20
    HalloCQ  
       2022-07-26 11:48:13 +08:00
    mosdns 的 doh 支持不完善,我看 issues 有人提过此类问题.
    我发现 doh 有问题是我在爱快上使用 mosdns 的 doh,会不能工作,而使用 adguardhome 的 doh 可以正常使用
    PMkol
        21
    PMkol  
    OP
       2022-07-26 23:11:57 +08:00
    @HalloCQ 去 github 上向 mosdns 作者反馈下,目前我对外开放的那个 DoH 的用户反馈,因为不支持 HTTP1.0 ,所以一些客户端用不了
    hoor
        22
    hoor  
       2022-08-06 16:12:34 +08:00
    已经在 vps 部署了一下,没开 doh ,测试一下,效果还是比较明显,之前用双 adguard home ,现在一起用,还是比较方便,按照步骤来,自用完全没有问题
    nicai
        23
    nicai  
       202 天前
    @PMkol mosdns 已经升级到 v5 了,性能上好像提升不少。请问 ecs dns 项目有否更新计划?
    PMkol
        24
    PMkol  
    OP
       191 天前
    @nicai V5 只适合本地部署场景,且很多功能被阉割,所以不做支持,性能上几乎没有差异
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3208 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 12:34 · PVG 20:34 · LAX 05:34 · JFK 08:34
    Developed with CodeLauncher
    ? Do have faith in what you're doing.


    http://www.vxiaotou.com