使用教程 精选 Clash 入门 VPN 区别 新手指南

开发者Clash全链路代理配置与终端工作流指南

2026年7月26日 更新于 2026年7月26日 约 12 分钟阅读

前言:为什么开发者需要专门的代理工作流

对软件开发者来说,代理并不只是“打开网页更快”。日常工作中的 GitHub 仓库拉取、GitLab 协作、npm 或 PyPI 依赖下载、Docker Hub 镜像获取、远程服务器 SSH 登录,以及 AI 编程工具的模型请求,往往由不同程序、不同协议和不同域名共同完成。只开启浏览器系统代理,通常只能解决其中一部分问题,终端、IDE 插件和后台服务仍可能出现超时。

常见现象包括:git clone 长时间停在某个百分比、npm install 反复显示网络错误、SSH 握手失败、容器构建时无法拉取基础镜像,或者编辑器中的 AI 助手一直处于连接状态。这些问题未必来自节点本身,也可能是系统代理没有接管命令行、DNS 解析走了错误路径、规则把开发服务分到了直连,或不同工具使用了不同的代理变量。

本文以 Clash Verge Rev 与 Mihomo 内核为例,建立一套适合开发者的全链路方案:先用 TUN 模式接管系统流量,再通过策略组和规则区分代码托管、包管理器、容器仓库、SSH 与国内服务,最后为 Git、终端和常见包管理器补充显式代理。这样既能提高访问稳定性,也能避免所有流量无差别经过代理。

本文目标

让浏览器、终端、IDE、Git、包管理器和 Docker 在同一套可控的 Clash 分流逻辑下工作,并保留国内站点与局域网服务的直连能力。

1先理解代理链路:TUN、系统代理与终端变量

Clash 在开发场景中通常有三种接管方式。第一种是系统代理,它通过 HTTP 或 SOCKS 端口为支持系统代理的应用提供服务,配置简单,但并不能保证所有命令行程序都遵循。第二种是终端环境变量,例如 HTTP_PROXYHTTPS_PROXYALL_PROXY,适合 Git、curl、npm 等明确支持代理的工具。第三种是TUN 模式,它创建虚拟网卡,从系统网络层接管连接,对不读取代理变量的程序更有效。

推荐的开发者组合是“TUN 作为兜底,环境变量作为显式控制,规则模式作为流量决策”。TUN 可以覆盖 IDE 子进程、Docker 辅助程序和部分不支持代理的应用;环境变量则让 Git 或包管理器的行为更容易诊断;Rule 模式可以避免访问公司内网、局域网 NAS 和国内镜像时产生不必要的延迟。

策略组应该如何划分

不要把所有海外服务都简单放进一个模糊的“国外流量”组。开发工作流更适合按照用途建立策略组,并为重要服务保留手动切换能力:

  • Developer-Code:用于 GitHub、GitLab、Bitbucket、代码搜索和发布平台,优先选择稳定、延迟低的节点。
  • Package-Registry:用于 npm、PyPI、RubyGems、Maven Central 等包仓库,重点关注持续下载能力和连接成功率。
  • Container:用于 Docker Hub、ghcr.io 和相关镜像服务,最好选择带宽稳定、连接数限制较少的节点。
  • AI-Tools:用于 AI 编程工具所依赖的 API 域名,建议固定地区和节点,避免短时间内频繁切换出口。
  • LAN:公司内网、家庭局域网、打印机和开发板等地址始终使用 DIRECT

专业建议

开发环境最怕“代理偶尔通、偶尔不通”。为代码托管和 AI 工具设置独立策略组,出现故障时可以快速判断是节点问题、规则问题还是应用自身问题。

2Clash 核心配置:开启 TUN 与开发者分流

打开 Clash Verge Rev 的配置页面,先确认当前配置使用的是 Mihomo 内核,并在设置中启用 TUN。不同客户端的字段名称可能略有差异,但配置思路基本一致。TUN 模式通常需要管理员权限或系统扩展授权,首次启用时请按照系统提示完成授权,然后重新连接一次配置。

tun: enable: true stack: mixed dns-hijack: - any:53 auto-route: true auto-detect-interface: true dns: enable: true enhanced-mode: fake-ip fake-ip-filter: - '*.lan' - '*.local' - 'localhost.ptlogin2.qq.com' nameserver: - https://1.1.1.1/dns-query - https://8.8.8.8/dns-query fallback: - tls://1.0.0.1 - https://dns.google/dns-query

上面的示例用于说明结构,实际 DNS 地址应根据所在网络和服务商情况调整。企业网络、校园网或需要访问内部域名的环境,不要盲目替换所有 DNS;可以将内部解析服务器加入 nameserver 或使用 nameserver-policy。若启用 fake-ip 后某个开发工具无法连接,可先查看该域名是否需要加入 fake-ip-filter,再决定是否切换 redir-host。

规则顺序比规则数量更重要

Clash 按从上到下的顺序匹配规则。开发域名规则应放在通用规则之前,否则可能先被某个 GEOIP 或 FINAL 规则处理。以下是适合放入自定义规则或 Merge 配置中的参考内容:

prepend-rules: - DOMAIN-SUFFIX,github.com,Developer-Code - DOMAIN-SUFFIX,githubusercontent.com,Developer-Code - DOMAIN-SUFFIX,githubassets.com,Developer-Code - DOMAIN-SUFFIX,gitlab.com,Developer-Code - DOMAIN-SUFFIX,npmjs.com,Package-Registry - DOMAIN-SUFFIX,npmjs.org,Package-Registry - DOMAIN-SUFFIX,pypi.org,Package-Registry - DOMAIN-SUFFIX,pythonhosted.org,Package-Registry - DOMAIN-SUFFIX,registry-1.docker.io,Container - DOMAIN-SUFFIX,docker.io,Container - DOMAIN-SUFFIX,ghcr.io,Container - DOMAIN-SUFFIX,openai.com,AI-Tools - DOMAIN-SUFFIX,anthropic.com,AI-Tools - DOMAIN-SUFFIX,local,LAN - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve - IP-CIDR,10.0.0.0/8,DIRECT,no-resolve - IP-CIDR,172.16.0.0/12,DIRECT,no-resolve

注意规则格式

策略组名称必须与配置中的 proxy-groups 完全一致。域名规则只覆盖基于域名的连接,若程序直接连接 IP,仍可能需要 TUN、进程规则或额外的 IP-CIDR 配置。

3动手操作:打通 Git、SSH、包管理器与 Docker

完成 Clash 基础配置后,不要立即修改所有工具。建议按照“端口确认—终端变量—单项测试—持久化”的顺序操作。假设 Clash 的 HTTP 代理端口为 7890,SOCKS5 端口为 7891;请先在客户端设置页面确认实际端口,再替换下面命令中的数值。

设置终端代理并进行快速测试

在 macOS、Linux 或使用 Bash 的 Windows 环境中,可以临时设置当前终端会话的代理:

export HTTP_PROXY=http://127.0.0.1:7890 export HTTPS_PROXY=http://127.0.0.1:7890 export ALL_PROXY=socks5://127.0.0.1:7891 curl -I https://github.com curl -I https://registry.npmjs.org

如果返回 HTTP 响应头,说明当前终端可以通过代理访问目标。测试完成后,可以将变量写入 ~/.zshrc~/.bashrc,但不建议在公共服务器或共享 Shell 配置中无条件写死代理。更稳妥的方式是创建别名,只有需要时执行:

alias proxyon='export HTTP_PROXY=http://127.0.0.1:7890; export HTTPS_PROXY=http://127.0.0.1:7890; export ALL_PROXY=socks5://127.0.0.1:7891' alias proxyoff='unset HTTP_PROXY HTTPS_PROXY ALL_PROXY http_proxy https_proxy all_proxy'

Git:优先使用独立配置

Git 可以通过 HTTP 代理访问 HTTPS 仓库。配置前请确认代理端口可用:

git config --global http.proxy http://127.0.0.1:7890 git config --global https.proxy http://127.0.0.1:7890 git config --global --get-regexp 'http.*proxy'

如果公司内网仓库或局域网 Git 服务不应经过代理,可以为特定域名设置直连,或者删除全局代理而改用环境变量。排查结束后,使用以下命令恢复默认:

git config --global --unset http.proxy git config --global --unset https.proxy

SSH:不要把 HTTP 代理写进 SSH

SSH 使用独立协议,不能简单套用 http.proxy。如果代码托管平台提供 HTTPS 地址,开发者可以直接改用 HTTPS;如果必须使用 SSH,则可以在 Clash TUN 已正常工作的前提下直接测试:

ssh -T [email protected] git clone [email protected]:example/project.git

若所在网络无法建立 SSH 的 22 端口,可查看目标平台是否提供备用 SSH 端口,并在 ~/.ssh/config 中配置对应的 HostNamePort。不要随意使用来源不明的 SSH 跳板或脚本,以免泄露私钥和仓库凭据。

npm、Python 与 Docker 的代理边界

npm 可以单独设置代理,但长期配置前应考虑是否会影响公司私有 Registry:

npm config set proxy http://127.0.0.1:7890 npm config set https-proxy http://127.0.0.1:7890 npm config get proxy npm config get https-proxy

如果使用 pnpm、Yarn、pip 或 Poetry,优先参考它们各自的官方代理配置,或者通过当前终端的 HTTP_PROXYHTTPS_PROXY 继承代理。Docker CLI 与 Docker daemon 不是同一个进程:命令行能访问不代表后台 daemon 一定能访问。Linux 上应根据发行版文档为 Docker 服务配置代理并重启服务,之后再执行:

docker pull hello-world docker pull node:latest
建议的验证顺序
  1. 在 Clash 面板确认 TUN 已启用,并观察连接是否命中正确策略组。
  2. 使用 curl -I 测试 GitHub、npm Registry 和容器仓库。
  3. 分别执行 git ls-remotenpm viewdocker pull
  4. 打开 IDE 或 AI 编程工具,确认其请求域名在 Clash 日志中出现。
  5. 最后测试公司内网、局域网设备和国内镜像,确保它们仍然走直连。

4故障排查、性能优化与安全边界

当某个工具仍然失败时,先不要同时更换节点、DNS 和规则。打开 Clash 的连接日志,记录目标域名、命中的规则、使用的策略组以及连接错误类型,再逐项排查。若日志中完全没有请求,说明应用可能绕过了 Clash,优先检查 TUN 权限、系统防火墙和应用自身的网络设置;若日志显示命中了错误策略组,则调整规则顺序;若命中正确但连接超时,再比较节点质量。

  • GitHub 页面能打开但 clone 失败:分别测试 HTTPS 与 SSH,检查 22 端口、凭据和远程地址,不要把浏览器成功误认为 SSH 已成功。
  • npm 仍然很慢:确认 npm 实际使用的 Registry,检查是否存在旧的代理配置,并避免代理变量与 npm 独立配置互相覆盖。
  • Docker pull 超时:确认代理配置写入的是 Docker daemon,而不是只有当前用户的终端;同时检查镜像仓库域名是否被分到 Container 组。
  • AI 工具频繁验证:固定一个稳定出口,避免多个地区节点快速切换;检查系统时间、DNS 和浏览器 WebSocket 是否正常。
  • 局域网服务无法访问:确认 192.168.0.0/1610.0.0.0/8 等私有地址使用 DIRECT,并检查系统是否存在重复 VPN 网卡。

安全方面,不建议把订阅链接、代理认证信息或 SSH 私钥提交到 Git 仓库。共享电脑上使用环境变量时,要留意命令历史、进程列表和 CI 日志可能记录代理凭据。CI/CD 环境应使用平台提供的 Secret 管理,并为构建任务设置最小权限。代理的用途是改善合法的软件开发访问,不应绕过组织的安全策略或访问没有授权的资源。

常见问题解答

开启 TUN 后,还需要设置 HTTP_PROXY 吗?

不一定。TUN 能覆盖许多不读取代理变量的程序,但显式变量更便于 Git、curl 和包管理器诊断,也能在关闭 TUN 时继续使用。建议先用 TUN 作为系统级兜底,再为需要明确代理行为的工具单独设置。

Git 的 HTTPS 代理和终端代理应该同时配置吗?

通常不需要。两者同时存在时,Git 的独立配置可能覆盖环境变量,容易造成排查混乱。个人电脑可以使用 Git 独立配置,临时环境或项目切换较多时则更适合用终端变量,并定期检查当前生效值。

为什么浏览器正常,Docker 还是无法拉取镜像?

浏览器使用的是当前用户的系统代理,而 Docker daemon 可能作为独立后台服务运行,拥有不同的环境变量和网络权限。需要分别配置 daemon 的代理,并重启服务后通过 docker info 与实际拉取测试确认。

规则越多是不是越稳定?

不是。规则过多会增加维护成本,还可能因为顺序冲突导致误分流。建议从域名后缀、策略组和局域网直连三类基础规则开始,依据 Clash 日志补充确实需要的域名,定期删除失效条目。

立即免费下载 Clash,开启流畅上网新体验 →