通过本地Clash利用中转服务器访问受限网站指南
核心思路
中转服务器(例如腾讯云服务器)扮演”跳板”的角色。本地Clash客户端将访问受限网站(如哔哩哔哩、网易云音乐等)的请求通过加密连接发送到这个跳板服务器。随后,跳板服务器代替您去访问目标网站,并将获取到的数据通过加密连接返回给您的本地Clash客户端,最终呈现给您。对于公司内网的防火墙而言,它仅能观察到您的计算机与您的中转服务器之间的加密流量,无法直接识别您实际访问的目标内容,从而达到绕过限制的目的。
步骤详解
1. 选择并在中转服务器上部署代理服务软件
a. 选择合适的代理协议/软件:
目前主流且与Clash兼容性良好的代理协议/软件包括:
- Shadowsocks (SS):
- 特点:配置相对简单,轻量。
- 服务器端推荐:
shadowsocks-libev。
- V2Ray / Xray (推荐):
- 特点:功能强大,配置灵活,支持多种协议(VMess, VLESS, Trojan等),伪装和抗封锁能力较强。
- 推荐组合:VLESS + XTLS Reality 或 VLESS + XTLS Vision,在性能和伪装性上表现优异。
- Trojan-Go (推荐):
- 特点:模仿HTTPS流量,将代理流量伪装成正常的网站浏览,抗识别能力较好。通常需要配合一个域名和SSL证书使用。
- Hysteria / Hysteria2:
- 特点:基于QUIC协议(通常是其修改版),专注于优化不稳定或高丢包网络环境下的传输性能。
- NaiveProxy:
- 特点:利用Chrome浏览器的网络栈来伪装流量,使其看起来像普通的浏览器HTTPS流量,抗审查能力强。
b. 在中转服务器上安装和配置代理服务:
- 通过SSH登录到您的中转服务器(例如腾讯云服务器)。
- 根据您选择的代理软件的官方文档或可靠的在线教程,执行安装和配置步骤。
- 配置关键信息记录下来,后续本地Clash配置会用到:
- 服务器监听的端口 (例如,
12345) - 密码 或 UUID (用于身份验证)
- 加密方法 (例如, SS的
chacha20-ietf-poly1305;VLESS/VMess的加密由其协议自身定义) - 特定协议的附加参数 (例如, VLESS的
flow类型, Trojan的password, WebSocket (WS) 传输的path和host等)
- 服务器监听的端口 (例如,
c. 配置服务器防火墙/安全组:
- 确保您的云服务器提供商(如腾讯云)的安全组规则允许外部流量访问您代理服务所监听的端口。
- 同时,检查服务器操作系统内部的防火墙(如
ufw或firewalld,它们通常基于iptables)也允许该端口的入站连接。
2. 在本地Clash客户端配置中添加中转服务器的代理节点
-
打开您本地Clash客户端的配置文件 (例如,
Godetia.yaml或mtice.yaml,也可以通过Clash Verge等图形化界面的编辑器操作)。 -
在
proxies:列表下,添加一个新的代理节点条目。该条目的参数需要与您在服务器上配置的代理服务信息完全对应。示例(假设您在服务器上配置了VLESS + Reality):
proxies: # ... 您现有的其他代理节点 ... - name: '腾讯云中转-VLESS' # 自定义节点名称,方便识别 type: vless server: YOUR_SERVER_IP # 替换为您的腾讯云服务器公网IP地址 port: YOUR_VLESS_PORT # 替换为您在服务器上为VLESS配置的端口 uuid: YOUR_VLESS_UUID # 替换为您的VLESS UUID udp: true # 如果需要UDP转发 (推荐开启) tls: true # VLESS + Reality/Vision 通常基于TLS servername: YOUR_REALITY_SERVERNAME # Reality模式下,通常是某个实际存在且可访问的网站域名 (SNI) client-fingerprint: 'chrome' # 伪装成Chrome浏览器的TLS指纹 reality-opts: public-key: YOUR_REALITY_PUBLIC_KEY # Reality公钥 short-id: 'YOUR_REALITY_SHORT_ID' # Reality shortID (通常由服务器端生成,可选) # skip-cert-verify: false # Reality模式通常不需要跳过证书验证,依赖于正确的servername示例(假设您在服务器上配置了Shadowsocks):
proxies: # ... 您现有的其他代理节点 ... - name: '腾讯云中转-SS' type: ss server: YOUR_SERVER_IP # 替换为您的腾讯云服务器公网IP地址 port: YOUR_SS_SERVER_PORT # 替换为您在服务器上为SS配置的端口 cipher: YOUR_SS_CIPHER # 例如:chacha20-ietf-poly1305 password: YOUR_SS_PASSWORD # 替换为您的SS密码 udp: true # 如果需要UDP转发 (推荐开启)重要提示: 请务必将示例中的
YOUR_SERVER_IP,YOUR_VLESS_PORT,YOUR_VLESS_UUID,YOUR_REALITY_SERVERNAME,YOUR_REALITY_PUBLIC_KEY,YOUR_REALITY_SHORT_ID,YOUR_SS_SERVER_PORT,YOUR_SS_CIPHER,YOUR_SS_PASSWORD等占位符替换为您的实际配置信息。
3. 在本地Clash中创建或修改策略组以使用新的中转节点
- 在Clash配置文件的
proxy-groups:部分,您可以:- 创建一个新的策略组,专门用于通过中转服务器访问受限网站。将您上一步添加的腾讯云中转节点作为此策略组的主要(或唯一)代理。
proxy-groups: # ... 您现有的其他策略组 ... - name: '🏢公司受限网站专用' # 自定义策略组名称 type: select # 或 url-test, fallback 等类型 proxies: - '腾讯云中转-VLESS' # 确保此名称与您在proxies部分定义的节点名称一致 # - '其他备用中转节点' # 可选 # - DIRECT # 可选,如果希望保留直连选项 - 或者,将新的中转节点添加到一个现有的策略组中。例如,如果您有一个名为
'🅱 哔哩哔哩'的策略组专门用于B站,或者一个通用的如'🚀 手动选择'的策略组,可以将中转节点名加入其proxies列表。
- 创建一个新的策略组,专门用于通过中转服务器访问受限网站。将您上一步添加的腾讯云中转节点作为此策略组的主要(或唯一)代理。
4. 在本地Clash的规则 (rules:) 中将受限网站指向该策略组
-
为您希望通过中转服务器访问的网站(如哔哩哔哩、网易云音乐等)创建或修改规则,使其流量指向您在步骤3中配置好的策略组(例如
'🏢公司受限网站专用')。 -
规则顺序非常重要: 这些针对特定网站的规则必须放在更通用的规则(例如
GEOIP,CN,DIRECT或全局MATCH规则)之前,才能确保它们被优先匹配并生效。示例:
rules: # ... 其他可能存在的、更优先的特定规则 ... - 'DOMAIN-SUFFIX,bilibili.com,🏢公司受限网站专用' - 'DOMAIN-SUFFIX,bilivideo.com,🏢公司受限网站专用' - 'DOMAIN-SUFFIX,acgvideo.com,🏢公司受限网站专用' # B站常用域名 - 'DOMAIN-SUFFIX,music.163.com,🏢公司受限网站专用' - 'DOMAIN-KEYWORD,netease-cloud-music,🏢公司受限网站专用' # 网易云音乐关键词 # 如果您使用了如 "China-Site" 的规则集,并且希望整个规则集都通过中转访问: # - 'RULE-SET,China-Site,🏢公司受限网站专用' # ... 其他分流规则 ... - 'GEOIP,CN,DIRECT' # 确保特定网站规则在此规则之前 - 'MATCH,🐟 漏网之鱼' # 或您的其他默认出站策略
5. 重新加载Clash配置
- 保存您对Clash配置文件所做的所有修改。
- 在您的Clash客户端(如Clash Verge)中重新加载配置,使新的设置生效。
总结流程
本地应用程序 (如浏览器) ➔ 本地Clash客户端 ➔ (根据规则匹配到B站/网易云) ➔ 策略组 (例如 '🏢公司受限网站专用') ➔ 代理节点 (例如 '腾讯云中转-VLESS') ➔ 您的腾讯云服务器上运行的代理服务 ➔ 目标受限网站 (B站/网易云)
通过以上步骤,您公司网络看到的只是您与腾讯云服务器之间的加密通信,而您访问受限网站的实际请求是由您的腾讯云服务器代为发起的,从而有效绕过内网的访问限制。
附录:NaiveProxy 服务器端简明配置示例
NaiveProxy 利用 Chrome 的网络栈来伪装流量,具有较好的抗审查能力。其服务器端部署通常涉及 Caddy(或其他支持 forward_proxy 指令的 Web 服务器)和 NaiveProxy 自身的二进制文件。
注意: 以下是一个基础示例,具体配置可能因您的服务器环境和需求而异。请务必参考 NaiveProxy 和 Caddy 的官方文档获取最新和最详细的指南。
1. 准备工作
- 一台境外的Linux服务器:例如您之前提到的腾讯云服务器。
- 一个域名:例如
yourdomain.com,并将其DNS A记录指向您的服务器IP地址。 - 有效的SSL证书:Caddy 可以自动通过 Let’s Encrypt 为您的域名申请和续签SSL证书,这是推荐的方式。
2. 下载和准备软件
-
下载 Caddy: 从 Caddy官网 下载适合您服务器架构的最新版本。
# 示例 (请替换为最新版本的链接和适合您系统的包) wget "https://caddyserver.com/download/linux/amd64?plugins=http.forwardproxy&license=personal" # 或者使用官方推荐的安装方式,例如通过包管理器确保下载的 Caddy 版本包含
http.forwardproxy模块 (如果您从官网下载时选择了插件)。如果使用标准发行版,可能需要自行编译或寻找包含此模块的版本。 -
下载 NaiveProxy: 从 NaiveProxy的GitHub Releases页面 下载适合您服务器架构的最新版本的
naive二进制文件。# 示例 (请替换为最新版本的链接) wget https://github.com/klzgrad/naiveproxy/releases/download/vXXX/naiveproxy-vXXX-linux-x64.tar.xz tar -xf naiveproxy-vXXX-linux-x64.tar.xz # 将解压出的 naive 可执行文件移动到合适的路径,例如 /usr/local/bin/ sudo mv naiveproxy-vXXX-linux-x64/naive /usr/local/bin/ sudo chmod +x /usr/local/bin/naive
3. 配置 Caddy (Caddyfile)
创建一个名为 Caddyfile (无后缀) 的文件,通常放在 /etc/caddy/Caddyfile 或您选择的工作目录中,内容如下:
{
# 全局选项 (可选)
# acme_ca https://acme-staging-v02.api.letsencrypt.org/directory # 测试时使用Let's Encrypt的临时CA
# email [email protected] # 用于SSL证书申请
}
yourdomain.com { # 替换为您的域名
tls [email protected] # Caddy会自动申请SSL证书,请替换为您的邮箱
# NaiveProxy核心配置
forward_proxy {
basic_auth username password # 设置您希望的用户名和密码
hide_ip
hide_via
probe_resistance
}
# (可选) 添加一个简单的静态网页作为伪装,如果直接访问域名
# root * /var/www/html
# file_server
}- 将
yourdomain.com替换为您的实际域名。 - 将
[email protected]替换为您的真实邮箱地址,用于接收 Let’s Encrypt 的通知。 - 将
username和password替换为您希望为 NaiveProxy 设置的认证凭据。
4. (旧版NaiveProxy需要)配置 NaiveProxy (config.json)
注意: 新版本的 NaiveProxy 通常不再需要单独的 config.json,其功能已集成到 Caddy 的 forward_proxy 指令中。如果您使用的是非常旧的版本,可能需要此步骤。对于新版本,可以直接跳过此步骤。
如果需要 (旧版本),创建一个 config.json 文件:
{
"listen": "socks://127.0.0.1:1080",
"proxy": "https://username:[email protected]", // 这里的用户名密码需要和Caddyfile中一致
"log": ""
}- NaiveProxy 服务端通常不再直接通过这个
config.json运行,而是由Caddy的forward_proxy模块直接处理。 - 上述
proxy字段中的username:password是客户端连接Caddy时使用的凭证,应与 Caddyfile 中的basic_auth一致。
5. 运行服务
- 运行 Caddy:
检查Caddy日志确保SSL证书申请成功并且服务正常运行:# 如果 Caddyfile 在 /etc/caddy/Caddyfile sudo systemctl start caddy # 或者,如果您在当前目录直接运行,并且Caddyfile也在当前目录 # ./caddy runsudo systemctl status caddy # 或者 journalctl -u caddy -f - 运行 NaiveProxy (通常不再需要独立运行):
如前所述,新版 NaiveProxy 的代理功能由 Caddy 的
http.forwardproxy模块处理,所以您通常不需要单独启动naive进程作为服务器。 Caddyfile 中的forward_proxy块已经配置了代理行为。
6. 本地Clash客户端配置 (回顾)
在本地Clash客户端的 proxies 部分添加如下节点 (与之前示例类似,但协议类型为 http 或 https,具体取决于您Caddy的配置和NaiveProxy的实现方式,通常NaiveProxy表现为HTTPS代理):
- name: 'NaiveProxy-中转'
type: http # NaiveProxy 通常作为 HTTP/HTTPS 代理使用
server: yourdomain.com # 您的域名
port: 443 # Caddy 默认监听的 HTTPS 端口
username: username # 您在 Caddyfile 中设置的用户名
password: password # 您在 Caddyfile 中设置的密码
tls: true # 因为 Caddy 使用了 TLS
# sni: yourdomain.com # 可选,通常 server 字段即为 SNI
# skip-cert-verify: false # Caddy 会提供有效证书,无需跳过验证确保将 yourdomain.com, username, password 替换为您的实际配置。
7. 防火墙
确保您的服务器防火墙(腾讯云安全组及服务器内部防火墙如ufw)已开放 80 (HTTP证书验证) 和 443 (HTTPS) 端口的TCP入站流量。
这就是 NaiveProxy 服务器端配置的一个基本流程。NaiveProxy 的优势在于其流量伪装,使其更难被检测和干扰。请务必结合官方文档进行操作。
重要注意事项
- 公司政策: 请务必了解并遵守您公司的网络使用政策。通过技术手段绕过公司网络限制可能存在风险。
- 服务器安全: 保证您的云服务器安全至关重要。使用强密码,配置防火墙规则(仅开放必要的代理端口),并定期更新服务器的操作系统和代理软件。
- 成本控制: 云服务器是付费服务,请留意其带宽和流量费用,避免产生预期之外的开销。
- 法律法规: 在使用代理服务时,请遵守您所在地及服务器所在地的所有相关法律法规。