Linux 安装 Clash:桌面发行版与命令行环境部署 mihomo 全流程

覆盖桌面发行版的图形客户端安装,以及服务器与 WSL 等纯命令行环境下 mihomo 内核的部署、开机自启与代理验证步骤。

先选路线:图形客户端,还是 mihomo 内核

Linux 上的 Clash 生态分两层。底层是内核,负责解析配置、分流流量,目前活跃维护的内核是 mihomo(原 Clash Meta);上层是图形客户端,把内核包进窗口,提供订阅管理、节点切换与系统代理开关。两条路线对应两类环境:

两条路线共用同一份 YAML 配置语法,订阅链接也通用,日后换路线不必重新整理配置。下文分别给出完整步骤。

桌面发行版:安装图形客户端

Debian / Ubuntu 系(deb 包)

从下载页取得对应架构的 deb 包后,在终端执行:

sudo dpkg -i clash-verge_*_amd64.deb
sudo apt-get -f install   # 仅当 dpkg 报依赖错误时执行

装完从应用菜单启动,在订阅页粘贴订阅链接,更新后选择节点,打开「系统代理」开关即可。GNOME 与 KDE 的系统代理由客户端自动写入,浏览器与大部分桌面应用随即走代理。

Fedora / RHEL 系(rpm 包)

sudo dnf install ./clash-verge-*.x86_64.rpm

dnf 会自动补齐依赖,装完后的订阅导入与开关流程与 deb 一致。

下载前先确认架构:绝大多数台式机与笔记本是 x86_64(amd64),ARM 设备选 arm64。终端执行 uname -m 即可查看当前机器架构。

个别应用不读系统代理设置(部分命令行工具、自带网络栈的桌面应用),这时可开启客户端的 TUN 模式,由内核在系统层接管全部 TCP/UDP 流量。TUN 需要创建虚拟网卡,客户端会请求管理员授权。

命令行环境:部署 mihomo 内核

服务器与 WSL 没有窗口,直接跑内核。整个过程四步:

  1. 获取二进制

    从下载页的内核区取得 mihomo 的 Linux 构建,按架构选 linux-amd64 或 linux-arm64,解压后是单个可执行文件,无其他依赖。

  2. 安装到系统路径

    执行 sudo install -m 0755 mihomo /usr/local/bin/mihomo,把文件放到标准路径并赋予执行权限。

  3. 准备配置目录

    约定目录 /etc/mihomo,在其中放 config.yaml。订阅链接的原始内容不能直接当配置用,需写成 proxies、proxy-groups、rules 三段;更省事的写法是用 proxy-providers 直接引用订阅地址,内核会自动拉取并定时更新。

  4. 前台试运行

    先执行 mihomo -d /etc/mihomo 前台跑一次,确认配置无报错、端口正常监听,再交给 systemd 托管。

一份最小可用配置如下:

mixed-port: 7890
allow-lan: false
external-controller: 127.0.0.1:9090
proxy-providers:
  airport:
    type: http
    url: "https://example.com/subscribe"
    interval: 86400
    path: ./providers/airport.yaml

mixed-port 同时接受 HTTP 与 SOCKS5 请求;external-controller 是内核的 REST 接口,Web 面板靠它读写运行状态,只监听本机回环地址即可。

systemd 托管与开机自启

新建单元文件 /etc/systemd/system/mihomo.service:

[Unit]
Description=mihomo kernel
After=network-online.target
Wants=network-online.target

[Service]
ExecStart=/usr/local/bin/mihomo -d /etc/mihomo
Restart=on-failure
LimitNOFILE=1048576

[Install]
WantedBy=multi-user.target

随后注册并启动:

sudo systemctl daemon-reload
sudo systemctl enable --now mihomo
journalctl -u mihomo -f   # 跟踪运行日志

enable --now 一条命令同时完成开机自启注册与立即启动。此后每次修改配置,执行 sudo systemctl restart mihomo 使其生效。

TUN 模式的权限

TUN 需要创建虚拟网卡,普通用户默认无此权限。两种做法:一是按上面的单元文件直接以 root 运行;二是给二进制授予网络管理能力,再以普通用户身份运行:

sudo setcap 'cap_net_admin,cap_net_bind_service=+ep' /usr/local/bin/mihomo

部分容器环境(OpenVZ、未放权的 LXC)没有 /dev/net/tun 设备,TUN 不可用,只能退回 mixed-port 加应用级代理。若 systemd 以非 root 用户运行,单元文件里需补 AmbientCapabilities=CAP_NET_ADMIN

验证代理是否生效

最直接的办法是带代理参数发一次请求:

curl -x http://127.0.0.1:7890 https://api.ip.sb

返回的出口 IP 与所选节点地区一致,说明链路已通。也可以把代理写进 shell 环境,让后续命令统一走代理:

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

想要图形界面,可挂 Web 面板:把 metacubexd、zashboard 或 yacd 这类静态面板文件放进配置目录的 ui 子目录,浏览器访问 http://127.0.0.1:9090/ui,即可查看活动连接、切换节点、测试延迟。面板只是内核接口的前端,关掉页面不影响代理运行。

若 curl 返回超时,先确认内核进程在跑、端口在监听,再检查配置里的 mixed-port 是否与请求端口一致;出口 IP 不变则多为分流规则把目标域名走了直连,把规则模式临时切到全局再测一次即可定位。

WSL 与服务器的两点差异

WSL2

默认 NAT 网络下,WSL 与 Windows 各有独立的回环地址。代理跑在 WSL 里时,Windows 侧要连它,需在配置里设 allow-lan: true 并用 WSL 的 IP 访问。更顺手的做法是把客户端装在 Windows 端,WSL 里 export 代理指向 Windows 主机 IP——/etc/resolv.conf 中的 nameserver 即主机地址。启用 WSL 的 mirrored 网络模式后,两侧共享 localhost,上述绕路全部消失。

服务器

服务器没有本地浏览器,面板通过 SSH 端口转发访问:

ssh -L 9090:127.0.0.1:9090 user@your-server

保持该会话,本机浏览器再访问 9090 端口的 ui 路径即可。

external-controller 不要监听 0.0.0.0 暴露到公网。确有远程管理需要时,在配置里设 secret 字段加访问口令,并用防火墙限制来源 IP。

常见问题速查

配置字段的完整写法可查阅站内 YAML 手册;图形客户端的订阅导入细节与 Windows、macOS 基本一致,使用文档里有对应章节。

下载Clash