Linux 科学上网教程:Clash Verge Rev、mihomo 命令行与系统代理

教程 · 发布 2026-11-05 · 更新 2026-11-05 · 约 4053 字 · 10 分钟

Linux 上分两种情况:有桌面环境(Ubuntu、Fedora、Arch 等日常用)直接装 Clash Verge Rev,和 Windows / Mac 体验一致;无桌面的服务器用 mihomo 命令行内核,配合 systemd 常驻,再用环境变量让 apt、pip、Docker 走代理。两种方法都只需要一条机场的 Clash 订阅。

桌面:Clash Verge Rev

安装

Releases 页提供 .deb(Debian / Ubuntu)、.rpm(Fedora)和 AppImage(通用)。

sudo dpkg -i Clash.Verge_x.x.x_amd64.deb

缺依赖时 sudo apt -f install。Fedora 用 sudo rpm -i。Arch 用 AUR 的 clash-verge-rev-bin。AppImage 加执行权限后直接运行,不需要安装但没有桌面图标。打不开 GitHub 看 解决方法。

导入与开启:分步骤

  1. 机场用户中心复制 Clash 订阅。没有订阅先看 机场推荐排行榜。
  2. 「订阅」页粘贴,导入。预期:出现机场卡片,显示流量和到期。
  3. 「代理」页选规则模式和节点,先测速。预期:节点显示延迟。
  4. 「设置」页开系统代理。预期:Firefox / Chrome 打开 Google 正常。

设置项逐项说明

  • 系统代理:GNOME 和 KDE 会写入桌面环境的代理设置,大部分 GUI 程序自动生效;其他桌面环境(XFCE、i3)不一定识别,需要用环境变量,见后文。
  • TUN 模式:需要内核文件有 CAP_NET_ADMIN 权限,设置页有「授权内核」按钮,点一次输入密码即可。开 TUN 后终端命令也走代理,不用再配环境变量。
  • 开机自启:写入用户的 autostart。
  • 订阅自动更新:卡片右键编辑,间隔 1440 分钟。
  • DNS 覆写:网页打不开时开启,填 https://1.1.1.1/dns-query。
  • 混合端口:默认 7897,终端配代理时用。

服务器:mihomo 命令行

安装与配置:分步骤

  1. 从 GitHub MetaCubeX/mihomo 的 Releases 下载对应架构的二进制(x86_64 选 linux-amd64,ARM 服务器选 linux-arm64),解压放到 /usr/local/bin/mihomo,chmod +x。预期:mihomo -v 输出版本号。
  2. 建目录 /etc/mihomo,把机场的 Clash 订阅内容保存为 config.yaml:
curl -L -A "clash" "订阅链接" -o /etc/mihomo/config.yaml

加 -A "clash" 是因为部分机场按 User-Agent 返回不同格式。预期:文件以 port: 或 mixed-port: 开头的 YAML。

  1. 下载 GeoIP / GeoSite 数据:首次运行 mihomo 会自动下载到 /etc/mihomo,服务器连不上 GitHub 时手动下载 geoip.dat、geosite.dat 放进去。
  2. 写 systemd 服务 /etc/systemd/system/mihomo.service:
[Unit]
Description=mihomo
After=network.target
[Service]
ExecStart=/usr/local/bin/mihomo -d /etc/mihomo
Restart=always
[Install]
WantedBy=multi-user.target
  1. systemctl enable --now mihomo,然后 systemctl status mihomo 看是否 active。默认混合端口 7890,具体看配置文件里的 mixed-port。
  2. 验证:curl -x http://127.0.0.1:7890 https://www.google.com -I,预期返回 HTTP 200。

定时更新订阅

crontab -e 加一行,每天凌晨 4 点更新并重启:

0 4 * * * curl -L -A "clash" "订阅链接" -o /etc/mihomo/config.yaml && systemctl restart mihomo

选节点

命令行没有界面,三种办法:在 config.yaml 里把策略组默认节点改掉;通过 RESTful API(配置里 external-controller: 127.0.0.1:9090)用 curl 切换;或者装一个 Web 面板(metacubexd)连到这个端口,在浏览器里选。

三种订阅格式的处理

格式Clash Verge Revmihomo 命令行
Clash 订阅直接导入直接 curl 保存
通用订阅能导入但无策略组需 订阅转换
sing-box 订阅不能不能,换用 sing-box 内核,见 sing-box 教程

区别见 订阅链接说明。

让程序走代理

export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890 all_proxy=socks5://127.0.0.1:7890

写进 ~/.bashrc 或 ~/.zshrc 就长期生效。各工具单独设置:

  • apt:/etc/apt/apt.conf.d/proxy.conf 写 Acquire::http::Proxy "http://127.0.0.1:7890"; 和 https 一行。
  • git:git config --global http.proxy http://127.0.0.1:7890;SSH 方式的 git 需要在 ~/.ssh/config 里给 github.com 加 ProxyCommand nc -X 5 -x 127.0.0.1:7890 %h %p。
  • pip:pip config set global.proxy http://127.0.0.1:7890。
  • Docker 守护进程:/etc/systemd/system/docker.service.d/proxy.conf 里加 [Service] 和 Environment="HTTP_PROXY=http://127.0.0.1:7890" "HTTPS_PROXY=http://127.0.0.1:7890" "NO_PROXY=localhost,127.0.0.1",然后 systemctl daemon-reload && systemctl restart docker。
  • docker run 内部:传 -e HTTP_PROXY=http://172.17.0.1:7890,并在 mihomo 配置开 allow-lan: true。
  • snap:sudo snap set system proxy.http=http://127.0.0.1:7890。

常见报错表

症状原因处理
Clash Verge 在 Wayland 下窗口空白WebKit 合成问题启动时加 WEBKIT_DISABLE_COMPOSITING_MODE=1,或用 AppImage
mihomo 报 unsupported proxy type内核旧不支持协议更新内核;见 机场协议区别
curl 订阅得到的不是 YAML复制了通用订阅换 Clash 订阅或转换
systemd 启动失败配置语法错或端口占用journalctl -u mihomo -e 看日志
终端能走代理但 GUI 不能桌面环境不识别系统代理开 TUN 或设环境变量
geoip 下载失败服务器连不上 GitHub手动下载 dat 文件
Docker 拉镜像仍超时只设了 shell 变量没设守护进程按上文配 docker.service.d
延迟低但速度慢线路问题见 晚高峰慢怎么办

常见问题

服务器在国外,还需要机场吗?

访问国外资源不需要。有人用机场在国外服务器上回国访问国内资源,那是另一个场景。

怎么只让某些域名走代理?

编辑 config.yaml 的 rules 段,规则写法见 Clash 规则进阶。

命令行能看流量和到期吗?

订阅响应头里有 subscription-userinfo,curl -I 能看到;Clash Verge 会自动显示。

树莓派能跑吗?

可以,下载 linux-arm64 或 armv7 内核,流程相同。做全屋代理更建议 OpenWrt,见 软路由教程。

多台服务器共用一个订阅?

可以,注意机场设备数限制,见 多设备共用说明。

WSL 里怎么用?

WSL2 默认走 Windows 主机的代理需要镜像网络模式;简单做法是在 Windows 端 Clash Verge 开「允许局域网」,WSL 里把代理指向 Windows 主机 IP。

怎么开机自动连接并选最快节点?

配置里把默认策略组设为 url-test 类型,mihomo 启动后自动测速选最快。

Windows 和 Mac 用户看 电脑如何翻墙。