[TOC] #### 1. 前言 ---- Clash 本身是一个用 Go 语言开发的命令行工具(没有界面),是整个生态系统的核心,也就是 Clash 内核 + 功能:负责实际的网络代理、协议解析、规则匹配和流量转发 + 特点:功能强大,但操作复杂,需要编辑配置文件来使用(YAML 格式),对普通用户不友好 一句话总结三者之间的关系:Clash 是内核,ClashX 和 Clash for Windows 是给这个内核做的 “带界面的壳” + 原仓库地址已关闭,无法访问。不过有人备份最后的版本:[经典 Clash 全系备份下载](https://github.com/zhaoweih/Clash-Copy) #### 2. 终端代理 ---- 在不同操作系统和终端中配置代理,主要分为临时生效(仅当前窗口)和永久生效(全局配置)两种方式 核心变量:大多数命令行工具都识别以下环境变量 + http_proxy:用于 HTTP 请求 + https_proxy:用于 HTTPS 请求 + all_proxy:常用于 SOCKS5 代理,如 `socks5://...` 临时配置:仅当前终端窗口有效,适用于临时测试,关闭窗口即失效 ```bash # macOS/Linux proxy_ip="127.0.0.1" export http_proxy="http://$proxy_ip:7890" export https_proxy="http://$proxy_ip:7890" export all_proxy="socks5://$proxy_ip:7890" # Window CMD set proxy_ip=127.0.0.1 set http_proxy=http://%proxy_ip%:7890 set https_proxy=http://%proxy_ip%:7890 # Window PowerShell $proxy_ip = "127.0.0.1" $env:http_proxy="http://$proxy_ip`:7890" $env:https_proxy="http://$proxy_ip`:7890" ``` 查看配置的环境变量,验证是否设置成功: ```bash # macOS/Linux echo $http_proxy echo $https_proxy # Window CMD echo %HTTP_PROXY% echo %HTTPS_PROXY% # Window PowerShell $env:HTTP_PROXY $env:HTTPS_PROXY ``` 验证代理是否有效: ```bash # Window CMD、macOS/Linux curl ip.sb # Window PowerShell curl.exe ip.sb ``` 也可以省去配置环境变量,通过以下命令测试代理是否有效: ```bash # 本机代理 curl -x http://127.0.0.1:7890 ip.sb # 使用局域网内其他电脑上的代理软件转发 curl -x http://192.168.1.25:7890 ip.sb ``` #### 3. ClashX ---- ClashX 是基于 Clash 内核开发的适用于 macOS 的图形客户端,只适用于 macOS 平台 + 原代码仓库:<https://github.com/yichengchen/clashX> 当我们使用终端安装软件需要从国外仓库拉取时,可能会出现以下问题: ```plaintext $ git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions Cloning into '/Users/liang/.oh-my-zsh/custom/plugins/zsh-autosuggestions'... fatal: unable to access 'https://github.com/zsh-users/zsh-autosuggestions/': Failed to connect to github.com port 443:Operation timed out ``` 这里介绍一个在命令行中非常经典且实用的命令,它的主要作用是查询你当前设备的公网 IP 地址 + 原理:发送一个 HTTP 请求,服务器读取请求来源的 IP 地址,并将其以纯文本形式返回 + 这个命令之所以流行,是因为这个服务响应速度快、输出内容简洁,非常适合在脚本中快速查看网络状态 ```bash curl ip.sb ``` 虽然 `ip.sb` 很好用,但在某些网络环境下可能不稳定,以下是几个功能类似的常用命令: ```bash # 中文友好,直接显示 IP + 归属地 curl cip.cc # 国内访问速度通常较快,适用于国内服务器查询 curl myip.ipip.net ``` 运行 `curl ip.sb` 命令输出内容: + 查看该 IP归属地是:广东省 深圳市,也就是我电脑的公网 IP,没有走代理 + 为了加速下载,我们现在要想办法,让终端的网络请求走代理 ```plaintext 163.125.203.212 ``` 点击菜单栏中 ClashX 的 `复制终端代理命令`,会将以下命令拷贝到剪切板,在终端运行该命令: + 重新在终端拉取仓库自动走 ClashX 代理(默认代理端口就是 7890) + 这种情况适用于当前电脑有 ClashX,并且终端访问的当前电脑 + http_proxy:约定俗称的环境变量名,很多工具(apt、git、curl、wget)会自动读取它 + 该方式仅在当前终端窗口生效,适合临时使用 ```bash # 设置环境变量 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 # 关闭代理 unset http_proxy https_proxy all_proxy ``` 如果是宿主机使用终端,通过 SSH 方式连接虚拟机中的操作系统呢 ?还用 `127.0.0.1` 显然是不行的 + 场景一:宿主机连接宿主机内的虚拟电脑(同一局域网) + 场景二:另一台电脑连接宿主机内的虚拟电脑(同一局域网) 首先要查看当前终端环境的局域网 IP,下面列出常见系统对应的查看方式: ```bash # macOS ipconfig getifaddr en0 # Linux hostname -I ip addr show # 查看宿主机局域网IP(在虚拟电脑终端运行) ip route show default | awk '/default/ {print $3}' ``` 使用示例:拿到局域网 IP 后,运行以下命令使其仅在当前终端临时生效 ```bash proxy_ip="192.168.3.6" export http_proxy="http://$proxy_ip:7890" export https_proxy="http://$proxy_ip:7890" export all_proxy="socks5://$proxy_ip:10808" ``` 运行 `curl ip.sb` 命令,查看返回的 IP,发现已经代理到其他节点了,输出结果示例: ```plaintext 42.3.2.178 ``` #### 4. Clash for Windows ---- Clash for Windows 是使用 Electron 开发的基于 Clash 内核的客户端,用法上和 ClashX 没有什么区别,只是 UI 不同 以下是旧地址,已经无法访问,但仍可从本文放置的 “经典 Clash 全系备份下载” 获得: + Clash for Windows 文档:<https://docs.cfw.lbyczf.com> + Clash for Windows 下载地址: <https://github.com/Fndroid/clash_for_windows_pkg/releases> 使用示例:   开启 `System Proxy`(系统代理)后,在浏览器和终端就可以正常使用代理了 ```bash curl -x http://127.0.0.1:7890 ip.sb ``` 如果本地电脑安装了虚拟机,那么本地电脑就是宿主机,宿主机连接虚拟机的终端,怎么才能走代理 ? 需求:Windows 10 使用 VirtualBox 安装 Ubuntu 系统,Windows 使用 FinalShell 连接 Ubuntu 终端,让终端走代理 + 虚拟电脑 Ubuntu 系统的网络设置:桥接网卡(当前只设置了这一个网卡) + 已知 Ubuntu 的局域网 IP:`192.168.1.54` 想要在 Ubuntu 终端走宿主机的代理,要先找到宿主机的局域网 IP,在宿主机终端执行: + `192.168.1.51`:可以使用这个代理,这是宿主机物理网卡 + `192.168.1.1`:不能使用这个,这是路由的地址,不是宿主机的地址 + `192.168.56.1`:不能使用这个,这是 VirtualBox 创建的虚拟网卡地址(VirtualBox Host-Only Network) ```plaintext C:\Users\Administrator>ipconfig Windows IP 配置 以太网适配器 以太网: 连接特定的 DNS 后缀 . . . . . . . : 本地链接 IPv6 地址. . . . . . . . : fe80::6f79:9b1d:3cc2:2c8d%11 IPv4 地址 . . . . . . . . . . . : 192.168.1.51 子网掩码 . . . . . . . . . . . . : 255.255.255.0 默认网关. . . . . . . . . . . . . : 192.168.1.1 以太网适配器 以太网 2: 连接特定的 DNS 后缀 . . . . . . . : 本地链接 IPv6 地址. . . . . . . . : fe80::437d:9424:fe71:a63d%12 IPv4 地址 . . . . . . . . . .. . : 192.168.56.1 子网掩码 . . . . . . . . . . . . : 255.255.255.0 默认网关. . . . . . . . . . . . . : ``` 特别注意:一定要打开 `Clash for Windows` 的局域网连接:`General -> Allow LAN` 在虚拟机终端运行以下命令,可验证终端可以走代理了 ```bash curl -x http://192.168.1.51:7890 ip.sb ``` 但是,你可能会遇到这种情况,查看宿主机的局域网IP地址,`IPv4 地址` 输出结果不是 `192.168.*`: + 虚拟机是无法通过 `50.69.57.69` 进行代理的,没有可用的 IP,那可太糟糕了 ```plaintext C:\Users\Administrator>ipconfig Windows IP 配置 以太网适配器 以太网: 连接特定的 DNS 后缀 . . . . . . . : IPv4 地址 . . . . . . . . . . . . : 50.69.57.69 子网掩码 . . . . . . . . . . . . : 255.255.255.0 默认网关. . . . . . . . . . . . . : 192.168.57.69. ... ``` 可以给虚拟电脑添加一个网卡 `VirtualBox Host-Only Network`,然后使用 `192.168.56.1` 进行代理  #### 5. Clash Verge Rev ---- ClashX 和 Clash for Windows 的官方项目都已经在 2023 年底停止了维护。不过,开源社区已经涌现出一些非常优秀的替代品,它们在功能、界面和稳定性上都有很好的表现(当前时间:2026年4月) Clash Verge Rev 是一个跨平台(支持 macOS、Windows 和 Linux)的客户端,它继承了 Clash 系列软件的强大功能,并进行了现代化的改进。当前(2026.4)我已经放弃了 ClashX,拥抱 Clash Verge Rev。 + 活跃维护:由社区持续开发和更新,修复问题及时,是目前最主流的选择 + 功能强大:支持最新的 Clash Meta (mihomo) 内核,意味着能支持更多新协议(如 Hysteria2、VLESS Reality) + 界面现代:采用 Tauri 框架开发,相比旧版 Electron 应用,它更轻量,内存和 CPU 占用更低,界面也更美观 + 无缝迁移:操作逻辑与 ClashX 非常相似,你可以轻松导入原有的订阅链接和配置文件 Clash Verge Rev 官方链接: + [GitHub 项目主页](https://github.com/clash-verge-rev/clash-verge-rev) + [官方文档(使用指南)](https://www.clashverge.dev)