机场中转自建落地排障(Nikki/Mihomo)
记录 2026-07 一轮 Nikki/Mihomo「机场 IEPL 中转 + 自建落地」排障:直连被路径干扰、测速与真用分离、节点同名冲突、REALITY 失效、Sub-Store 分池管理与命名规范。
#type / debug
#status / evergreen
#tech / network
#tech / ops
[!info] related notes
- 相关 howto: 搭建中转+落地节点
- 相关概念: 代理节点、网络代理节点架构
- 相关资源: Clash、mihomo 配置与使用、ImmortalWrt 配置
- 资产: sing-box 韩国节点、sing-box 日本节点、[[sub-store|Sub-Store]]
- 所属 MOC: 计算机网络 MOC、VPS 网络代理 MOC
机场中转自建落地排障(Nikki/Mihomo)
一句话结论
[!abstract] 核心结论 真用通但面板测速怪、直连挂但中转应通,多半不是「内核不支持 dialer-proxy」,而是:路径层(GFW/运营商)+ 同名节点覆盖 + 测速对象不是带 dialer 的那份配置 + 服务端 REALITY 实际失效 叠在一起。Sub-Store 应用「直连分机 / 落地分机 / 集合合并」管理,且 落地名必须带
-land且全局唯一。
现象
发生在 ImmortalWrt + Nikki(Mihomo 内核) + Sub-Store 管理订阅的场景。
| 现象 | 表现 |
|---|---|
| 韩国自建直连 | 家宽(移动)上几乎不可用;面板有时有延迟,真用失败 |
| 机场 IEPL 中转 + 韩国落地 | 真实代理可以上网(策略组正确选中后) |
| 面板测速 | 落地节点延迟不准:像在测直连,未体现中转 |
| 日本落地 SS + 中转 | 可通 |
| 日本落地 VLESS + 中转 | 长期不通;直连也不通 |
| 日志误读 | 大量 Google 组 dial tcp 172.217... timeout,易被当成落地失败 |
[!warning] 日志噪声 若当前策略组故意选了 DIRECT,Google/YouTube 直连超时是预期现象,不能用来否定中转落地链路。
原因(分层)
1. 路径层:家宽直连部分云厂商 IP 不可达
对自建韩国 Azure 出口实测(对照):
| 路径 | 结果 |
|---|---|
| 家宽 → 韩国 IP 的 TCP 业务 | 易出现「本机 connect 成功、服务端无日志」类干扰 |
| 家宽 → 韩国 VLESS/SS 直连 | 失败或 REALITY 校验失败 |
| 境外机 / 机场 IEPL → 韩国 | 正常 |
IEPL dialer → 韩国落地(sing-box detour / Mihomo dialer-proxy) | 正常,出口为韩国机公网 IP |
含义:
- 问题首先是 「到不了落地 IP」,不是账号密码随机坏了。
- 中转的价值是把第一跳换成机场优化线路,再由境外去拨自建落地。
2. 配置层:dialer-proxy 只写在落地节点
flowchart LR
Client[Nikki 客户端] --> Dialer[机场 IEPL 节点]
Dialer --> Land[自建落地 server:port]
Land --> Internet[目标站点]
- 只在落地节点写
dialer-proxy: 🚀 IEPL-某区域-Final - 机场节点 不要写 dialer
dialer-proxy的字符串必须与proxy-groups里组名 完全一致(含 emoji、空格)
3. 客户端层:同名节点导致测速打到「直连版」
| 池 | 错误示例 | 正确示例 |
|---|---|---|
| 直连 | Azure-Korea-VLESS-Vision-Reality | 保持 -dd / 无 land 后缀 |
| 落地 | 同名再写一份 | Azure-Korea-VLESS-Vision-Reality-land |
Mihomo 中 proxy 名全局唯一。直连 sub 与落地 sub 同名时:
- 后加载覆盖先加载
- 面板 delay 可能测的是 无 dialer 的直连定义
- 策略组若引用到带 dialer 的定义,真用仍可能通
→ 典型症状:测速像直连失败,真用中转成功(日本因命名带 -land 曾避开此坑;韩国曾踩坑)。
4. 服务端层:日本 VLESS Reality 实际失效
对照结果:
| 检查 | 结果 |
|---|---|
SS :3451 | 通 |
VLESS :6721 TCP | 端口开着 |
| 公私钥数学匹配 | 仍可能 REALITY: processed invalid connection |
| 本机 loopback VLESS | 同样失败 → 不是家宽/中转独有 |
重生 Reality 密钥 + 握手改为 updates.cdn-apple.com | loopback 与中转均恢复 |
教训:端口在听 + 密钥「看起来对」≠ Reality 可用;本机 loopback 自测是最快判别。
5. 管理面:Sub-Store 结构不清晰会放大上述问题
旧形态问题:
- 落地参数手抄第二份,与直连漂移
- 落地 URL 缺
?target=ClashMeta时丢掉dialer-proxy - oracle(大阪)落地 dialer 误指 美国 Final
- 多条分发路径(admin API / Gist artifact)内容漂移
排查过程(可复用顺序)
-
分清测速 vs 真用
- 测速:节点 delay API
- 真用:策略组
now+ 访问cdn-cgi/trace看出站 IP
-
证明路径
- 境外/中转能否拨到落地 IP
- 家宽直连是否服务端无日志
-
证明 dialer 机制
- 用 Mihomo 最小配置:
dialer-proxy→ 单条 IEPL + 落地 - 或 sing-box 等价:
detour - 成功则出口应为落地机公网 IP
- 用 Mihomo 最小配置:
-
查同名
- 直连集合与落地集合是否共享
name
- 直连集合与落地集合是否共享
-
查服务端
- SS/VLESS 分别测
- Reality:本机
127.0.x.x:port回环
-
查 Sub-Store 下载
- 落地必须
target=ClashMeta(或等价)保留 dialer - 主配置
land-nodesURL 是否指向 collection
- 落地必须
解决方案
A. 客户端拓扑(保持)
机场 IEPL(中转,无 dialer)
↑ dialer-proxy
自建落地(SS / VLESS-Vision-Reality,有 dialer)
B. 命名契约
{云}-{区域}-{标识}-{协议}[-特性]-{角色}
角色:
-dd 直连
-land 落地(中转拨入)
示例:
Azure-Korea-llh-SS-dd/Azure-Korea-llh-SS-landoracle-osaka-SS-land(大阪节点,日本 IEPL 中转,不要美国 Final)
C. Sub-Store 推荐结构(已按此演进)
subs/
Azure-Korea-llh # 直连真相
Azure-Korea-llh-land # 由直连生成:改名 + dialer
Azure-Japan-hhc
Azure-Japan-hhc-land
oracle-osaka
oracle-osaka-land # dialer = 🚀 IEPL-日本-Final
collections/
all-self-node-for-collect-directly
all-self-node-for-land # 合并各 *-land
file: all-nodes-all-ways
proxy-providers:
direct-collect → collection/all-self-node-for-collect-directly
land-nodes → collection/all-self-node-for-land?target=ClashMeta
airport-... → 机场订阅(路由器 DIRECT 拉取)
原则:
- 参数只改直连 sub
- 落地 = clone(直连) +
-land+dialer-proxy - Nikki 单一主订阅:
api/file/all-nodes-all-ways - 避免与过期 Gist artifact 混用
D. 服务端修复要点
- 韩国:直连被扰时依赖中转;协议本身可保留 Vision+Reality
- 日本 VLESS:密钥/SNI 异常时 重生 Reality 密钥,并同步 Sub-Store 直连 + 落地
- Azure NSG:额外端口必须放行后再做到达性实验
E. 面板与策略
- 默认代理优先:
机场中转 → 自有落地 store-selected会记住 DIRECT:改结构后强制重选- 同名修复后,测速应对准
*-land,直连应对准*-dd
回归验证
| 检查 | 期望 |
|---|---|
落地订阅含 dialer-proxy | ClashMeta 下载可见 |
| 无跨 sub 同名 | 直连/落地 name 不重复 |
韩国 *-land 真用 | cdn-cgi/trace 出口为韩国机 IP |
| 日本 SS-land 真用 | 出口为日本机 IP |
| 日本 VLESS-land(修复后) | 中转或境外可达时成功 |
| 家宽直连韩国 | 仍可能失败(路径问题,预期) |
| 测速 | *-land 有延迟;勿与 *-dd 混淆 |
经验清单
- 先证路径,再疑协议
- dialer 只写落地;组名精确匹配
- 落地与直连禁止同名
- 测速对象 ≠ 策略组当前选中 时不要用日志误判
- REALITY 用本机 loopback 一票否决
- Sub-Store:直连真相 / 落地派生 / 集合合并 / 单一主配置
- 区域中转要对齐地理:大阪节点用日本 IEPL,不要误绑美国 Final
Related notes
- 搭建中转+落地节点 — dialer-proxy 基础做法
- 代理节点 — 直连 / 中转 / 落地概念
- 网络代理节点架构 — 多节点运维面
- ImmortalWrt 配置 — Nikki 路由器侧
- Sub-Store Azure + Cloudflare Access 部署实践 — 订阅托管
- 计算机网络 MOC
- VPS 网络代理 MOC