最近心血来潮,想搞 mosdns 可视化页面,所以,利用 opencode+gpt5.6 进行了vibe coding本项目,基于 mosdns 插件扩展出来的 web ui。

背景

在移动宽带网络下,有时会遇到一种很难解释的问题:网络连接正常,国内网站也能打开,但访问国外域名时不时解析不出来,详情可以看这篇文章:从 DNS 异常排查到使用 mosdns v5 对国外网站进行分流解析

处理流程

将 DNS 放在局域网入口统一处理:国内域名走本地上游,国外域名走远程上游;白名单、黑名单和强制路由规则都可以在 WebUI 中动态调整。

解决问题的关键:不再依赖 53 端口的传统 DNS 查询

对于需要走远程线路的域名,项目通过 DoH(DNS over HTTPS)访问上游 DNS。查询被封装在 HTTPS 中,使网络侧无法像处理普通 53 端口 DNS 那样随意劫持或篡改结果。

保留了排查问题需要的能力:本地和远程线路分别缓存,规则实时生效,查询日志会记录最终采用的上游。某个域名打不开时,可以看到它走了哪条线路,而不是反复换 DNS、换网络、碰运气。

开源地址

https://github.com/luoye663/mosdns-controller

安装教程均在项目的 README.md 中。

功能概览

  • 动态白名单、黑名单、强制 local/remote 路由,规则发布不重启 DNS 监听。
  • 独立 local/remote DNS 缓存,黑名单检查位于缓存之前。
  • 查询审计、SQLite 统计、SSE 实时查询流,以及每次实际采纳响应的 upstream_tag
  • controller 不可用时,mosdns 仍使用最近成功持久化的规则快照继续解析。

项目截图

概况: 概况

查询日志: 查询日志

规则管理: 规则管理

上游DNS: 上游DNS