Skip to content

系统诊断

MSM 提供全面的系统诊断工具,帮助你快速发现和定位问题。

Web 界面诊断

点击 侧边栏 → 系统诊断 进入诊断页面。

系统会自动运行一系列检测,并以可视化方式展示结果:

  • 通过 — 检测项正常
  • ⚠️ 警告 — 检测项存在潜在问题
  • 失败 — 检测项存在严重问题

命令行诊断

在终端中运行 msm doctor 命令进行快速诊断:

bash
msm doctor

诊断项目

1. 系统环境

检查运行环境的基本条件:

检测项说明通过条件
操作系统检查 OS 类型和版本Linux / macOS
CPU 架构检查处理器架构amd64 / arm64
可用内存检查剩余内存≥ 256MB
磁盘空间检查可用磁盘空间≥ 1GB
用户权限检查运行权限root 或 sudo

2. 端口检查

检查关键端口的占用情况:

端口服务说明
53MosDNSDNS 服务端口
7777MSMWeb 管理界面
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

内存不足

如果检测到可用内存不足:

  1. 检查系统中是否有不必要的进程占用内存
  2. 考虑增加系统内存或启用 swap
  3. 减少 DNS 缓存大小以降低内存占用

诊断日志导出

可以将诊断结果导出用于反馈问题:

  1. 在 Web 诊断页面点击 导出诊断报告
  2. 或在终端运行:
    bash
    msm doctor 2>&1 | tee msm-diagnostic.log
  3. 将诊断报告附在 GitHub Issue 中提交

下一步