系统诊断
MSM 提供全面的系统诊断工具,帮助你快速发现和定位问题。
Web 界面诊断
点击 侧边栏 → 系统诊断 进入诊断页面。
系统会自动运行一系列检测,并以可视化方式展示结果:
- ✅ 通过 — 检测项正常
- ⚠️ 警告 — 检测项存在潜在问题
- ❌ 失败 — 检测项存在严重问题
命令行诊断
在终端中运行 msm doctor 命令进行快速诊断:
bash
msm doctor诊断项目
1. 系统环境
检查运行环境的基本条件:
| 检测项 | 说明 | 通过条件 |
|---|---|---|
| 操作系统 | 检查 OS 类型和版本 | Linux / macOS |
| CPU 架构 | 检查处理器架构 | amd64 / arm64 |
| 可用内存 | 检查剩余内存 | ≥ 256MB |
| 磁盘空间 | 检查可用磁盘空间 | ≥ 1GB |
| 用户权限 | 检查运行权限 | root 或 sudo |
2. 端口检查
检查关键端口的占用情况:
| 端口 | 服务 | 说明 |
|---|---|---|
| 53 | MosDNS | DNS 服务端口 |
| 7777 | MSM | Web 管理界面 |
| 7890 | 代理服务 | HTTP 代理端口 |
| 7891 | 代理服务 | SOCKS5 代理端口 |
| 7892 | 代理服务 | 混合代理端口 |
| 9090 | 代理服务 | 外部控制端口 |
端口冲突
如果检测到端口被其他进程占用,诊断工具会显示占用进程的 PID 和名称,帮助你快速定位问题。
3. 服务状态
检查各组件的运行状态:
| 检测项 | 说明 |
|---|---|
| MSM 服务 | 检查 MSM 主进程是否正常运行 |
| MosDNS | 检查 DNS 服务是否正常 |
| Clash | 检查 Clash 代理内核状态 |
| Sing-Box | 检查 Sing-Box 代理内核状态 |
4. 配置验证
检查配置文件的有效性:
| 检测项 | 说明 |
|---|---|
| MSM 配置 | 验证 MSM 系统配置格式 |
| MosDNS 配置 | 验证 MosDNS YAML 配置语法 |
| 代理配置 | 验证 Clash / Sing-Box 配置 |
| 规则文件 | 验证分流规则文件完整性 |
5. 网络连通性
测试网络连接状况:
| 检测项 | 说明 |
|---|---|
| DNS 解析 | 测试 DNS 解析是否正常 |
| 国内连通性 | 测试国内网络连通性 |
| 代理连通性 | 测试代理节点的连通性 |
| 上游 DNS | 测试上游 DNS 服务器响应 |
常见诊断问题
端口 53 被占用
bash
# 查看端口 53 占用
sudo lsof -i :53
# Linux 上常见是 systemd-resolved 占用
# 解决方法:
sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved一键安装脚本在 Linux + systemd 环境下会先提示风险: 交互运行时会询问是否自动处理,非交互运行(如
curl | bash)会在提示后默认自动处理。 Alpine / OpenRC 等非 systemd 环境请按上面的方式手动处理。
端口 7777 被占用
bash
# 查看端口占用
sudo lsof -i :7777
# 方法一:停止占用的进程
# 方法二:修改 MSM 端口
msm serve -p 8080权限不足
bash
# DNS 端口 53 需要 root 权限
sudo msm serve
# 或使用系统服务方式运行
sudo msm service install内存不足
如果检测到可用内存不足:
- 检查系统中是否有不必要的进程占用内存
- 考虑增加系统内存或启用 swap
- 减少 DNS 缓存大小以降低内存占用
诊断日志导出
可以将诊断结果导出用于反馈问题:
- 在 Web 诊断页面点击 导出诊断报告
- 或在终端运行:bash
msm doctor 2>&1 | tee msm-diagnostic.log - 将诊断报告附在 GitHub Issue 中提交