1 为何在 Linux 使用 Mihomo
许多开发者与运维人员会在云端 VPS或桌面 Linux上工作。相较于 Windows 与 macOS 上琳瑯满目的图形客户端,Linux 环境往往更重视资源占用低、可脚本化、可无人值守。把代理核心当成系统服务在后台运行,搭配规则分流,就能让 git、curl、容器镜像拉取等流量在需要时走节点,其余时间维持直连。
Mihomo(即 Clash.Meta)是活跃维护的 Clash 分支,语法与多数 Clash 教程相通,并支持较新的传输协议与高级功能。通过 systemd 托管程序,可在开机时自动启动、崩溃后自动重启,并将标准输出写入日志文件,方便在服务器上排查。这套组合特别适合「只有 SSH、没有桌面」的场景,也适合本机开发者在 WSL 或实体机上长驻一个本机代理埠。
若您手边已有机场订阅但格式不是原生 YAML,可先参考站内的订阅转换教程,把链接转成 Mihomo 可读的配置片段,再并入本文的模板。
Fedora、RHEL 与其衍生发行版同样内置 systemd,流程与本文一致;若环境启用 SELinux,需确认 Mihomo 可执行文件与 /etc/mihomo 的标签(context)允许读写,否则服务可能启动后立刻因权限被拒而失败。防火墙层面,仅本机使用时请维持 API 与混合埠绑在 127.0.0.1,并将 allow-lan 设为 false;若必须对局域网或管理网段开放,请用 UFW、firewalld 或云端安全群组白名单来源 IP,避免将控制接口暴露到整个公网。
2 下载与二进制安装
请先确认 CPU 架构。大多数云端主机为 amd64;树莓派、部分 ARM 云主机则为 arm64。在终端执行 uname -m,看到 x86_64 即对应 amd64 发行包。
创建目录
建议将可执行文件放在 /usr/local/bin,配置集中于 /etc/mihomo,日志放在 /var/log/mihomo,权限与备份都较直观。
sudo mkdir -p /etc/mihomo
sudo mkdir -p /var/log/mihomo
获取发布包
至 Mihomo 官方 GitHub Releases 下载对应平台的压缩包(下列版本号请改为当前最新):
# 范例:amd64(请替换为实际最新链接)
wget https://github.com/MetaCubeX/Mihomo/releases/download/v1.18.0/mihomo-linux-amd64-v1.18.0.gz
gunzip mihomo-linux-amd64-v1.18.0.gz
sudo mv mihomo-linux-amd64-v1.18.0 /usr/local/bin/mihomo
sudo chmod +x /usr/local/bin/mihomo
.deb 安装;若您需要跨发行版一致流程,单一二进制包+手动更新通常最单纯。安装完成后可用 mihomo -v 确认版本。
3 最小 YAML 配置(Clash 兼容)
Mihomo 启动时会读取配置目录下的 config.yaml。下列模板提供混合埠(HTTP/SOCKS5)、对外 API(供面板或脚本切换节点)、以及基础 DNS,规则仅示范「中国大陆 IP 直连、其余走代理群组」。您需要把真实节点写进 proxies,并把节点名称加入 proxy-groups 的 PROXY 群组。
# 外部控制器(网页面板 / REST API)
external-controller: 127.0.0.1:9090
secret: "请改成强密码"
mixed-port: 7890
allow-lan: false
mode: rule
log-level: info
ipv6: false
dns:
enable: true
listen: 127.0.0.1:1053
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
nameserver:
- 223.5.5.5
- 119.29.29.29
fallback:
- https://8.8.8.8/dns-query
- https://1.1.1.1/dns-query
proxies: []
# - name: "my-node"
# type: ss
# server: example.com
# port: 443
# cipher: aes-256-gcm
# password: "secret"
proxy-groups:
- name: PROXY
type: select
proxies:
- DIRECT
rules:
- GEOIP,CN,DIRECT
- MATCH,PROXY
将档案储存为 /etc/mihomo/config.yaml 后,务必检查 YAML 缩排(仅能使用空格,不可混用 Tab)。若您打算在局域网内其他装置使用这台机器的代理,再把 allow-lan 改为 true,并搭配防火墙只开放信任网段。
external-controller 预设应绑在 127.0.0.1。若改为 0.0.0.0 并对公网开放,等于把切节点、看连接的 API 暴露在外,务必搭配防火墙、强密码或仅内网存取。
启动前自检
交给 systemd 托管之前,先用下列命令检查配置语法,可避免服务因 YAML 错误而反复重启:
sudo /usr/local/bin/mihomo -t -d /etc/mihomo
测试通过后再执行 systemctl enable --now mihomo。之后每次修改 config.yaml,可用 sudo systemctl restart mihomo 重新载入。
想强化 DNS 隐私与防泄漏,可延伸阅读Meta 核心 DNS 与 FakeIP 实践要点,再依环境微调 dns 区块。
4 systemd 服务化配置
建立单元档,让系统在网路就绪后启动 Mihomo,并在程序退出时自动重启。
sudo nano /etc/systemd/system/mihomo.service
写入下列内容(-d 指向配置目录):
[Unit]
Description=Mihomo Daemon (Clash.Meta compatible)
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/mihomo -d /etc/mihomo
Restart=always
RestartSec=5
StandardOutput=append:/var/log/mihomo/output.log
StandardError=append:/var/log/mihomo/error.log
[Install]
WantedBy=multi-user.target
mihomo),将 /etc/mihomo 与日志目录拥有者改为该帐号,并把 User= 改成同一使用者。若需 TUN 透明代理,常见作法仍是以 root 或具 CAP_NET_ADMIN 的权限执行,请依安全政策取舍。
5 服务管理常用命令
修改单元档或变更设定后,依序执行:
sudo systemctl daemon-reload
sudo systemctl enable --now mihomo
sudo systemctl status mihomo
状态显示 active (running) 即表示程序已常驻。更新 config.yaml 后可执行 sudo systemctl restart mihomo 套用。需要追踪错误时,除了查看 /var/log/mihomo/error.log,也可使用 journalctl -u mihomo -f 即时观察。
6 系统与终端代理
Mihomo 监听 mixed-port 后,应用程式不会自动走代理,除非它们读取环境变数或内建代理设定。
目前工作阶段暂时生效
export http_proxy="http://127.0.0.1:7890"
export https_proxy="http://127.0.0.1:7890"
export ALL_PROXY="socks5://127.0.0.1:7890"
写入登入脚本(仅影响目前使用者)
将上述两行(或依需求含 ALL_PROXY)附加到 ~/.bashrc 或 ~/.zshrc,再执行 source ~/.zshrc。
简易验证
curl -I https://www.google.com
若已正确填入节点且规则匹配,通常会看到 HTTP/2 200 类回应。若仍逾时,请先确认服务状态、本机埠是否被占用,以及规则是否将目标网域导向 PROXY。
若希望整机流量无需手动设定环境变数,可研究 Mihomo 的 TUN 模式;图形化客户端方面可参考Clash Verge Rev 与 TUN 模式说明,与纯命令列部署可并存于不同使用情境。
7 常见问题排查
- 服务无法启动:执行
journalctl -u mihomo -n 80 --no-pager。常见原因是 YAML 语法错误、proxies为空却将流量导向不存在的节点,或埠号被其他程序占用。 - 连上本机埠但无法出网:检查
proxy-groups是否已包含实际节点名称,并确认订阅或手写节点可连接。 - 需要远端操作面板:若将 API 监听改为
0.0.0.0,请用防火墙限制来源 IP(例如ufw allow from 您的办公室 IP to any port 9090),避免公开互联网裸奔。 - DNS 异常:确认没有其他服务占用与
dns.listen相同的埠;必要时可改用较少冲突的埠并在系统或 TUN 场景中配合转发。
8 总结
在 Linux 上安装 Mihomo 并以 systemd 托管,是把代理能力「基础设施化」的务实践法:一次配置后,背景常驻、开机自启、日志可追踪,对服务器与开发机都适用。配置文件维持 Clash 体系惯用的 YAML 结构,也能降低学习成本。
相较仅在浏览器装外挂的做法,本机或 VPS 上的规则引擎能统一处理命令列与脚本流量;若您也希望在桌面环境用图形界面管理订阅与一键 TUN,可以搭配站上的下载页选择合适客户端,与本文的命令列方案互补。