先说结论
直接答案:Linux 翻墙在桌面上最省事的方法是装 Clash Verge Rev(.deb / .rpm)或 FlClash(.deb / AppImage),导入机场 Clash 订阅后打开系统代理。没有图形界面的服务器,用 mihomo 内核加机场 Clash 订阅生成的 config.yaml,配合 systemd 开机自启,再在终端设置 https_proxy 环境变量。sing-box 也能用,但需要 sing-box 格式的配置。
Linux 翻墙的情况差别很大:有人用 Ubuntu 桌面日常上网,有人在服务器上只需要 git 和 Docker 能拉到海外资源,也有人想在树莓派上做全家的代理网关。下面先给出选择表,再分别讲图形客户端和命令行两种方式。
Linux 翻墙方案怎么选
| 方案 | 订阅格式 | 适合 | 安装包 |
|---|---|---|---|
| Clash Verge Rev | Clash | 桌面用户,新手首选 | .deb / .rpm |
| FlClash | Clash | 桌面用户,界面简单 | .deb / AppImage |
| Clash Party / Sparkle | Clash | 想要更多选项的桌面用户 | .deb / .rpm |
| Throne | 通用 | 原 NekoRay 用户、只有通用订阅 | Debian / Fedora 对应包 |
| v2rayN(Linux 版) | 通用 | 只有通用订阅 | 对应架构的包 |
| mihomo 命令行 | Clash | 服务器、无图形界面、开发机 | 单个二进制文件 |
| sing-box 命令行 | sing-box JSON | 熟悉 sing-box 配置的用户 | 二进制或 .deb / .rpm |
| ShellCrash | Clash | 路由器、软路由、小设备 | 脚本安装 |
官方下载入口见 Clash Verge Rev 下载、FlClash 下载、Throne 下载、sing-box 下载和 ShellCrash 下载。先用 uname -m 查看架构:x86_64 选 amd64 / x64,aarch64 选 arm64。
Linux 翻墙方式一:图形客户端(桌面用户)
安装 Clash Verge Rev
- 下载安装包。到 GitHub Releases 下载最新版:Ubuntu、Debian、Linux Mint 选
.deb,Fedora、openSUSE 选.rpm。 - 安装。Debian 系执行
sudo apt install ./下载的文件名.deb,Fedora 执行sudo dnf install ./下载的文件名.rpm。用 apt 安装本地包会自动处理依赖。 - 导入订阅。从应用菜单打开 Clash Verge Rev,在「订阅」页粘贴机场 Clash 订阅,点导入并选中该订阅。
- 选节点。在「代理」页测速选节点,模式保持「规则」。
- 打开系统代理。在「设置」里打开系统代理。GNOME、KDE 桌面会读取这项设置,Firefox、Chrome 随之生效。
- 按需开 TUN。终端、Docker 等也要走代理时,在设置里打开虚拟网卡模式,按提示授权。
界面和 Windows 版一致,详细说明见 Clash Verge Rev 教程。
FlClash 和 AppImage
FlClash 提供 .deb 和 AppImage。AppImage 不需要安装:下载后执行 chmod +x 文件名.AppImage 赋予执行权限,双击或在终端运行即可。部分发行版运行 AppImage 需要额外安装 FUSE 相关的包,按报错提示安装。导入订阅的方法和安卓版相同,见FlClash 教程。
系统代理在不同桌面环境下表现不一样。GNOME 和 KDE 支持较好;一些轻量窗口管理器没有统一的系统代理设置,浏览器可能不跟随,这时直接开 TUN 模式,或者在浏览器里手动填代理地址。
Linux 翻墙方式二:mihomo 命令行(服务器 / 无图形界面)
mihomo 就是原来的 Clash Meta 内核,一个二进制文件就能跑,非常适合服务器和开发机。整体流程:下载内核 → 准备配置 → 用 systemd 托管 → 设置代理。
- 下载内核。到 mihomo 的 GitHub 官方仓库 Releases 下载 linux 对应架构的压缩包(x86_64 选 amd64),解压后放到
/usr/local/bin/mihomo并赋予执行权限。 - 准备配置目录。创建
/etc/mihomo,把机场的 Clash 订阅下载为该目录下的config.yaml。 - 首次运行测试。前台运行一次,看有没有报错。首次启动会下载 GeoIP 等规则数据,网络不通时可能失败,可以先在其他机器下载好放进配置目录。
- 交给 systemd。写一个服务文件,设置开机自启。
# 下载订阅为配置文件(链接加引号,避免 & 被 shell 解析)
sudo mkdir -p /etc/mihomo
sudo curl -L -o /etc/mihomo/config.yaml "你的 Clash 订阅链接"
# 前台测试运行,-d 指定配置目录
sudo /usr/local/bin/mihomo -d /etc/mihomo
如果下载下来的文件不是 YAML(比如是一串 Base64),说明机场按客户端标识返回格式,可以给 curl 加上 -A 参数,把 User-Agent 设为 Clash 类客户端的名称再下载一次。
systemd 服务文件示例,保存为 /etc/systemd/system/mihomo.service:
[Unit]
Description=mihomo
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/usr/local/bin/mihomo -d /etc/mihomo
Restart=on-failure
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now mihomo
systemctl status mihomo # 查看运行状态
journalctl -u mihomo -f # 查看实时日志
订阅需要定期更新。最简单的办法是写个脚本重新下载 config.yaml 后执行 systemctl restart mihomo,再用 cron 或 systemd timer 每天运行一次。注意更新后检查配置是否有效,避免下载失败时覆盖掉原有配置。
选节点和 Web 面板
命令行下切换节点不方便,可以在配置里设置 external-controller: 127.0.0.1:9090 打开控制接口,再用 metacubexd、zashboard 等 Web 面板连接,在浏览器里测速和选节点。服务器上请把它保持在 127.0.0.1,通过 SSH 端口转发访问,不要直接暴露到公网;需要的话再设置 secret 访问密钥。
Linux 翻墙方式三:sing-box 命令行
sing-box 是另一个流行的代理内核,Hiddify、Karing、Throne 等客户端都基于它。它的配置是 JSON 格式,和 Clash 的 YAML 不通用:
- 安装。按 sing-box 官方文档提供的方式安装,或从 GitHub Releases 下载对应发行版的 .deb / .rpm 包。
- 准备配置。机场提供 sing-box 订阅就直接下载为
/etc/sing-box/config.json;没有的话需要转换,见订阅转换教程。 - 检查配置。执行
sing-box check -c /etc/sing-box/config.json,没有输出说明格式正确。 - 运行。前台测试用
sing-box run -c /etc/sing-box/config.json;用软件包安装的一般自带 systemd 服务,执行sudo systemctl enable --now sing-box。
sing-box 不同大版本之间配置字段有过调整,旧配置在新版本上可能报错,按报错提示或官方迁移说明修改。更详细的用法见 sing-box 教程。
让终端和程序走代理
内核跑起来后,本机会监听一个代理端口(看 config.yaml 里的 mixed-port 或 port)。让程序使用它有几种方式:
环境变量
执行 export http_proxy=http://127.0.0.1:端口号 https_proxy=http://127.0.0.1:端口号,当前终端里的 curl、git、pip 等会走代理。写进 ~/.bashrc 可以每次自动生效,但内核没运行时会导致终端断网。
TUN 模式
在配置里启用 tun,整机流量都会进入代理,不用一个个程序设置。需要 root 权限,或给二进制授予 cap_net_admin 能力。
apt / dnf
sudo 默认不继承普通用户的环境变量。可以用 sudo -E,或者在包管理器自己的配置文件里单独设置代理。
Docker
Docker 拉镜像由守护进程完成,需要给 Docker 服务单独配置代理(systemd 的 drop-in 配置),或者开 TUN 模式。
验证是否生效:执行 curl -I https://www.google.com,有返回头说明代理正常。
手动设置桌面系统代理
用命令行内核但又在桌面环境下工作时,可以手动设置系统代理,让浏览器跟随:
- GNOME(Ubuntu 默认桌面):打开「设置 → 网络 → 网络代理」,选手动,HTTP 和 HTTPS 代理都填
127.0.0.1和端口号,忽略的主机保留 localhost 等默认值。 - KDE Plasma:在「系统设置」的网络相关设置里找到代理,选择手动配置并填写同样的地址和端口。
- 只对浏览器生效:Firefox 在「设置 → 网络设置」里可以单独填写代理,不影响系统其他程序。
停用内核后记得把系统代理改回「关闭」或「无」,否则浏览器会因为连不上代理而打不开任何网页。
进阶:在树莓派或小主机上做代理网关
家里有一台常开的 Linux 小主机或树莓派,可以让它跑 mihomo,开启局域网访问,其他设备把代理指向它的局域网地址。这样电视、游戏机等装不了客户端的设备也能使用。做法是在配置里开启允许局域网连接(allow-lan),并设置只在内网接口上监听,再在其他设备上填写 HTTP 代理。更彻底的方案是做透明网关或者直接在路由器上部署,见 OpenClash 教程和 ShellCrash。ShellCrash 用一行命令就能在多数 Linux 设备和路由器固件上部署 Clash 内核,带有菜单式的管理界面,适合不想手写服务文件的用户,但它最近更新放缓,使用前看一下项目说明。这类方案只建议在自己家里的网络中使用,不要对公网开放。
其他发行版说明
Arch、Manjaro 用户可以在 AUR 或社区仓库里找到 Clash Verge Rev、mihomo、sing-box 等软件包,安装前看清楚打包者和更新时间,优先选择活跃维护的包。NixOS、Gentoo 等发行版也有对应的打包,配置思路相同:内核加配置文件,再交给系统服务管理。不确定时,直接用官方 Releases 里的二进制文件最稳妥。
Linux 翻墙常见问题排查
| 现象 | 原因 | 解决 |
|---|---|---|
| deb 安装报依赖错误 | 缺少系统组件 | 用 sudo apt install ./文件.deb 自动补依赖 |
| AppImage 打不开 | 没有执行权限或缺少 FUSE | chmod +x;按提示安装 FUSE 相关包 |
| mihomo 启动报配置错误 | 下载到的不是 Clash 配置 | 确认是 Clash 订阅;用 -A 指定 User-Agent 重新下载 |
| 启动卡在下载 GeoIP | 网络无法访问规则数据源 | 提前下载规则文件放进配置目录 |
| 节点全部超时 | 订阅过期、系统时间不准 | 更新订阅;开启 NTP 时间同步;见节点超时排查 |
| 浏览器能用、终端不能 | 终端没设置代理 | 设置环境变量或开 TUN |
| sudo 命令不走代理 | sudo 不继承环境变量 | 用 sudo -E 或单独配置 |
| TUN 开启失败 | 权限不足 | root 运行或授予 cap_net_admin |
订阅本身导入不了看订阅导入失败。
注意事项
- 服务器上不要把端口开到公网。监听地址保持
127.0.0.1,控制面板设置访问密钥。代理端口暴露在公网,等于把你的机场流量送给别人。 - 订阅链接别写进公开仓库。写在脚本里的订阅地址容易随 dotfiles 一起被推到 GitHub,泄露后到机场后台重置,见订阅链接安全。
- 只从官方仓库下载二进制。内核以 root 权限运行,来源不明的二进制风险很高。
- 保持时间同步。部分协议对时间敏感,确认系统开启了 NTP。
- 遵守所在地法律法规和平台规则。在公司或学校的服务器上部署代理前,先确认相关规定。
GitHub 打不开时怎么在 Linux 上装客户端
Linux 翻墙经常卡在第一步:客户端和内核都在 GitHub 上发布,而还没翻墙时 GitHub 下载很慢甚至打不开。解决思路是「借一台已经能翻墙的设备」:
- 在别的设备上下载。用已经能翻墙的电脑或手机,下载 Linux 版安装包或内核压缩包,注意选对架构(x86_64 或 arm64)。
- 传到 Linux 上。桌面机用 U 盘或局域网共享即可;服务器用
scp 文件名 用户名@服务器地址:~/上传。 - 核对文件。如果 Releases 页面提供了校验值,用
sha256sum 文件名对比一下,避免文件下载不完整或被替换。 - 提前准备数据文件。mihomo、sing-box 等内核第一次启动时可能会自动下载 GeoIP、GeoSite 一类的数据库,没翻墙时这一步会失败、导致启动报错。可以在另一台设备上把这些文件一起下载好,放进内核的配置目录,文件名以报错提示为准。
- 配置文件也可以先下好。机场订阅地址多数情况下能直接访问;如果下载不了,同样在能翻墙的设备上把配置文件保存下来,一并传过去。
第一次跑通之后,后续的客户端更新、订阅更新都可以走代理完成,不需要再这样中转。另外,部分显卡驱动或桌面环境下,图形客户端可能启动失败或窗口空白,这时不必死磕,直接改用上面的 mihomo 命令行方式加 Web 面板,功能是一样的。
Linux 上让 git、pip、npm 单独走代理
环境变量对大部分命令行工具有效,但开发时常用的几个工具各有自己的代理设置,有时环境变量设了它们也不理。下面按工具列出单独设置的方法,「端口号」换成你配置里的 mixed-port 或 port:
| 工具 | 设置代理 | 取消 |
|---|---|---|
| git(HTTPS 克隆) | git config --global http.proxy http://127.0.0.1:端口号 | git config --global --unset http.proxy |
| git(只代理 GitHub) | git config --global http.https://github.com.proxy http://127.0.0.1:端口号 | git config --global --unset http.https://github.com.proxy |
| pip | pip install --proxy http://127.0.0.1:端口号 包名 | 去掉参数即可 |
| npm | npm config set proxy http://127.0.0.1:端口号,https-proxy 同样设置 | npm config delete proxy |
用 SSH 地址([email protected])克隆时,上面的 http.proxy 不起作用,要在 ~/.ssh/config 里给 GitHub 单独加代理:
Host github.com
ProxyCommand nc -X 5 -x 127.0.0.1:端口号 %h %p
这里的 nc 需要支持 -X 参数的 OpenBSD 版 netcat,Debian、Ubuntu 上一般叫 netcat-openbsd。如果 22 端口在你的网络里被限制,也可以改用 GitHub 提供的 443 端口 SSH 地址,具体写法以 GitHub 官方文档为准。只想全部省事的话,直接开 TUN 模式,所有工具都不用再单独配置。
Linux 代理到底有没有生效:逐项检查
「浏览器能翻、终端不行」「curl 行、某个程序不行」是 Linux 翻墙最常见的困惑。按下面的顺序检查,能很快定位是内核、节点还是程序本身的问题:
- 先确认内核在监听。执行
ss -lntp | grep 端口号,能看到 mihomo 或 sing-box 在监听才继续往下查。 - 绕开环境变量直接测。执行
curl -x http://127.0.0.1:端口号 -I https://www.google.com。这一步失败,说明问题在节点或订阅,去看节点超时排查。 - 检查环境变量。执行
env | grep -i proxy看当前终端有没有设置。有的程序只认小写http_proxy,有的只认大写,两种都设上最保险。 - 检查 no_proxy。如果
no_proxy写得太宽,比如包含了整个域名后缀,相关地址会被直接放行不走代理。 - 区分 HTTP 和 SOCKS。只支持 SOCKS 的程序要用
all_proxy=socks5://127.0.0.1:端口号;mihomo 的 mixed-port 同时支持 HTTP 和 SOCKS。 - 看内核日志。
journalctl -u mihomo -f里能看到每个连接匹配到的规则和策略组;请求根本没出现在日志里,说明程序没有走代理。
以上都正常但某个程序仍不走代理,多半是它不读环境变量,用上一节的单独设置,或者直接开 TUN 模式。
Linux 上用哪家机场
Linux 翻墙的用户多数是开发者,拉代码、下载依赖、拉镜像时流量消耗大,速度和稳定性都重要。可以优先看专线机场,下面是本期专线机场,更多选择见 IPLC 专线机场、大流量机场和电脑梯子推荐(含各客户端支持系统对照表)。
| # | 机场 | 线路 | 月付起 | 流量 | 每 GB | AI | 流媒体 | 评分 | 状态 |
|---|---|---|---|---|---|---|---|---|---|
| 1 | WgetCloud | IEPL / IPLC 专线 + BGP 中转 | ¥79 | 按套餐,入门档约 100GB 级 | — | ✓ | ✓ | 9.5 | 推荐 |
| 2 | 飞鸟云 | 内网专线 IPLC | ¥25 | 150GB / 月 | ¥0.17 | ✓ | ✓ | 9.3 | 推荐 |
| 3 | TAG | IEPL 专线 | ¥114 | 500GB / 月 | ¥0.23 | ✓ | ✓ | 9.3 | 推荐 |
| 4 | 二猫云主推 | 三网优化 IEPL + 中转混合 | ¥20 | 60GB – 130GB / 月 | ¥0.15 | ✓ | ✓ | 9.2 | 推荐 |
| 5 | 灵云 | IEPL 纯专线 | ¥22 | 120GB / 月 | ¥0.18 | ✓ | ✓ | 9.2 | 推荐 |
| 6 | 天机阁 | 内网专线 + 专职技术运维 | ¥26 | 160GB / 月 | ¥0.16 | ✓ | ✓ | 9.2 | 推荐 |
| 7 | 闪电猫 | 企业级 IPLC 专线 | ¥30 | 200GB / 月 | ¥0.15 | ✓ | ✓ | 9.2 | 推荐 |
| 8 | 宇宙云主推 | IEPL 专线 + 中转 | ¥25 | 60GB – 120GB / 月 | ¥0.21 | ✓ | ✓ | 9.0 | 推荐 |
点表头可排序。价格、流量和每 GB 按官网核对于 2026 年 10 月 24 日;AI / 流媒体为官网标注(✓ 标注支持,△ 部分或需自测,✗ 未标注)。
下一步阅读
图形客户端细节看 Clash Verge Rev 教程;sing-box 配置看 sing-box 教程;订阅格式转换看订阅转换;路由器部署看 OpenClash 教程;Windows 和 Mac 分别见 Windows 翻墙教程、Mac 翻墙教程。
常见问题
Linux 翻墙用什么客户端?
桌面环境用 Clash Verge Rev 或 FlClash,导入机场 Clash 订阅即可;只有通用订阅可以用 v2rayN 的 Linux 版或 Throne;没有图形界面的服务器用 mihomo 或 sing-box 命令行版。
Ubuntu 怎么安装 Clash Verge Rev?
到 Clash Verge Rev 的 GitHub Releases 下载 amd64 架构的 .deb 包,用 sudo apt install ./文件名.deb 安装,安装后从应用菜单打开,在「订阅」页导入机场 Clash 订阅。
服务器没有图形界面,Linux 翻墙怎么用机场?
下载 mihomo 内核,把机场 Clash 订阅下载为 config.yaml,用 systemd 托管运行;然后在终端设置 http_proxy / https_proxy 环境变量指向本机端口,或开启 TUN 模式接管全部流量。
mihomo 和 Clash 是什么关系?
mihomo 就是原来的 Clash Meta 内核,原版 Clash 停更后由社区继续维护,兼容 Clash 配置并支持更多新协议。Clash Verge Rev、FlClash 等客户端内部用的都是它。
sing-box 能直接用机场订阅吗?
sing-box 使用自己的 JSON 配置格式,不能直接读取 Clash 订阅或通用订阅。需要机场提供 sing-box 格式订阅,或者自己转换,见订阅转换教程。
Linux 终端怎么走代理?
执行 export https_proxy=http://127.0.0.1:端口号 http_proxy=http://127.0.0.1:端口号 即可让当前终端走代理;想让所有程序都走代理,开启客户端或内核的 TUN 模式。
Linux 开 TUN 模式需要 root 吗?
需要创建虚拟网卡的权限。可以用 root 运行,或者给内核二进制文件授予 cap_net_admin 能力;图形客户端一般会在开启时提示授权或安装服务。
在 VPS 上跑代理客户端安全吗?
可以,但要把监听地址限制在 127.0.0.1,不要把代理端口和控制面板暴露到公网,否则任何人都能用你的机场流量。
Linux 上图形客户端打不开或窗口空白怎么办?
先在终端里启动它,看报错信息。AppImage 检查执行权限和 FUSE;个别显卡驱动或桌面环境下图形界面可能无法正常显示,可以换另一个图形客户端,或者改用 mihomo 命令行加 Web 面板。
运行 mihomo 提示 cannot execute binary file 怎么办?
多半是下错了架构或系统。先用 uname -m 查看:x86_64 下载 amd64 的包,aarch64 下载 arm64 的包,并确认下载的是 linux 版本;解压后用 chmod +x 赋予执行权限再运行。
Linux 上 git clone GitHub 很慢或超时怎么办?
HTTPS 地址用 git config --global http.proxy 指向本机代理端口;SSH 地址要在 ~/.ssh/config 里给 github.com 加 ProxyCommand。也可以直接开 TUN 模式,所有程序都会走代理。
终端设置了代理,curl 还是打不开 Google?
先用 curl -x http://127.0.0.1:端口号 直接测,失败说明节点或订阅有问题;成功则检查环境变量大小写、no_proxy 是否把地址排除,以及端口号是否和配置里的一致。
更多问题见机场问答库:选机场、客户端、连不上、ChatGPT 和流媒体的常见问题都在这里。