从零开始:在 Ubuntu 上部署 Clash Verge Rev 实现全局透明代理

🐧 为什么在 Ubuntu 上使用 Clash Verge Rev?

Ubuntu 作为最受欢迎的 Linux 发行版之一,常被用于个人开发机、家庭服务器甚至软路由。虽然 Linux 下不乏命令行代理工具,但 Clash Verge Rev 凭借 Tauri 框架带来的现代化图形界面、与 Mihomo 内核的无缝集成,以及一键开启的 TUN 模式,极大降低了配置门槛。即使你没有接触过 iptables 或复杂的网络脚本,也能在几分钟内让整台 Ubuntu 设备的所有流量安全地通过代理。

与传统的 redir-host 模式不同,Ubuntu 上的 Clash Verge Rev 同样支持 Fake‑IP,结合 TUN 模式可以实现系统级透明代理,对于需要通过 SSH 连接远程服务器、运行 Docker 容器或使用命令行下载工具的场景,优势尤为明显。如果你还想让局域网内的手机、平板也能共享代理,本文还会教你简单的网关配置。

💡 适用版本: 本教程基于 Ubuntu 22.04 LTS 和 24.04 LTS 编写,其他基于 Debian 的发行版(如 Linux Mint、Deepin)同样适用。

📦 环境准备与依赖安装

Clash Verge Rev 的 AppImage 包几乎包含了所有运行时依赖,但为了确保 TUN 模式正常工作,我们需要提前安装一些系统组件。打开终端,执行以下命令:

# 更新软件源并安装必要依赖 sudo apt update && sudo apt install -y libfuse2 libnss3 libgtk-3-0 libwebkit2gtk-4.0-37 # 确保 TUN 内核模块已加载 sudo modprobe tun echo "tun" | sudo tee -a /etc/modules-load.d/tun.conf

libfuse2 是运行 AppImage 所必需的文件系统支持库,libwebkit2gtk 用于渲染图形界面(如果你只需要后台运行,也可以跳过 GUI 依赖,但推荐保留以便首次配置)。modprobe tun 确保虚拟网卡驱动可用,否则 TUN 模式无法创建网络设备。

⚠️ 注意: 如果你使用的是最小化安装的 Ubuntu Server 版本,可能还需要安装 libx11-6libxcb1 等 X11 库。若希望完全无头运行,可参考后文的命令行部署方案。

💾 下载与安装 AppImage

访问 客户端下载 页面,或直接前往 GitHub Releases 获取最新的 AppImage 文件。你也可以在终端中使用 wget 直接下载:

# 下载最新版 AppImage(请替换为实际版本号) wget -O Clash.Verge.Rev.AppImage https://github.com/Clashforwinodws/clash-verge-rev-download/releases/download/v2.5.2/Clash.Verge_2.5.2_amd64.AppImage # 赋予执行权限 chmod +x Clash.Verge.Rev.AppImage # 运行(如需管理员权限运行 TUN 模式,使用 sudo) ./Clash.Verge.Rev.AppImage

首次运行可能会提示“AppImage 需要 FUSE”,如果已按上一步安装 libfuse2 则不会出现。如果希望在无 GUI 的服务器上运行,可以添加 --no-sandbox 参数,但不推荐作为长期方案。建议在桌面环境完成初始配置后,再迁移到服务器后台。

💡 可选: 将 AppImage 移动到 /opt 目录并创建桌面快捷方式,方便管理:sudo mv Clash.Verge.Rev.AppImage /opt/clash-verge-rev.AppImage

⚙️ 初始配置与订阅导入

启动 Clash Verge Rev 后,你会看到与 Windows/macOS 版本几乎一致的图形界面。首次配置主要有两步:导入订阅和调整基础设置。

1

导入订阅

点击左侧“配置” → “新建” → “从 URL 导入”,粘贴机场提供的 Clash 订阅链接。

2

选择配置

在配置列表中点击刚导入的条目,使其成为当前活跃配置。

3

调整 DNS

在 DNS 选项卡中启用 Fake‑IP 模式,并填入加密 DNS 地址。

4

测试连通性

开启系统代理,浏览器访问 google.com 验证节点是否工作。

如果你更习惯编辑配置文件,可以直接打开 ~/.config/clash-verge-rev/config.yaml 手动写入。详细的配置参数说明请参考 配置教程。对于订阅管理,导入订阅指南 提供了更多高级技巧。

🔌 开启 TUN 模式实现全局代理

在 Ubuntu 上,TUN 模式是达成“透明代理”的最简单方式。点击左侧“设置” → “TUN 模式”,将开关打开。首次启用需要 root 权限,因此请确保以 sudo 运行客户端,或当前用户具备 CAP_NET_ADMIN 能力。你可以用以下命令赋予权限(无需完整 root):

sudo setcap cap_net_admin+ep /opt/clash-verge-rev.AppImage

开启后,Clash 会自动创建 tun0 虚拟网卡,并修改系统路由表,将所有流量导向该网卡。此时,无论终端、浏览器还是 Docker 容器,网络请求都会经过代理内核。你可以通过 ip route show 查看默认路由是否已指向 Clash 的虚拟网关。

如果遇到“TUN 设备创建失败”的错误,检查 tun 模块是否加载,或尝试将 TUN 堆栈切换为 gVisor(在设置中直接选择)。gVisor 在部分云服务器或 VPS 上兼容性更好。关于 TUN 模式更深入的排查,请阅读 TUN 断网排查指南

🔒 安全提醒: 在启用 TUN 之前,强烈建议将 DNS 模式设为 Fake‑IP,并配置 fake-ip-filter 排除本地域名。否则,局域网设备可能被虚拟 IP 干扰。详情见 Fake‑IP 深度解析

🚀 配置开机自启与服务化

Ubuntu 使用 systemd 管理系统服务,我们可以创建一个自定义服务单元,让 Clash Verge Rev 在系统启动时自动运行。创建文件 /etc/systemd/system/clash-verge-rev.service

[Unit] Description=Clash Verge Rev 代理客户端 After=network.target [Service] Type=simple ExecStart=/opt/clash-verge-rev.AppImage --no-sandbox Restart=on-failure RestartSec=5 Environment=DISPLAY=:0 # 如需 GUI,指定显示输出 [Install] WantedBy=multi-user.target

保存后执行 sudo systemctl daemon-reload,然后 sudo systemctl enable --now clash-verge-rev。服务将在后台运行,即使关闭终端也不会中断。你可以在 Clash Verge Rev 设置中关闭“窗口最小化时隐藏”,配合服务化实现完全无感知的后台代理。

如果你不需要图形界面,可以在 AppImage 后追加 --headless 参数(如果版本支持),或者改用 Mihomo 内核的命令行版本。但 Clash Verge Rev 的配置管理功能会因此失效,因此我们仍推荐使用上述服务化方式。

🌐 进阶:作为局域网网关共享代理

让同一局域网内的手机、平板、智能电视通过 Ubuntu 设备代理上网,是 Clash Verge Rev 的一个实用扩展。配置仅需两步:

1. 开启局域网连接

在 Clash Verge Rev 设置中,找到“允许局域网连接”,将其打开。默认的 SOCKS5 端口是 7891,HTTP 端口是 7890。确保你的防火墙放行这些端口:

sudo ufw allow 7890/tcp sudo ufw allow 7891/tcp

2. 客户端手动代理设置

在手机 Wi‑Fi 设置中,将代理模式设为“手动”,服务器填写 Ubuntu 设备的局域网 IP,端口填写 7890。此时,手机浏览器的流量会通过 Clash 转发。但这种方式对应用层程序不完整(如手游可能绕过代理)。

3. 透明代理(可选)

如果希望所有流量包括 UDP 都经过代理,你可以在 Ubuntu 上启用 IP 转发,并配置 iptables 规则将局域网流量重定向到 Clash 的 TUN 接口。这超出了本文范围,但其核心是开启内核转发:sudo sysctl -w net.ipv4.ip_forward=1,然后参考 TUN 模式文档tun 配置的 auto-route 参数。Clash 会自动添加 iptables 规则,你只需确保网络接口正确。

⚠️ 注意: 作为网关运行时,务必配置好 DNS 防泄漏,否则局域网内所有设备的 DNS 查询将暴露给上游网络。建议在 Ubuntu 上同时运行一个加密 DNS 代理(如 dnscrypt-proxy),并让 Clash 的 DNS 监听 0.0.0.0。

🩺 常见问题与排错

Q: AppImage 无法启动,报错“FUSE not found”?
运行 sudo apt install libfuse2 后重试。如果仍然失败,可以尝试 ./Clash.Verge.Rev.AppImage --appimage-extract-and-run,这会解压并直接运行,不依赖 FUSE。

Q: TUN 模式开启后 DNS 解析失败?
常见原因是 systemd-resolved 占用了 53 端口。可以修改 Clash 的 DNS 监听端口为 5353,并在 TUN 配置中设置 dns-hijack: any:53 强制劫持。或者停止 systemd-resolved:sudo systemctl stop systemd-resolved,并修改 /etc/resolv.conf 指向 Clash DNS。更多细节见 DNS 劫持冲突修复

Q: 服务自启后无法打开 GUI?
systemd 服务默认没有桌面环境变量。在 [Service] 中添加 Environment=DISPLAY=:0 并确保 XAUTHORITY 已设置。如果仍失败,可在用户级别的 ~/.config/autostart 中创建 .desktop 文件实现 GUI 自启。

Q: 如何更新 Clash Verge Rev?
直接下载新版本 AppImage 替换旧文件,然后重启服务。由于配置和数据存储在 ~/.config/clash-verge-rev 目录,更新不会丢失设置。也可以关注 更新日志 了解最新特性。

📖 继续阅读