写在前面
本文面向本机网络封锁了所有国外节点的场景:无论你是直连自建节点(如搬瓦工 VLESS+Reality),还是直连机场节点,全部超时连不出去。解决方案是在国内大陆服务器上架一台"中转机",让流量先到国内服务器,再由它转发到海外出口。
相比直接购买机场的"国内中转入口",自己养一台中转机的优势是:出口可以自由组合(自建节点 / 任意机场)、线路可控、不依赖机场附带的入口。
效果说明
中转搭建成功,首先只能说明本机已经能够通过国内入口连接到海外出口,并不代表所有海外服务都会接受该出口 IP。实际可用性与所选机场的线路、机房和出口 IP 质量强相关。以一元机场为例,搭建完成后通常可以正常访问 Google、YouTube 等外网服务,但 Steam 等会拒绝数据中心或代理机房 IP 的服务,可能仍显示无连接、登录失败或无法进入商店。这属于出口 IP 的服务限制,不是国内中转链路搭建失败;遇到这种情况应更换机场节点或出口线路,再进行测试。
如果你已经有自建节点,或者希望搭建一个出口质量更可控、较少遇到 Steam 等服务拒绝机房 IP 的节点,可以阅读国内中转绕开网络封锁:阿里云 + 搬瓦工 FRP 完整教程 ;
前置条件
- 一个可用的海外出口:机场订阅(本文以一元机场为例)
- 一台国内大陆服务器(本文以阿里云轻量为例,月付试水)
- 本机已安装 Clash Verge(Windows)
1. 问题背景
在部分网络环境(校园网、企业网、特定宽带)中,到国外 IP 的代理流量会被整段封锁:
- 直连国外节点:TCP 能握手,但认证后数据流被掐断 / 直接超时;
- 网页还能上,但梯子永远连不上;
- 手机开热点却可以连——说明封锁针对的是当前网络出口,而不是节点本身。
这种情况下,唯一靠谱的办法是让流量先走一条国内可达的路径:本机 → 国内服务器 → 海外出口。
2. 诊断:确认是"按出口封禁"
在动手前先确认问题出在本机网络,而不是节点配置:
| 测试 | 方法 | 结果含义 |
|---|---|---|
| 本机直连节点 | Clash 直连节点测速 | 超时/被断 → 本机网络问题 |
| 手机热点直连同一节点 | 手机开热点,电脑连热点再测 | 能连 → 确认是本机网络封禁 |
| 国外节点连通性 | 用国外在线端口检测工具测节点 443 | 通 → 节点本身正常 |
如果"手机热点能连、本机网络不能连",就基本确认是本机出口被封,可以继续往下读。
3. 方案原理:国内中转
| |
- 中转机:一台大陆服务器,运行 mihomo。它既是"入口"(对外开 7890 端口,供本机连接),又是"出口客户端"(自己连机场/自建节点);
- 本机:Clash 里只配置一个 socks5 节点指向中转机,不关心出口细节;
- 出口:机场订阅或自建节点,由中转机决定。
为什么用 mihomo 而不是简单的 socat 端口转发? 两个实战结论:
- socat 是四层裸转发,对机场的 xhttp 协议可用,但对自建节点的 VLESS+Reality 不兼容(握手成功但数据流被掐断);
- 大厂云(阿里云/腾讯云)对部分境外 IP 存在"数据层封锁":TCP、ping、TLS 握手都通,但真实代理数据流被丢弃——例如阿里云实测连不上搬瓦工节点,但连一元机场正常。所以出口选机场(或换一家不封锁的小厂中转机)。
本文最终方案:阿里云轻量 + mihomo + 机场订阅(自动更新)。
4. 服务器选购
进入阿里云轻量应用服务器页面购买:
购买时注意:
- 类型:轻量应用服务器,通用型;
- 系统镜像:Ubuntu 24.04;
- 地域:选离你最近的国内地域(作者在安徽,选上海,延迟约 15ms);
- 付费:先买一个月试试,测试不行马上退款(5 天无理由);
- 配置:最低配即可(中转吃带宽,CPU/内存不是瓶颈),带宽选 3Mbps 以上。
买完后先设置 root 密码(用于 SSH 登录):
使用远程连接 / SSH 登录服务器,选择密码登录(“立即登录"那种有权限限制,不推荐):
5. 连通性测试(第一关)
先测国内服务器到海外出口的网络层连通性。以作者的自建节点为例:
| |
⚠️ 重要:网络层可达 ≠ 真实流量能通。 作者曾因"TCP 通、ping 通、握手通"误判阿里云能连搬瓦工,结果部署后真实代理数据全被掐断(大厂对部分境外 IP 的数据层封锁)。所以连通性测试只是第一关,最终以"真实代理流量"是否通过为准——如果发现某出口不通,就换一个(比如换成机场节点再测)。
6. 安装 mihomo
在服务器上安装 mihomo(自带重试,国内服务器直连 GitHub 可能超时,失败会自动重试):
| |
7. 创建服务器端配置
用 heredoc 创建配置文件。出口是机场节点(本文为一元机场 xhttp 节点),从机场的节点链接/订阅中提取对应字段,替换占位符:
| |
粘贴后最后补一个回车回到命令行即可:
如果想用自建节点做出口(VLESS+Reality),配置里改成
network: tcp+reality-opts,但请先确认你的中转机到该节点真实代理流量能通(见第 5 节警告)。
8. 注册服务并启动
| |
确认 mihomo 监听 7890:
| |
9. 放行防火墙端口
进入服务器防火墙页面:
放行 TCP 7890(来源 IP 建议只填你自己的公网 IP,更安全):
10. 让节点自动更新(重要)
机场会不定期更换节点参数(域名、UUID、路径),如果中转机配置是写死的,一换就断。本文提供一套自动更新方案:
- gen_config.py PY :从机场 Clash 订阅 (yaml) 解析出全部 vless+xhttp 节点,生成带"自动选择 (url-test)“的中转机配置;
- mihomo-update.sh SH :拉取订阅 → 生成配置 → 有变化就重启 mihomo。
部署(把两个文件上传到服务器,如 /etc/mihomo/):
| |
首次执行 + 定时任务(每 6 小时自动检查):
| |
之后:
| 事件 | 自动行为 |
|---|---|
| 机场换节点/UUID/域名 | 最多 6 小时自动同步(配置有变化才重启) |
| 某个节点变慢/挂掉 | url-test 每 5 分钟测速,自动切到最快可用节点 |
| 节点数量增删 | 自动同步 |
11. 制作本地 Clash 配置
从中转机配置里记下密码和中转机公网 IP。新建一个 txt,粘贴下面的模板:
| |
只需替换两个字段(不要保留 <>,保持 key: value 格式,如 password: xxxxx):
| |
创建 txt,把模板粘贴进去并修改字段,然后 Ctrl+S 保存:
在 Windows"查看"中确保显示文件扩展名是打开的:
按 F2 重命名,把后缀改成 .yaml(文件名随意,如 relay.yaml):
在 Clash Verge 中:订阅 → 新建 → 本地文件 → 选择刚才的 yaml → 保存:
12. 使用与排错
① 日常使用:用"系统代理”,别开 TUN(或给中转机 IP 加排除)
实测开着 TUN 时,Clash 内核连中转机的数据流会被 TUN 绕回自己,小请求能过、大流量卡死。两个方案:
- 简单:Clash 设置里关闭 TUN,只用系统代理;
- 进阶:保留 TUN,在"全局扩展配置"里排除中转机 IP:
| |
② 验证中转机是否正常(服务器上自测)
| |
返回 204 说明中转机出口正常。
③ 常见问题
| 现象 | 原因与解决 |
|---|---|
| 中转机自测 204,本机却连不上 | ① 阿里云防火墙 7890 没放行;② 本机开了 TUN 导致大流量卡死(见①);③ 密码/用户名填错 |
| 网页能上,某些应用(Steam 等)无连接 | 机场机房出口 IP 可能被对方服务拒(Steam 会封机房 IP)。Steam 可加启动参数 -tcp 试,或换自建节点出口 |
| 某个节点很慢/经常断 | 机场节点质量参差,url-test 会自动切;或手动在"自动选择"里锁一个实测最快的节点 |
| 机场换了节点参数 | 6 小时内自动更新(见第 10 节);没生效就手动跑 /etc/mihomo/mihomo-update.sh |
| 中转机到某出口"握手通但数据断” | 大概率是大厂对目标 IP 的数据层封锁,换出口(机场/小厂) |
结语
至此,一套"本机 → 国内中转 → 机场出口"的链路就搭建完成,并且节点自动更新、故障自动切换。核心经验一句话:网络层通不等于数据层通,部署前一定要用真实代理流量实测出口;大厂云对部分境外 IP 有数据层封锁,出口要选实测能通的。














