Linux翻墙教程:命令行与桌面环境代理配置

Linux翻墙的特殊性

Linux用户群体中开发者居多,翻墙往往不仅是为了浏览网页,更是为了git clone、docker pull、pip install、apt update等开发工作中的日常需求。Linux翻墙需要同时解决图形界面和命令行两个层面的代理问题。

客户端选择

Clash系

客户端界面特点
Clash Verge RevGUI跨平台,有图形界面,推荐桌面Linux用户
mihomo (Clash Meta内核)CLI纯命令行,适合服务器/无桌面环境
FlClashGUIFlutter开发的GUI客户端,界面美观

其他

  • sing-box:新一代通用代理内核,命令行方式运行,配置灵活
  • v2rayA:Web界面管理的V2Ray客户端,通过浏览器操作
  • Xray/V2Ray:直接使用核心程序+配置文件,最轻量

方案一:Clash Verge Rev(桌面用户推荐)

安装

根据你的发行版选择安装方式:

  • Ubuntu/Debian:下载 .deb 包,执行 sudo dpkg -i clash-verge*.deb
  • Fedora/RHEL:下载 .rpm 包,执行 sudo rpm -i clash-verge*.rpm
  • Arch:AUR中有 clash-verge-rev-bin
  • AppImage:通用格式,下载后 chmod +x 直接运行

配置与使用

与macOS/Windows版本操作一致:导入订阅 → 选择节点 → 开启系统代理。但Linux下有几个注意点:

  • 开启TUN模式需要root权限(首次会提示输入密码)
  • 部分桌面环境(如KDE)的系统代理设置可能与GNOME不同,建议开启TUN模式确保全局生效
  • 如果使用Wayland显示协议,确保客户端版本支持

方案二:mihomo命令行(服务器/无桌面环境)

对于没有图形界面的Linux服务器或VPS,使用mihomo(Clash Meta内核)通过命令行运行。

安装步骤

  1. 从GitHub下载对应架构的二进制文件(amd64/arm64)
  2. 解压并放到 /usr/local/bin/ 目录
  3. 创建配置目录:mkdir -p ~/.config/mihomo
  4. 将机场的Clash配置文件(YAML格式)下载到配置目录
  5. 运行:mihomo -d ~/.config/mihomo

配置为系统服务(开机自启)

创建systemd服务文件使mihomo在后台持续运行,即使终端关闭也不会中断:

  1. 创建服务文件 /etc/systemd/system/mihomo.service
  2. 启动服务:sudo systemctl start mihomo
  3. 设置开机自启:sudo systemctl enable mihomo
  4. 查看运行状态:sudo systemctl status mihomo

Web Dashboard

mihomo默认提供Web API,可以通过浏览器面板管理。在配置文件中设置 external-controller 和 external-ui 后,访问 http://127.0.0.1:9090/ui 即可在浏览器中切换节点和查看流量。

常用的Dashboard有 yacd 和 metacubexd,下载静态文件放到指定目录即可。

方案三:v2rayA(Web管理界面)

v2rayA是一个通过浏览器管理的代理客户端,特别适合不想折腾命令行配置的用户。

优势

  • 安装简单,一键导入订阅
  • 浏览器操作界面,直观友好
  • 支持透明代理(TUN/tproxy),全局代理效果好
  • 支持SS、VMess、VLESS、Trojan等主流协议

安装

v2rayA的安装脚本支持主流发行版,通常几条命令即可完成安装。安装后通过浏览器访问 http://127.0.0.1:2017 进入管理界面。

终端环境变量代理设置

无论使用哪个客户端,确保命令行工具走代理都需要设置环境变量。

临时设置

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

永久设置

将上述命令写入 ~/.bashrc 或 ~/.zshrc,每次打开终端自动生效。

代理别名(推荐)

在shell配置文件中添加两个快捷命令,随时开关代理:

  • alias proxy_on='export https_proxy=... http_proxy=... all_proxy=...'
  • alias proxy_off='unset https_proxy http_proxy all_proxy'

需要代理时输入 proxy_on,不需要时输入 proxy_off。

特定工具的代理设置

Git

Git有独立的代理设置,不读取环境变量中的http_proxy:

  • HTTP代理:git config --global http.proxy http://127.0.0.1:7890
  • SOCKS5代理:git config --global http.proxy socks5://127.0.0.1:7891
  • 取消代理:git config --global --unset http.proxy

也可以只对GitHub设置代理,国内Git仓库(如Gitee)不受影响:git config --global http.https://github.com.proxy socks5://127.0.0.1:7891

Docker

Docker daemon需要单独配置代理才能拉取境外镜像。编辑 /etc/docker/daemon.json 或创建systemd代理配置文件,然后重启Docker服务。

apt / yum

包管理器通常会读取环境变量中的代理设置。如果设置了proxy_on仍不生效,可以在apt配置或yum配置中直接指定代理地址。

SSH

通过代理连接SSH可以使用ProxyCommand。在 ~/.ssh/config 中配置,使用nc或connect-proxy通过代理建立SSH连接。

透明代理(全局代理方案)

Linux上实现真正的全局代理可以使用透明代理方案:

  • TUN模式:Clash Verge/mihomo的TUN模式,创建虚拟网卡接管所有流量
  • tproxy:通过iptables重定向所有TCP/UDP流量到代理,配置复杂但效果最好
  • nftables:新版Linux内核推荐使用nftables代替iptables

对于桌面Linux用户,直接使用客户端的TUN模式最省心。对于服务器或路由器场景,tproxy/nftables方案更灵活。

总结

  • 桌面Linux用户:安装Clash Verge Rev,开启TUN模式,一劳永逸
  • 服务器用户:mihomo + systemd服务 + Web Dashboard
  • 开发者:重点配置好环境变量和Git/Docker代理,使用proxy_on/off别名快速切换

Hello!我是这个博客的作者,你可以叫我 Liu,我创建这个网站是为了帮助人们找到最好的 VPN。当我远渡重洋之后,我意识到国外还是有非常多的可取之处值得我们去了解熟悉的,因此,VPN 就成了必不可少的工具,所以我创建了这个博客,希望可以给大家带来实质性的帮助,我会尽量客观的分析这些产品,如果我的描述让你觉得不舒服,那我很抱歉。

希望大家能多多支持我的内容,并给我一些意见或者建议,我很期待与大家互动。