你是否还在为 DNS 污染问题烦恼?是否厌倦了国外网站访问慢、解析不准确的问题?
今天给大家介绍一个开源项目 —— EasyMosdns,它能让你在几分钟内搭建一台支持 ECS 的无污染 DNS 服务器。
什么是 EasyMosdns?
EasyMosdns 是基于 Mosdns/Mosdns-x 制作的 EDNS 部署方案,内置中国大陆地区优化规则与分流 API,满足DNS 日常使用场景。简单来说,它是一个开箱即用的 DNS 解决方案。
传统的 DNS 配置往往需要深度的网络知识和复杂的配置过程。而 EasyMosdns 把这些复杂的工作都封装好了,让普通用户也能轻松搭建专业级的 DNS 服务器。
为什么选择 EasyMosdns?
解决 DNS 污染痛点
DNS 污染是国内网络环境的老大难问题。当你访问某些网站时,DNS 查询可能返回错误的 IP 地址,导致网站无法访问或访问速度极慢。
EasyMosdns 通过智能分流策略完美解决这个问题。它能自动识别域名类型,对不同域名采用不同的解析策略:
- 国内域名使用国内 DNS 服务器解析
- 海外域名通过无污染通道解析
- 可疑域名自动走分流 API 确保解析准确性
支持 ECS 优化 CDN 访问
EDNS Client Subnet (ECS) 是 DNS 的一个扩展机制,允许递归 DNS 解析器指定客户端的子网信息,帮助 CDN 选择离客户端最近的服务器。
简单理解,ECS 就像给 DNS 查询加了个「定位服务」。当你访问一个使用 CDN 的网站时,DNS 服务器会根据你的位置信息,返回离你最近的 CDN 节点 IP。这样网站加载速度会更快。
EasyMosdns 内置了针对中国大陆优化的 ECS 配置,确保你能获得最佳的访问体验。
核心功能特性
智能分流机制
EasyMosdns 采用多层分流策略:
- 本地上游并发请求:同时向 DNSPod 和 AliDNS 发起查询,选择最快响应
- 远程上游优先请求:优先使用 EasyMosDNS 分流 API(DoH)
- 备用上游超时处理:当主要上游超时时,自动切换到 GoogleDNS 和 OpenDNS
这种多重保障机制确保了 DNS 解析的速度和稳定性。
隐私保护机制
对于污染列表和自定义列表中的域名,EasyMosdns 在请求上游 DNS 时会自动替换附带的用户 IP 子网信息,保护用户隐私。
强化 Hosts 功能
传统 hosts 文件功能有限,而 EasyMosdns 提供了增强版:
- 域名支持多个 IP 地址
- 完整支持 IPv6
- 支持域名通配符匹配
缓存优化策略
EasyMosdns 提供了两套缓存策略:
- 局域网缓存:针对内网环境优化,缓存时间较短
- 广域网缓存:针对公网环境优化,支持 Redis 持久化
缓存系统还支持自动更新和压缩存储,在保证解析速度的同时节省存储空间。
恶意广告过滤
内置轻度广告过滤功能,可以屏蔽常见的恶意广告域名。用户还可以通过白名单自定义过滤规则。
自动规则更新
支持规则自动更新机制,提供直连和 CDN 两种下载方式:
- 直连方式:适合网络环境较好的用户
- CDN 方式:适合网络环境一般的用户
安装使用教程
环境要求
在开始安装前,请确保满足以下条件:
- 已安装 Mosdns 4.5.3 版本或 Mosdns-x
- Mosdns 工作目录为
/etc/mosdns
- 已备份现有的 config 配置文件
快速安装
- 下载源码包
1 | wget https://mirror.apad.pro/dns/easymosdns.tar.gz |
- 备份并替换配置
1 | mv /etc/mosdns /etc/mosdns.old |
- 重新安装并启动服务
1 | mosdns service install -d /etc/mosdns -c config.yaml |
看到 service is running
信息就说明部署成功了。
- 配置防火墙
开启必要的防火墙端口:
- UDP 53:DNS 标准端口
- TCP 53:DNS over TCP
- TCP 80、443:HTTP/HTTPS
- TCP 853:DNS over TLS
高级配置指南
自定义 Hosts 规则
编辑 /etc/mosdns/hosts.txt
文件:
1 | dns.google 8.8.8.8 8.8.4.4 2001:4860:4860::8888 |
注意:格式与传统 hosts 不同,域名在前,IP 在后,支持多个 IP 地址。
配置强制 ECS
对于某些需要获得最佳 CDN 效果的域名,可以强制附带本地 ECS:
编辑 /etc/mosdns/ecs_cn_domain.txt
:
1 | domain:github.com |
配置上游 DNS 服务器
在 /etc/mosdns/config.yaml
中可以自定义上游服务器:
本地上游配置:
1 | - tag: forward_local |
远程上游配置:
1 | - tag: forward_remote |
如果网络环境需要代理,可以取消 socks5
配置的注释。
启用 Redis 缓存
对于高并发环境,建议启用 Redis 缓存:
- 安装 Redis 服务
- 修改配置文件,取消 Redis 配置注释:
1 | redis: "redis://127.0.0.1:6379/0" |
配置自动更新规则
使用 crontab 设置定时任务:
1 | crontab -e |
添加以下规则(每日 5 点通过 CDN 更新):
1 | 0 5 * * * /etc/mosdns/rules/update-cdn |
支持 DoH 和 DoT
启用 DNS over HTTPS:
取消配置文件中以下部分的注释:
1 | - protocol: http |
建议使用 Nginx 反向代理:
1 | server { |
启用 DNS over TLS:
取消以下配置注释并指定 SSL 证书:
1 | - protocol: tls |
性能优化建议
根据环境选择缓存策略
- 家庭环境:使用默认的内存缓存即可
- 企业环境:建议启用 Redis 缓存,提高并发处理能力
- 公共服务:开启压缩存储,节省内存占用
上游 DNS 选择策略
- 国内用户:优先使用 AliDNS + DNSPod 组合
- 海外用户:推荐 GoogleDNS + CloudflareDNS 组合
- 网络受限环境:配置 SOCKS5 代理确保连通性
定制化分流规则
EasyMosdns 支持高度定制化的分流规则。你可以:
- 根据域名关键字进行分流
- 按照 IP 段进行分流
- 设置特定域名走特定上游
常见问题排查
服务启动失败
- 检查端口是否被占用:
netstat -tlnp | grep :53
- 确认配置文件语法正确:
mosdns start --dry-run -c /etc/mosdns/config.yaml
- 查看详细错误信息:
journalctl -u mosdns -f
DNS 解析异常
- 测试本地解析:
dig @127.0.0.1 google.com
- 检查上游连通性:
ping 8.8.8.8
- 查看分流日志确认规则生效
性能问题
- 监控缓存命中率
- 调整并发查询数量
- 优化上游 DNS 服务器选择
项目生态与社区
EasyMosdns 基于 Mosdns-x 项目开发,拥有活跃的开源社区。项目特点:
- 完全开源:代码透明,可自由定制
- 持续更新:规则库定期更新,紧跟网络环境变化
- 社区支持:Telegram 群组提供技术支持
总结
EasyMosdns 是一个功能强大且易于使用的 DNS 解决方案。它不仅解决了 DNS 污染问题,还通过 ECS 优化、智能缓存、自动更新等功能,为用户提供了完整的 DNS 服务体验。
无论你是网络管理员想要部署企业 DNS 服务,还是技术爱好者希望优化家庭网络环境,EasyMosdns 都是一个值得尝试的选择。
赶快试试吧,几分钟就能让你告别 DNS 烦恼!