Created
August 19, 2026 09:45
-
-
Save wey-gu/94a864e3afb9f65a6865da8501667f29 to your computer and use it in GitHub Desktop.
prompt-setup_rule-based_network_infra_for_ai_worker_in_prc.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # 云服务器 + Hysteria2 + Mihomo + Sub-Store 网络方案 Agent 任务书 | |
| > 本文可以直接交给负责部署的 AI Agent。它适用于一台或多台 Linux 云服务器, | |
| > 服务器可以来自 DMIT、Microsoft Azure、Google Cloud 或其他合适的 VPS | |
| > 供应商。VXLink 和 Proxy-Cheap 都是可选商业服务;没有购买它们时,基础方案 | |
| > 仍应能够独立工作。 | |
| ## 任务目标 | |
| 你是一名负责 Linux、Hysteria2、Mihomo 和 Sub-Store 的运维 Agent。请帮助我 | |
| 设计并部署一套集中维护、可以验证、可以回滚的个人或团队网络访问方案。DMIT | |
| 是常用选择,但不是架构上的硬性依赖。 | |
| 不要假设我熟悉 VPS、端口、TLS、SOCKS5、订阅或代理组。每进入一个阶段前, | |
| 先用简单语言解释将要做什么、为什么需要、可能产生什么费用或中断,再征得 | |
| 相应授权。 | |
| 请遵守服务器供应商、网络服务供应商和当地法律的服务条款。不要将本方案用于 | |
| 未经授权访问、隐藏违法活动或攻击第三方系统。 | |
| ## 首先理解各个层次 | |
| 这些组件不是同一种东西,也不能相互替代。 | |
| | 组件 | 类型 | 在系统中的职责 | 是否必需 | | |
| | --- | --- | --- | --- | | |
| | 云服务器 | DMIT、Azure、GCP 等商业 IaaS/VPS | 提供运行 Hy2 服务端的 Linux VM 和公网出口 | 是,可任选合适供应商 | | |
| | Hysteria2 / Hy2 | 开源协议及实现 | 加密客户端到服务器的 UDP/QUIC 连接 | 是 | | |
| | VXLink | 商业转发服务 | 在客户端与所选云服务器之间增加可选 UDP 入口 | 否 | | |
| | Proxy-Cheap | 商业代理 IP 服务 | 为所选云服务器提供可选的其他地区出口 IP | 否 | | |
| | Sub-Store | 开源订阅管理项目 | 集中维护节点并生成客户端订阅 | 推荐集中部署一套 | | |
| | Mihomo | Clash 配置生态的开源规则代理内核 | 在用户设备上读取 profile、匹配规则并选择节点 | 使用完整 Mihomo profile 时需要 | | |
| Sub-Store 不转发业务流量。它只生成配置。用户实际访问网站时,不会经过 | |
| Sub-Store。 | |
| Mihomo 通常位于用户侧。它可能运行在电脑、Android 设备或 OpenWrt 路由器上, | |
| 而不是运行在 Hy2 云服务器上。iPhone 上的 Shadowrocket 等客户端不一定使用 | |
| Mihomo 内核,但可以消费 Sub-Store 生成的相应节点订阅。 | |
| ## 流量路径 | |
| ### 最小可用方案 | |
| ```text | |
| 应用 | |
| -> 用户设备上的 Mihomo 或兼容客户端 | |
| -> Hysteria2 | |
| -> 云服务器 | |
| -> Internet | |
| ``` | |
| 这是第一阶段必须先完成的方案。它不依赖 VXLink 或 Proxy-Cheap。 | |
| ### 增加 Proxy-Cheap 出口 | |
| ```text | |
| 应用 -> Mihomo/兼容客户端 -> Hysteria2 -> 云服务器 | |
| -> Proxy-Cheap SOCKS5 -> Internet | |
| ``` | |
| 此时客户端仍然连接云服务器上的 Hy2。Proxy-Cheap 位于服务端后面,只改变 | |
| 最终出口 IP。它不改善客户端连接云服务器的线路。 | |
| ### 增加 VXLink 入口 | |
| ```text | |
| 应用 -> Mihomo/兼容客户端 -> VXLink UDP 入口 | |
| -> 云服务器的 Hy2 UDP 端口 -> Internet | |
| ``` | |
| VXLink 只转发入口流量,不提供 Hy2 的认证、TLS 或最终出口。 | |
| ### 同时使用两项可选服务 | |
| ```text | |
| 客户端 | |
| -> Mihomo 或兼容客户端 | |
| -> VXLink UDP 入口 | |
| -> 云服务器上的 Hysteria2 | |
| -> Proxy-Cheap SOCKS5 | |
| -> Internet | |
| ``` | |
| 配置分发与业务流量是两条不同路径: | |
| ```text | |
| 配置路径:Sub-Store -> Mihomo profile -> 用户设备上的 Mihomo | |
| 流量路径:用户应用 -> Mihomo -> 选中的 Hy2 节点 -> 云服务器 -> Internet | |
| ``` | |
| 排障和设计时必须区分三个地址: | |
| 1. **入口 IP**:客户端直接连接的云服务器 IP 或 VXLink IP。 | |
| 2. **Hy2 后端 IP**:实际运行 Hysteria2 服务端的云服务器 IP。 | |
| 3. **最终出口 IP**:目标网站看到的云服务器 direct IP 或 Proxy-Cheap IP。 | |
| VXLink 只替换第一项,Proxy-Cheap 只替换第三项。二者不能相互替代。 | |
| ## 设计原则和已知限制 | |
| ### 为什么不让所有流量都走 cheap | |
| cheap 出口是用途受控的补充出口,不应成为所有业务的默认承载路径,原因包括: | |
| - 套餐可能限制并发连接数、带宽、月流量、单连接时长或允许的协议。 | |
| - SOCKS5 可用于 TCP 不代表支持 `UDP ASSOCIATE`;即使支持,也可能有较小的 UDP | |
| 会话额度或动态中继端口限制。 | |
| - 云服务器到 cheap 出口多了一跳,延迟、抖动和故障概率都会增加。 | |
| - 共享、轮换或信誉不稳定的出口 IP 可能触发登录、支付和反滥用风控。 | |
| - 自动测速组可能在会话中途更换出口,导致账号地区变化或长连接中断。 | |
| 视频会议、语音通话、远程桌面和在线游戏通常依赖低抖动 UDP、较多并发流、 | |
| STUN/TURN 或长连接。除非 cheap 供应商明确支持这些能力并通过目标网络实测, | |
| 否则这类流量应进入单独的 `REALTIME` 组,默认选择稳定 direct 节点。视频点播 | |
| 虽然对实时延迟不那么敏感,但会持续消耗带宽和流量,应放在单独的 `VIDEO` 组。 | |
| AI 服务可以按成本需求进入 `CHEAP`,但也要保留手动切换到稳定节点的选项。 | |
| 支付、账单和金融服务必须进入 `PAYMENT` 组,默认固定到地区一致、长期稳定且 | |
| 信誉良好的专用出口。不要把 `PAYMENT` 默认指向会自动轮换的 `CHEAP-AUTO`; | |
| 如必须使用购买的代理,应固定选择一个已验证的静态出口,不在交易过程中切换。 | |
| ### VXLink 能解决什么,不能解决什么 | |
| 当客户端到云服务器公网 IP 的路径被干扰、路由很差或无法直连,而 VXLink 入口 | |
| 仍能访问该云服务器时,VXLink 提供一条替代入口。目标网站仍然看到 Hy2 后端的 | |
| direct 出口或其后面的 cheap 出口;VXLink 不会自动改变最终出口 IP,也不能解决 | |
| 目标网站封禁最终出口、后端 VM 停机、云账号被暂停或后端防火墙错误等问题。 | |
| 本文的成熟部署可以租用一台固定的 VXLink 枢纽服务器,在同一个稳定入口上管理 | |
| 多条 Link,并获得较明确的容量和入口地址。普通用户更可能购买固定端口转发: | |
| - 一条规则通常对应一个入口端口、一个协议和一个后端地址。 | |
| - TCP 和 UDP 可能需要分别购买或创建规则;Hy2 必须有 UDP。 | |
| - 套餐可能限制端口数、并发连接/流、带宽、流量和可修改后端的次数。 | |
| - 后端 IP 改变后通常必须更新规则;固定转发本身不是自动故障转移。 | |
| - 固定转发不能可靠承载使用动态 UDP relay 端口的通用 SOCKS5 服务。 | |
| - 固定枢纽也是单独的故障域,需要监控容量、流量、续费和入口可达性。 | |
| 购买前应让供应商明确说明限制,而不是把网页上的“支持 TCP/UDP”理解为无限 | |
| 连接、无限带宽或任意协议都能透明转发。 | |
| ### 多故障域高可用 | |
| 高可用不是简单复制更多同类节点。设计时至少区分客户端、配置管理、入口转发、 | |
| Hy2 后端、云供应商/区域、cheap 出口供应商和规则上游这些故障域: | |
| - 至少准备两个不同云供应商或不同区域的 direct Hy2 节点,例如 DMIT 与 | |
| Azure/GCP,或新加坡与日本;避免所有后端依赖同一账号和同一机房。 | |
| - 对关键后端同时保留 direct 地址和可选 VXLink 地址;需要更高入口可用性时使用 | |
| 两个独立枢纽/入口,而不是只为同一枢纽创建更多端口。 | |
| - cheap 出口应准备两个供应商或地区,并独立验证 TCP、UDP、并发和目标网站; | |
| 不能因为入口不同就把同一个 cheap 供应商误算为多出口容灾。 | |
| - `url-test` 适合按延迟选择一般网页节点;`fallback` 适合有顺序的健康故障转移。 | |
| `REALTIME` 和 `PAYMENT` 应优先稳定、固定选择,避免会话中途频繁切换。 | |
| - Sub-Store 是配置管理面,不在业务流量路径中。客户端应缓存最后一份有效配置, | |
| Sub-Store 暂时不可用不应立即中断现有流量。 | |
| - 健康检查 URL 成功只证明某个测试目标可达,不能证明 UDP、并发额度、会议质量 | |
| 或支付网站接受该出口。应为这些能力分别建立合成测试和告警。 | |
| ## 官方参考资料 | |
| 执行前优先阅读官方资料,不要依赖年代不明的博客配置。 | |
| ### DMIT | |
| - 官网:https://www.dmit.io/ | |
| - 官方文档:https://docs.dmit.io/ | |
| - 价格:https://www.dmit.io/pages/pricing?language=english | |
| - Acceptable Use Policy:https://www.dmit.io/pages/aup | |
| DMIT 是服务器供应商。选购时重点比较机房、线路、月流量、端口速率、IPv4 | |
| 费用、换 IP 政策和服务条款。Hy2 通常不需要很多 CPU;UDP 稳定性、线路质量 | |
| 和流量额度更重要。 | |
| ### Microsoft Azure 与 Google Cloud | |
| 除 DMIT 外,也可以在 Azure 或 Google Cloud 租用 Linux VM。例如可选择新加坡 | |
| 或日本区域,作为单独节点或跨供应商容灾节点。 | |
| - Azure VM 区域列表: | |
| https://learn.microsoft.com/en-us/azure/reliability/regions-list | |
| - Azure Linux VM 文档: | |
| https://learn.microsoft.com/en-us/azure/virtual-machines/linux/ | |
| - Google Compute Engine 区域与可用区: | |
| https://cloud.google.com/compute/docs/regions-zones | |
| - Google Compute Engine VM 文档: | |
| https://cloud.google.com/compute/docs/instances | |
| 常见区域标识包括: | |
| | 云平台 | 新加坡 | 日本 | | |
| | --- | --- | --- | | |
| | Azure | `southeastasia` | `japaneast`,也可评估 `japanwest` | | |
| | Google Cloud | `asia-southeast1` | 东京 `asia-northeast1`,大阪 `asia-northeast2` | | |
| 区域名称不代表从用户网络访问一定更快。创建前应从目标网络实测延迟、UDP 丢包 | |
| 和路由。Azure/GCP 还要分别检查: | |
| - VM 价格、磁盘价格和公网 IPv4 费用。 | |
| - 出站流量单价及免费额度。 | |
| - 临时公网 IP 与静态公网 IP 的生命周期。 | |
| - Azure NSG 或 Google Cloud VPC firewall 是否开放 Hy2 UDP。 | |
| - Linux 主机防火墙是否同步开放该端口。 | |
| - 账号配额、区域容量及服务条款。 | |
| - 删除 VM 时公网 IP、磁盘和快照是否继续计费。 | |
| 如果用户已经登录并授权 Azure CLI 或 Google Cloud CLI,Agent 可以帮助盘点和 | |
| 部署;创建付费资源、调整预算或删除资源仍需明确授权。 | |
| ### Hysteria2 | |
| - 官网及文档:https://v2.hysteria.network/ | |
| - 服务端入门:https://v2.hysteria.network/docs/getting-started/Server/ | |
| - 客户端入门:https://v2.hysteria.network/docs/getting-started/Client/ | |
| - 完整服务端配置:https://v2.hysteria.network/docs/advanced/Full-Server-Config/ | |
| - ACL:https://v2.hysteria.network/docs/advanced/ACL/ | |
| - URI 分享格式:https://v2.hysteria.network/docs/developers/URI-Scheme/ | |
| - GitHub:https://github.com/apernet/hysteria | |
| Hysteria2 官方服务端支持 `direct`、`socks5` 和 `http` 出站。必须以实际安装 | |
| 版本的官方文档为准,并在部署前运行配置检查。 | |
| ### VXLink | |
| - 官网:https://www.vx.link/ | |
| - 控制台:https://vx.link/dashboard | |
| 本方案使用 VXLink 的 Link TCP/UDP 端口转发能力。具体节点、入口地区、流量 | |
| 和价格可能变化,应以购买当日控制台和客服说明为准。Hysteria2 基于 UDP, | |
| 因此对应 Link 必须支持并启用 UDP 转发。固定枢纽服务器与普通固定端口转发套餐 | |
| 在端口数、并发、流量、可修改后端能力和故障域上可能不同,Agent 必须按实际 | |
| 订单逐项记录,不能把本文部署所用的固定枢纽能力假设为所有账户默认拥有。 | |
| ### Proxy-Cheap | |
| - 官网:https://www.proxy-cheap.com/ | |
| - 价格入口:https://www.proxy-cheap.com/pricing/static-residential-proxies | |
| - 官方帮助中心:https://support.proxy-cheap.com/hc/en-us | |
| - HTTP/SOCKS5 切换说明: | |
| https://support.proxy-cheap.com/hc/en-us/articles/24651208638365-How-to-change-proxy-protocol | |
| Proxy-Cheap 是一个专有产品名称。本文节点名中的 `cheap` 是“低成本或特殊 | |
| 地区出口”的分类标签,不代表任何产品都便宜,也不代表它一定支持 SOCKS5。 | |
| 官方资料显示,不同产品协议能力不同。例如部分 rotating residential 产品只 | |
| 支持 HTTP,不能默认用于本方案。并发连接、UDP、带宽、会话时长、IP 是否共享 | |
| 或轮换等限制必须以具体订单和实测为准。 | |
| ### Sub-Store | |
| - Sub-Store GitHub:https://github.com/sub-store-org/Sub-Store | |
| - Sub-Store 配置说明: | |
| https://github.com/sub-store-org/Sub-Store/blob/master/config/README.md | |
| - Sub-Store Releases:https://github.com/sub-store-org/Sub-Store/releases | |
| Sub-Store 是开源订阅管理项目,不是线路、客户端或代理供应商。它可以生成 | |
| Mihomo/OpenClash 使用的完整 profile,也可以为其他兼容客户端生成节点订阅。 | |
| ### Mihomo:原 Clash.Meta 内核 | |
| - Mihomo GitHub:https://github.com/MetaCubeX/mihomo | |
| - 官方文档:https://wiki.metacubex.one/ | |
| - 配置说明:https://wiki.metacubex.one/en/config/ | |
| - rule-providers: | |
| https://wiki.metacubex.one/en/config/rule-providers/ | |
| Mihomo 是规则代理内核,早期通常称为 **Clash.Meta**,属于 Clash 配置和 API | |
| 生态的延续实现。很多界面仍会出现 Clash、Clash Meta、Meta 或 Mihomo 等名称。 | |
| 本文以当前项目名 `Mihomo` 为准。 | |
| Mihomo 本身主要是内核,不等于图形界面,也不等于订阅服务: | |
| - Sub-Store 生成和发布配置。 | |
| - Mihomo 读取配置、处理 DNS、匹配规则、选择代理组和连接 Hy2 节点。 | |
| - OpenClash、Clash Verge 类应用或 Dashboard 提供安装、控制和可视化界面。 | |
| - Hysteria2 服务端运行在云服务器上,接收 Mihomo 发来的 Hy2 连接。 | |
| 典型安装位置: | |
| | 位置 | 常见形态 | 影响范围 | | |
| | --- | --- | --- | | |
| | OpenWrt 路由器 | OpenClash 管理 Mihomo 内核 | 可以透明处理整个局域网设备流量 | | |
| | Windows/macOS/Linux 电脑 | Clash Verge 类前端搭配 Mihomo | 处理该电脑的系统代理或 TUN 流量 | | |
| | Android | 支持 Mihomo/Clash Meta 的客户端 | 处理该手机的 VPN/TUN 流量 | | |
| | iPhone/iPad | Shadowrocket 等独立客户端 | 通常不运行 Mihomo,但可导入兼容节点订阅 | | |
| 系统代理通常只接管遵循系统代理设置的应用;TUN 或路由器透明代理能够覆盖更广 | |
| 的 TCP/UDP 流量,但需要额外处理 DNS、路由和回环问题。Agent 必须先确认用户 | |
| 希望由路由器统一接管,还是由每台设备运行本地客户端。排障时不要同时叠加多层 | |
| TUN/透明代理,否则很难判断实际使用了哪个节点。 | |
| ## 采购决策 | |
| 不要立即购买全部组件。先列出方案、月费、流量额度、续费价格和退出成本, | |
| 再由用户决定。 | |
| | 方案 | 需要购买 | 适用情况 | | |
| | --- | --- | --- | | |
| | 基础版 | 1 台 DMIT/Azure/GCP/VPS | 只有一个 direct Hy2 出口 | | |
| | 多出口版 | 云服务器 + Proxy-Cheap | 需要美国、新加坡等不同出口 | | |
| | 转发版 | 云服务器 + VXLink | 云服务器直连不稳定或路由较差 | | |
| | 完整版 | 云服务器 + Proxy-Cheap + VXLink | 同时需要替代入口和不同出口 | | |
| | 高可用版 | 多区域或多供应商 VM | 需要跨机房、跨供应商容灾 | | |
| Agent 可以帮助打开产品页、解释字段、比较套餐和计算成本,但未经用户明确确认, | |
| 不得下单、续费、充值或产生费用。支付、2FA 和最终购买确认应由用户完成。 | |
| ### 购买云服务器前确认 | |
| - 目标用户到机房的实测延迟和丢包,而不只看机房名称。 | |
| - 月流量是单向计费还是双向计费。 | |
| - 端口速率是否共享或有公平使用限制。 | |
| - 是否包含 IPv4,以及换 IP 的条件和费用。 | |
| - 普通 Tier 1 与优化线路的差异。 | |
| - DMIT、Azure、GCP 等供应商之间的出口流量和公网 IPv4 成本差异。 | |
| - 操作系统、虚拟化和 UDP 服务是否受限制。 | |
| - 服务条款是否允许预期用途。 | |
| ### 购买 VXLink 前确认 | |
| - 入口地区到客户端和后端云服务器的双向质量。 | |
| - 是否明确支持 UDP Link。 | |
| - 流量、带宽、连接数和端口数量限制。 | |
| - 购买的是共享固定端口转发,还是一台容量独立的固定枢纽服务器。 | |
| - 连接数指 TCP 连接、UDP flow、并发会话还是其他计费口径。 | |
| - 是否可以随时修改后端 IP 与端口。 | |
| - TCP 和 UDP 是否需要建立两条规则。 | |
| - 后端是否需要白名单。 | |
| - 是否提供健康检查、API、多个入口或自动故障转移;没有书面说明就按“不提供”设计。 | |
| - 超额计费、续费、故障和退款政策。 | |
| ### 购买 Proxy-Cheap 前确认 | |
| - 产品是否明确支持 SOCKS5,而不只是 HTTP。 | |
| - SOCKS5 是否支持 UDP ASSOCIATE;不要仅根据“支持 SOCKS5”自行推断。 | |
| - 是固定 IP、粘性会话还是轮换地址。 | |
| - 支持用户名/密码认证还是 IP 白名单。 | |
| - 国家、城市和 ASN 是否满足需要。 | |
| - 上传与下载是否都计入流量。 | |
| - 并发、速率和连接时长限制。 | |
| - 是否允许会议、WebRTC、流媒体、自动化请求或所需目标网站。 | |
| - IP 不可用时能否更换。 | |
| - 目标网站是否接受该出口 IP。 | |
| 建议先购买最小套餐或短周期套餐,完成真实测试后再扩容。 | |
| ## 执行前向用户收集的信息 | |
| 请逐项询问并解释用途: | |
| - 云服务器供应商、订阅/项目、主机别名、公网 IP、系统、SSH 用户和端口。 | |
| - 用户本地 SSH 公钥;绝不要求上传私钥。 | |
| - 每台服务器所在地区和希望承担的角色。 | |
| - 当前已有服务、监听端口和防火墙规则。 | |
| - 希望使用的 Hy2 UDP 端口。 | |
| - TLS 域名和证书方案,或是否接受受控的自签名证书方案。 | |
| - 每个 Proxy-Cheap 地址、端口、用户名、密码和产品类型。 | |
| - 是否需要 VXLink;若需要,使用哪个项目、入口地区和套餐。 | |
| - Sub-Store 部署位置及允许的访问方式。 | |
| - 客户端类型:OpenClash、Mihomo、Clash Verge、Shadowrocket 等。 | |
| - 维护窗口和当前不能中断的连接。 | |
| 不要在终端回显、日志或最终报告中打印完整密码、token、私钥和订阅密钥。 | |
| ## 分阶段实施 | |
| ### 阶段 1:只读盘点 | |
| 在任何修改之前输出盘点表: | |
| - 每台服务器的系统、CPU、内存、磁盘和公网地址。 | |
| - SSH 服务、现有端口、systemd 服务和容器。 | |
| - 主机防火墙及云防火墙状态。 | |
| - 是否已经安装 Hysteria2、Docker、Sub-Store 或其他代理服务。 | |
| - 现有配置和流量是否正在使用。 | |
| 先提出端口和节点规划,得到用户确认后再写配置。 | |
| ### 阶段 2:备份和 SSH 安全 | |
| 这里的“SSH 免密”是指使用公钥认证,不是把服务器设置成无密码、无认证状态。 | |
| 用户的私钥始终保存在自己的电脑上,服务器只保存对应公钥。 | |
| #### 2.1 确认初始登录方式 | |
| 先确认云平台提供的是哪一种初始入口: | |
| - 创建 VM 时注入的 SSH 公钥。 | |
| - 云控制台生成或下载的临时密钥。 | |
| - Azure CLI、Google Cloud CLI 或浏览器控制台 SSH。 | |
| - 服务商给出的初始用户名和密码。 | |
| 记录云平台串行控制台、VNC、Rescue Mode 或 Web Console 等恢复入口。没有恢复 | |
| 入口时,不要贸然修改 SSH、防火墙或网络配置。 | |
| #### 2.2 在用户电脑上准备专用密钥 | |
| 先检查用户是否已有合适的 Ed25519 公钥: | |
| ```bash | |
| find ~/.ssh -maxdepth 1 -name '*.pub' -print | |
| ``` | |
| 如果没有,建议为这套服务器生成独立密钥: | |
| ```bash | |
| ssh-keygen -t ed25519 -a 64 \ | |
| -f ~/.ssh/<PROJECT>-ed25519 \ | |
| -C '<USER>@<PROJECT>' | |
| ``` | |
| 建议为私钥设置 passphrase,再由系统 Keychain 或 `ssh-agent` 缓存,从而兼顾 | |
| 便利和私钥被复制后的安全性: | |
| ```bash | |
| ssh-add ~/.ssh/<PROJECT>-ed25519 | |
| ``` | |
| Agent 不得要求用户发送私钥内容。它只能读取用户明确指定的 `.pub` 公钥,或让 | |
| 用户自行将公钥粘贴到云平台。 | |
| #### 2.3 把公钥安装到服务器 | |
| 优先在创建 VM 时通过云平台的 SSH key/metadata 功能注入公钥。对于已经能够 | |
| 登录的服务器,可以使用: | |
| ```bash | |
| ssh-copy-id -i ~/.ssh/<PROJECT>-ed25519.pub \ | |
| -p <INITIAL_SSH_PORT> <SSH_USER>@<SERVER_IP> | |
| ``` | |
| 如果服务器没有 `ssh-copy-id`,由 Agent 在已认证会话中将公钥追加到目标用户的 | |
| `~/.ssh/authorized_keys`,并校正权限: | |
| ```bash | |
| chmod 700 ~/.ssh | |
| chmod 600 ~/.ssh/authorized_keys | |
| ``` | |
| 不要覆盖已有 `authorized_keys`,不要把公钥装到错误用户,也不要把私钥上传到 | |
| 服务器。 | |
| 如果服务商初始只提供 root,Agent 应先说明并征得同意,然后创建一个普通管理 | |
| 用户,将其加入对应系统的 sudo/wheel 管理组,并只把用户公钥安装到这个账号。 | |
| 必须验证该账号能够登录和执行必要的 `sudo` 操作,之后才讨论限制 root 远程 | |
| 登录。创建用户和管理组的命令因 Debian/Ubuntu、RHEL 系列等发行版而异,必须 | |
| 先识别系统,不能盲目复制命令。 | |
| #### 2.4 配置本地 SSH 别名 | |
| 在用户电脑的 `~/.ssh/config` 中使用清晰别名: | |
| ```sshconfig | |
| Host <SERVER_ALIAS> | |
| HostName <SERVER_IP_OR_DOMAIN> | |
| User <SSH_USER> | |
| Port <SSH_PORT> | |
| IdentityFile ~/.ssh/<PROJECT>-ed25519 | |
| IdentitiesOnly yes | |
| ServerAliveInterval 30 | |
| ServerAliveCountMax 3 | |
| ``` | |
| 首次连接时核对主机指纹。公网 IP 被替换或系统重装后,不要直接忽略 host key | |
| 变化,应从云控制台或已可信通道重新核对指纹。 | |
| #### 2.5 用第二个会话验收 | |
| 保持当前会话不要退出,在另一个终端执行: | |
| ```bash | |
| ssh -vv <SERVER_ALIAS> | |
| ``` | |
| 确认以下事项后才算通过: | |
| - 登录明确使用了预期私钥。 | |
| - 无需输入服务器账号密码。 | |
| - 目标用户和主机正确。 | |
| - `sudo` 能按预期使用。 | |
| - 退出后可以再次建立新连接。 | |
| #### 2.6 可选 SSH 加固 | |
| 只有密钥登录和恢复控制台都验证后,才向用户提出以下可选操作: | |
| - 禁止 root 直接登录。 | |
| - 禁止 SSH 密码认证。 | |
| - 限制允许登录的用户。 | |
| - 按需更换 SSH 监听端口;这不是必需项,也不能替代密钥认证和防火墙。 | |
| - 在云防火墙和主机防火墙中同步调整 SSH TCP 规则。 | |
| 任何 sshd 修改都先运行配置检查: | |
| ```bash | |
| sudo sshd -t | |
| ``` | |
| 优先 reload 而不是直接 restart,并保持旧会话直到新会话验证成功。修改 SSH | |
| 端口、防火墙、登录用户或认证方式前必须单独获得授权。 | |
| #### 2.7 备份与记录 | |
| - 备份所有将修改的 SSH 和防火墙配置。 | |
| - 记录初始登录方式、恢复控制台、SSH 别名和公钥指纹。 | |
| - 不记录私钥和明文密码。 | |
| - 不执行会让当前唯一连接立即断开的操作。 | |
| ### 阶段 3:部署最小 direct Hy2 | |
| 先只部署一个 direct 实例: | |
| ```text | |
| 客户端 -> SERVER:direct_port/udp -> 云服务器公网出口 | |
| ``` | |
| 要求: | |
| - 固定明确的 Hysteria2 版本。 | |
| - 使用唯一 UDP 端口。 | |
| - 使用强随机认证密码。 | |
| - 正确配置 TLS、SNI 和证书验证策略。 | |
| - 配置文件仅允许 root 或服务用户读取。 | |
| - 使用独立 systemd unit 管理。 | |
| - 只开放需要的 SSH TCP 和 Hy2 UDP 端口。 | |
| - 从服务器外部运行真实 Hy2 客户端测试。 | |
| 不要用“进程 active”或“端口打开”代替真实代理测试。 | |
| ### 阶段 4:增加 Proxy-Cheap 出口 | |
| 为每个 cheap 出口建立独立 Hy2 监听和服务实例。例如: | |
| | 监听用途 | 示例后端端口 | 出口 | | |
| | --- | --- | --- | | |
| | direct | `<HY2_DIRECT_UDP_PORT>` | 云服务器本机 | | |
| | cheap-us | `<HY2_CHEAP_US_UDP_PORT>` | US SOCKS5 | | |
| | cheap-sg | `<HY2_CHEAP_SG_UDP_PORT>` | SG SOCKS5 | | |
| 文档故意不提供实际端口号,以免不同用户机械复用同一套端口。Agent 应先使用 | |
| `ss -lntup` 等工具检查占用,再从合法的非特权端口范围中为每台服务器提出一组 | |
| 互不冲突的随机候选端口。端口计划必须经用户确认,并同步到服务配置、云防火墙、 | |
| 主机防火墙、VXLink 和客户端节点。随机端口不能代替认证、TLS 和防火墙安全。 | |
| Hysteria2 服务端通过官方 `outbounds` 配置连接 SOCKS5。可以为每个出口运行独立 | |
| 实例,或者使用经过验证的 ACL 选择出站。优先采用故障隔离清晰、容易回滚的 | |
| 方式。cheap 出口故障不能影响 direct 实例。 | |
| 先单独验证上游 SOCKS5 的 TCP 出口: | |
| ```bash | |
| curl --proxy 'socks5h://USER:PASSWORD@HOST:PORT' \ | |
| https://api.ipify.org | |
| ``` | |
| 命令中的凭据要避免写入 shell history。实际执行时应通过安全输入、临时权限受限 | |
| 文件或环境变量提供,并在用后清理。 | |
| `curl` 只证明 SOCKS5 TCP 可用。还必须通过 Hy2 cheap 节点测试 DNS、普通网页 | |
| 和需要 UDP 的目标。上游不支持 UDP 时,应记录限制,不能报告为完整可用。 | |
| 不要将所有规则默认指向 cheap。部署时至少保留 direct、cheap 和一条稳定回退 | |
| 路径,并分别做并发、持续带宽、UDP、长连接和出口稳定性测试。会议、通话、 | |
| 远程桌面等实时流量默认留在 direct 路径;支付流量固定到经过验证的稳定出口。 | |
| ### 阶段 5:按需增加 VXLink | |
| 只有 direct 或 cheap Hy2 已经通过真实测试后,才创建 VXLink。对每个需要转发 | |
| 的 Hy2 监听建立 UDP Link: | |
| | 节点 | VXLink 入口 | 后端 | | |
| | --- | --- | --- | | |
| | `vx-site-direct` | `ENTRY_IP:ENTRY_PORT/udp` | `SERVER_IP:DIRECT_PORT/udp` | | |
| | `vx-site-cheap-us` | `ENTRY_IP:ENTRY_PORT/udp` | `SERVER_IP:CHEAP_US_PORT/udp` | | |
| 对应的 direct 与 VXLink 节点使用相同 Hy2 认证、SNI 和 TLS 参数,客户端连接 | |
| 地址和端口不同。 | |
| 一条 VXLink 规则只代表一个替代入口,不代表后端高可用。若要容忍后端或云供应商 | |
| 故障,应把入口分别指向不同供应商/区域的 Hy2 后端,并把每条路径作为独立节点 | |
| 发布。固定枢纽套餐也要保留 direct 回退;普通固定转发套餐则额外记录连接数、 | |
| 端口数和流量上限。 | |
| 不要把 VXLink 直接映射到 Proxy-Cheap SOCKS5 并将其发布成普通 SOCKS5 节点。 | |
| SOCKS5 UDP relay 可能使用动态端口,固定 TCP/UDP 端口转发未必完整支持。 | |
| 创建规则前展示入口、后端、协议、流量额度和费用。不得删除或覆盖已有 Link, | |
| 除非用户明确授权。 | |
| ### 阶段 6:部署 Sub-Store | |
| 在一台稳定服务器上集中部署一套 Sub-Store。它可以与 Hy2 同机,但需要独立 | |
| 目录、持久化和访问控制。 | |
| 要求: | |
| - 使用 Docker Compose。 | |
| - 固定镜像版本,不盲目使用浮动的 `latest`。 | |
| - 持久化数据和备份目录。 | |
| - 配置合理的自动重启策略。 | |
| - 使用强随机 backend path/token。 | |
| - 不将无认证管理 UI 暴露到公网。 | |
| - 优先通过 LAN、Tailscale 或带认证的 HTTPS 反向代理访问。 | |
| - 升级前备份,并先阅读 release notes。 | |
| 至少生成: | |
| 1. 完整 Mihomo profile:供 OpenClash、Mihomo、Clash Verge 使用,包含节点、 | |
| 代理组和规则。 | |
| 2. 节点订阅:供 Shadowrocket 等客户端按其支持格式导入。 | |
| 不要把节点订阅误认为完整分流 profile。 | |
| ### 阶段 7:让用户真正消费 Sub-Store | |
| 部署完成不等于用户已经能使用。Agent 必须向用户演示从管理节点到客户端导入、 | |
| 更新和排障的完整流程。 | |
| #### 7.1 先解释 Sub-Store 中的对象 | |
| 不同版本界面名称可能略有变化,应以当前 UI 为准: | |
| | 对象 | 作用 | 谁使用 | | |
| | --- | --- | --- | | |
| | Backend/API | 保存数据并执行转换 | Sub-Store 前端和生成链接 | | |
| | Frontend/UI | 管理 Sub-Store 数据 | 管理员浏览器 | | |
| | Subscription | 一个节点源,可以是手工节点或上游订阅 | Collection/File | | |
| | Collection | 合并多个 Subscription,并过滤、重命名、排序 | Share 或 File | | |
| | File | 一份完整配置,例如含节点、代理组和规则的 Mihomo YAML | OpenClash/Mihomo | | |
| | Share | 将 Subscription、Collection 或 File 发布为带 token 的稳定 URL | 各类客户端 | | |
| 管理地址与订阅地址不是同一个东西: | |
| ```text | |
| 管理地址:管理员打开 UI,编辑节点和配置 | |
| 分享地址:客户端定期下载,不提供管理能力 | |
| ``` | |
| 后端根地址打开后显示空白页、JSON 或 404,不一定表示服务损坏。有些部署只有 | |
| Backend,需要使用官方前端或自托管前端并指定 Backend URL。Agent 必须明确交付 | |
| “前端地址”“后端 API 地址”和“分享 URL”,而不是只给一个端口让用户猜。 | |
| #### 7.2 设计 Sub-Store 的访问范围 | |
| 在部署前让用户选择: | |
| | 方式 | 优点 | 限制 | | |
| | --- | --- | --- | | |
| | LAN 内访问 | 简单、暴露面小 | 外出设备不能更新 | | |
| | Tailscale 内访问 | 远程安全访问,无需公开管理面 | 客户端更新时要连 Tailscale | | |
| | HTTPS 公开分享 | 手机和外部客户端随时更新 | 必须保护管理面和分享 token | | |
| 推荐把管理 UI/API 限制在 LAN 或 Tailscale,只按需公开只读分享 URL。如果前后端 | |
| 跨域,设置 `SUB_STORE_CORS_ALLOWED_ORIGINS` 为准确的前端 origin,包括协议、 | |
| 域名和端口,但不包含路径。不要为了省事长期使用 `*`。 | |
| 不要把 `sub.store` 当作项目拥有的公共服务域名。Sub-Store 官方仓库明确提示该 | |
| 域名可能造成数据被发送到非项目控制的公共服务。应使用明确的自托管地址或官方 | |
| 列出的前端,并核对 Backend URL。 | |
| #### 7.3 建立唯一节点源 | |
| 在 UI 的 `Subscription` 页面创建一个本地节点源,例如 `<PROJECT>-nodes`: | |
| 1. 使用 `+` 新建本地 Subscription。 | |
| 2. 逐个加入 direct、cheap 和可选 VXLink 节点。 | |
| 3. 优先使用标准 `hysteria2://` URI 或 Mihomo-compatible proxy YAML。 | |
| 4. 使用统一命名,避免同名节点。 | |
| 5. 在保存前预览转换结果。 | |
| 6. 每个节点从外部真实测试后才标记为可用。 | |
| 如果节点来自其他上游订阅,应把上游 URL 作为单独 Subscription,不要把生成后的 | |
| 结果反向覆盖原始数据。手工节点和第三方订阅应分开,便于定位来源和撤销。 | |
| #### 7.4 使用 Collection 管理节点集合 | |
| 按用途建立 Collection,例如: | |
| - `<PROJECT>-all`:所有已验证节点。 | |
| - `<PROJECT>-direct`:只包含 direct 出口。 | |
| - `<PROJECT>-cheap`:只包含 cheap 出口。 | |
| - `<PROJECT>-mobile`:只包含移动端确认支持的协议和字段。 | |
| 在 Collection 中进行过滤、排序、重命名和属性修正。过滤规则必须先预览,防止 | |
| 拼写差异导致节点被错误遗漏。不要仅凭含糊的 `cheap` 子串分类而不检查结果。 | |
| #### 7.5 生成完整 Mihomo File | |
| 在 `File` 页面建立一份完整 Mihomo 配置,例如 `<PROJECT>-mihomo`。它至少包含: | |
| - 从已验证 Collection 注入的 `proxies`。 | |
| - `PROXY`、`AUTO`、`CHEAP`、`AI`、`VIDEO`、`SOCIAL`、`TESTSPEED` 等组。 | |
| - DNS 和 TUN/透明代理所需设置。 | |
| - 远程 `rule-providers`。 | |
| - 有明确顺序的 `rules`。 | |
| 生成后下载到隔离环境执行: | |
| ```bash | |
| mihomo -t -f <DOWNLOADED_PROFILE.yaml> | |
| ``` | |
| 检查 YAML、节点名、代理组引用和 rule providers。验证通过前,不要覆盖用户当前 | |
| OpenClash 或电脑上的工作配置。 | |
| #### 7.6 创建 Share URL | |
| 在 UI 中对目标 Subscription、Collection 或 File 点击 Share/分享,选择目标格式, | |
| 由 Sub-Store 生成 URL。不要手工猜测或拼接 API 路径,因为不同部署和版本的路径、 | |
| token 参数可能不同。 | |
| 至少交付两条用途不同的分享: | |
| | 分享 | 内容 | 目标客户端 | | |
| | --- | --- | --- | | |
| | Mihomo 完整 profile | 节点、组、DNS、规则、rule providers | OpenClash、Mihomo、Clash Verge 类客户端 | | |
| | 节点订阅 | Collection 转换后的节点,不承诺携带完整规则 | Shadowrocket 等独立客户端 | | |
| Share token 等同凭据: | |
| - 不放进公开仓库、截图或聊天记录。 | |
| - 为不同人员或设备使用不同分享时,优先生成可单独撤销的 URL。 | |
| - 泄漏后立即轮换 token。 | |
| - 最终报告只显示脱敏 URL。 | |
| #### 7.7 在 OpenClash 中消费 | |
| 1. 确认 OpenClash 当前内核支持 profile 中使用的 Hy2 和 Mihomo 字段。 | |
| 2. 进入 OpenClash 的配置订阅/配置文件订阅页面。 | |
| 3. 新增订阅并粘贴 **Mihomo 完整 profile Share URL**。 | |
| 4. 先执行下载或配置检查,不要立即设为正在运行的配置。 | |
| 5. 检查节点数、代理组、规则和 rule providers 是否完整。 | |
| 6. 在维护窗口内由用户手动切换并观察日志。 | |
| 7. 保留上一份可工作配置和回滚入口。 | |
| OpenClash 所在路由器必须能访问分享 URL。如果 URL 只在 Tailscale 中可达,路由器 | |
| 本身也需要可达该 tailnet;浏览器能打开不代表路由器能下载。 | |
| #### 7.8 在 Clash Verge 类桌面客户端中消费 | |
| 1. 打开 Profiles/配置页面。 | |
| 2. 以 URL 新建 Remote Profile。 | |
| 3. 粘贴 **Mihomo 完整 profile Share URL**。 | |
| 4. 手动更新并检查是否出现预期代理组。 | |
| 5. 激活前先运行客户端提供的配置检查。 | |
| 6. 根据需求只启用系统代理,或经授权启用 TUN。 | |
| 7. 设置合理的自动更新时间,不要频繁请求 Sub-Store。 | |
| 如果桌面设备已经通过 OpenWrt/OpenClash 透明代理,再启用本地 TUN 可能形成嵌套 | |
| 路径。排障时一次只启用一层,并记录实际出口 IP。 | |
| #### 7.9 在独立 Mihomo 中消费 | |
| 独立 Mihomo 没有统一图形界面。Agent 应建立安全更新脚本:下载到临时文件,执行 | |
| `mihomo -t`,验证成功后原子替换正式配置,再 reload 服务。下载失败或检查失败时 | |
| 继续使用旧配置,不能留下空文件。 | |
| 不得把带 token 的 URL直接写进公开日志。定时器应有超时、失败日志和合理更新 | |
| 间隔。 | |
| #### 7.10 在 Shadowrocket/iOS 中消费 | |
| Shadowrocket 通常不使用 Mihomo 完整配置,因此不要直接给它 Mihomo File URL。 | |
| 在 Sub-Store 中分享 Subscription 或 Collection,并把目标格式选择为 | |
| `Shadowrocket`: | |
| 1. 在 Sub-Store 预览 Shadowrocket 输出,确认 Hy2 节点字段完整。 | |
| 2. 复制生成的节点订阅 Share URL。 | |
| 3. 在 Shadowrocket 的订阅/配置入口添加 URL。 | |
| 4. 手动更新并逐个测试 direct、cheap 和 VXLink 节点。 | |
| 5. Shadowrocket 的本地规则和分组需要按该客户端能力单独维护;节点订阅不会自动 | |
| 继承 Mihomo File 中全部代理组和 rule providers。 | |
| #### 7.11 Android 和其他客户端 | |
| - 使用 Mihomo 内核且支持完整远程 profile 的客户端,可尝试完整 Mihomo File。 | |
| - 仅支持节点订阅的客户端,应从 Collection 分享到对应 target 格式。 | |
| - 客户端声称支持 Hy2 不代表支持全部扩展字段;必须预览转换并实测。 | |
| - 不要把一个客户端导出的非标准 URI 再当作系统的唯一源数据。 | |
| #### 7.12 更新机制 | |
| 明确区分三种更新: | |
| 1. **节点源更新**:Sub-Store 重新读取 Subscription。 | |
| 2. **客户端 profile 更新**:OpenClash/桌面/手机重新下载 Share URL。 | |
| 3. **规则集更新**:Mihomo 按 `rule-providers.interval` 下载规则。 | |
| Sub-Store 中编辑节点后,客户端不会凭空立即变化。需要确认 Share 输出已更新, | |
| 然后由客户端手动或定时拉取。rule providers 的更新也不要求重新生成全部节点, | |
| 但客户端必须能够访问规则 URL。 | |
| #### 7.13 消费端验收 | |
| 每种实际使用的客户端至少验证: | |
| - 分享 URL 返回成功且内容不是空白 HTML。 | |
| - Content-Type 和正文格式符合客户端预期。 | |
| - 节点数量、名称和类型正确。 | |
| - 完整 profile 中代理组和规则可见。 | |
| - direct 节点出口是对应云服务器 IP。 | |
| - cheap 节点出口是对应代理服务 IP。 | |
| - 手动更新一次成功。 | |
| - 自动更新失败时仍保留上一份工作配置。 | |
| - Share token 轮换后旧 URL 确实失效。 | |
| 如果浏览器显示白屏,Agent 应分别使用 `curl -I` 和 `curl` 检查状态码、重定向、 | |
| Content-Type 和响应正文,并判断访问的是管理前端、Backend 根地址还是 Share URL, | |
| 不能仅凭浏览器页面判断服务状态。 | |
| ## 节点命名和分类 | |
| 使用统一名称,不使用容易误匹配的拼写: | |
| ```text | |
| {region}-{server}-direct | |
| {region}-{server}-cheap-us | |
| {region}-{server}-cheap-sg | |
| vx-{region}-{server}-direct | |
| vx-{region}-{server}-cheap-us | |
| vx-{region}-{server}-cheap-sg | |
| ``` | |
| 每个名称必须唯一。每个节点应有明确元数据或可验证的命名规则,确保它只进入 | |
| 正确的 direct 或 cheap 分组。 | |
| ## Mihomo 代理组和规则 | |
| 完整 profile 至少包含: | |
| | 组名 | 用途 | | |
| | --- | --- | | |
| | `PROXY` | 手动选择主要出口 | | |
| | `AUTO` | 对可用 direct 节点进行 URL test | | |
| | `CHEAP` | 手动选择 cheap 出口 | | |
| | `CHEAP-AUTO` | 对可用 cheap 节点进行 URL test | | |
| | `AI` | AI 服务,可选择 `CHEAP` 或稳定节点 | | |
| | `REALTIME` | 会议、通话、远程桌面等实时流量,默认稳定 direct 节点 | | |
| | `PAYMENT` | 支付、账单和金融服务,固定选择地区一致的稳定出口 | | |
| | `VIDEO` | 视频流量,可在 `PROXY`、`CHEAP`、`DIRECT` 间选择 | | |
| | `SOCIAL` | 社交媒体流量,允许单独选择 | | |
| | `TESTSPEED` | 测速流量,避免消耗错误出口 | | |
| | `GLOBAL` | 诊断和临时全局选择 | | |
| 使用仍在维护、格式适配 Mihomo 的 rule providers。记录仓库、具体 URL、格式、 | |
| 更新时间和故障回退方式。不要只写“使用最新规则”而没有来源。 | |
| ### 建议的规则上游 | |
| 以下来源于 2026-08-18 做过可达性和仓库活跃度核对。它们是社区项目,不构成 | |
| 永久可用承诺;Agent 在部署当日仍须检查最近提交、Release/Action 是否成功、 | |
| 许可证、目标文件 HTTP 状态和 Mihomo 解析结果。 | |
| | 用途 | 首选上游 | 推荐产物 | 说明 | | |
| | --- | --- | --- | --- | | |
| | 基础域名分类 | `v2fly/domain-list-community` | 由下游编译为 MRS | 社区维护的原始 geosite 域名数据,不替用户决定策略 | | |
| | Mihomo 基础/细分规则 | `MetaCubeX/meta-rules-dat` 的 `meta` 分支 | `geo/geosite/*.mrs` | Mihomo 原生 MRS,可用于 AI、社交、支付及基础分类 | | |
| | 聚合媒体与测速 | `DustinWin/ruleset_geodata` | Release `mihomo-ruleset/*.mrs` | `media.mrs`、`networktest.mrs` 聚合多个公开来源 | | |
| | 服务专项补充 | `blackmatrix7/ios_rule_script` | Clash YAML/list | 适合 LinkedIn、Teams、GlobalMedia、Speedtest 等补漏;需匹配格式 | | |
| 建议使用的具体集合: | |
| - `AI`:MetaCubeX `category-ai-!cn.mrs`,必要时与 DustinWin `ai.mrs` 对照,避免 | |
| 一个来源异常或漏项时无从判断。 | |
| - `SOCIAL`:MetaCubeX `category-social-media-!cn.mrs`;另用 blackmatrix7 的 | |
| `LinkedIn` Clash 规则检查 LinkedIn 是否确实包含,防止被国内站点重定向。 | |
| - `VIDEO`:DustinWin Release 的 `media.mrs`;若需要 Netflix、YouTube、Disney | |
| 等单独手选,应分别建立 provider 和组,不要只用一个大媒体集合。 | |
| - `TESTSPEED`:DustinWin Release 的 `networktest.mrs`,其说明列出 | |
| `category-speedtest`、Speedtest 等上游。 | |
| - `PAYMENT`:MetaCubeX 的 `stripe.mrs`、`paypal.mrs`、`wise.mrs`。支付域名会 | |
| 变化,Agent 应保留一个受版本控制的本地补充 provider,并通过连接日志核对漏项。 | |
| - `REALTIME`:MetaCubeX 的 `zoom.mrs`、`webex.mrs`,以及 blackmatrix7 的 | |
| `Teams` 规则。Google Meet 等没有合适独立集合的服务应经抓包确认后加入本地 | |
| 补充 provider,不能为了省事把全部 Google/Microsoft 流量都归入会议组。 | |
| - 基线:使用同一受控上游的 `private`、`cn`、`geolocation-!cn` 等集合,避免 | |
| 域名分类来源互相覆盖时无法追踪。 | |
| 参考地址: | |
| - https://github.com/v2fly/domain-list-community | |
| - https://github.com/MetaCubeX/meta-rules-dat/tree/meta/geo/geosite | |
| - https://github.com/DustinWin/ruleset_geodata/releases/tag/mihomo-ruleset | |
| - https://github.com/blackmatrix7/ios_rule_script/tree/master/rule/Clash | |
| 当前可用的下载地址遵循以下形式,`<NAME>` 只应替换为上文已经核对的集合名: | |
| ```text | |
| MetaCubeX MRS: | |
| https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/<NAME>.mrs | |
| DustinWin MRS: | |
| https://github.com/DustinWin/ruleset_geodata/releases/download/mihomo-ruleset/<NAME>.mrs | |
| blackmatrix7 Clash YAML: | |
| https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/<NAME>/<NAME>.yaml | |
| ``` | |
| 不要自行猜测文件名。部署前对每个最终 URL 检查 HTTP 200、非 HTML 内容和实际 | |
| Mihomo 解析结果,并将最终 URL 固化在交付清单中。 | |
| ### 规则更新链路 | |
| 必须向用户说明更新发生在不同层: | |
| ```text | |
| 社区原始仓库 | |
| -> 上游项目的构建/Release 产物 | |
| -> Mihomo rule-provider 按 interval 下载并缓存 | |
| -> rules 按顺序把命中的流量送入可手选的策略组 | |
| ``` | |
| Sub-Store File 通常只保存 `rule-providers` 的 URL 和分流结构,不需要把每个远程 | |
| 规则正文复制进节点订阅。客户端必须能够访问这些 URL。Mihomo 应缓存最后一次 | |
| 成功下载的规则;下载失败时保留旧缓存并告警,不能用空规则覆盖。建议: | |
| - `interval` 从 24 小时开始,避免所有客户端高频请求上游。 | |
| - 记录 provider 名、仓库、分支或 Release、URL、`behavior`、`format`、最近成功 | |
| 下载时间、文件大小或哈希以及连续失败次数。 | |
| - `.mrs` 域名规则使用 `behavior: domain`、`format: mrs`;IP 规则使用 | |
| `behavior: ipcidr`。含混合 Clash 规则类型的 YAML 通常使用 `behavior: classical`, | |
| 不能只改扩展名或把不同格式混用。 | |
| - 更新前在隔离环境下载并让目标 Mihomo 版本解析;检查文件非空、规则数没有异常 | |
| 暴增/骤减,再允许客户端定时更新。 | |
| - 对 GitHub Raw/Release 准备可信镜像或上一版本本地副本,但不要静默切到来源不明 | |
| 的第三方镜像。 | |
| - 每月抽查 AI、LinkedIn、Stripe/PayPal、会议、视频和测速测试域名的实际命中组; | |
| 规则项目“活跃”不等于恰好覆盖用户需要的全部域名。 | |
| 建议顺序: | |
| 1. 网络测速 -> `TESTSPEED` | |
| 2. 实时会议/通话 -> `REALTIME` | |
| 3. 支付与账单 -> `PAYMENT` | |
| 4. AI 服务 -> `AI` | |
| 5. 社交媒体 -> `SOCIAL` | |
| 6. 视频媒体 -> `VIDEO` | |
| 7. 私有网络 -> `DIRECT` | |
| 8. 中国大陆域名和 IP -> `DIRECT` | |
| 9. 非中国大陆域名 -> `PROXY` | |
| 10. `MATCH` -> `PROXY` | |
| 专项规则必须放在宽泛的中国大陆或非中国大陆规则之前。检查 AI 规则是否覆盖 | |
| 当前主流服务,社交规则是否包含 LinkedIn 等容易发生地区跳转的服务。支付、 | |
| 实时会议和账号登录需要“稳定优先”,不能只依据 URL test 延迟最低来选出口。 | |
| ## 验证标准 | |
| 每一层单独验证,并输出表格: | |
| - SSH 修改前后都能建立新的密钥连接。 | |
| - 所有 Hy2 systemd 实例处于 active。 | |
| - 对应 UDP 端口真实监听。 | |
| - 主机防火墙和云防火墙均允许对应 UDP。 | |
| - direct 节点从外部真实连接成功,出口 IP 是对应云服务器 IP。 | |
| - cheap 节点从外部真实连接成功,出口 IP 是购买的代理 IP。 | |
| - VXLink 节点连接成功,出口与对应非 VX 节点一致。 | |
| - cheap 代理停止工作时,direct 节点仍能使用。 | |
| - Mihomo profile 通过配置语法检查。 | |
| - YAML 没有重复节点名、缺失代理组或无效引用。 | |
| - 所有 rule providers 可以下载并解析。 | |
| - AI、REALTIME、PAYMENT、VIDEO、SOCIAL、TESTSPEED 测试域名命中预期组。 | |
| - Sub-Store 订阅能被目标客户端实际下载。 | |
| 测试表至少包含: | |
| | 节点 | 入口 | Hy2 后端 | 出口 | TCP | UDP | 延迟 | 结果 | | |
| | --- | --- | --- | --- | --- | --- | --- | --- | | |
| 不要自动重载或重启用户的 OpenClash、路由器或正在承载当前连接的客户端。生成 | |
| 订阅后,把订阅地址和导入说明交给用户,由用户决定维护窗口。 | |
| ## 回滚和变更边界 | |
| 以下操作必须单独获得明确授权: | |
| - 购买、续费、充值或升级套餐。 | |
| - 修改 SSH 端口或认证方式。 | |
| - 修改防火墙默认策略。 | |
| - 重启服务器、网络服务、Docker 或路由器。 | |
| - 删除已有节点、VXLink 规则、服务或订阅。 | |
| - 将 Sub-Store 或其他管理界面暴露到公网。 | |
| - 自动重载 OpenClash/Mihomo 当前配置。 | |
| 每次写入前备份。每个阶段结束后验证,再进入下一阶段。失败时停止扩大变更范围, | |
| 恢复上一份可工作的配置。 | |
| ## 最终交付 | |
| 完成后提供一份不含敏感信息的报告: | |
| - 架构图和实际流量路径。 | |
| - 服务器、地区和端口用途表。 | |
| - direct、cheap、VXLink 节点矩阵。 | |
| - 软件版本和服务状态。 | |
| - 防火墙开放项。 | |
| - 每个节点的真实出口 IP、TCP、UDP 和延迟测试。 | |
| - Sub-Store 的受保护管理入口。 | |
| - Mihomo 完整订阅地址的脱敏表示。 | |
| - Shadowrocket 等客户端的订阅方式。 | |
| - rule provider 来源及更新时间。 | |
| - 当前限制、费用和未解决问题。 | |
| - 完整回滚步骤。 | |
| 最终报告不得包含完整密码、token、私钥、Proxy-Cheap 凭据或订阅密钥。 | |
| ## Agent 的第一条回复应包含什么 | |
| 收到本任务书后,先不要直接安装或购买。第一条回复应当: | |
| 1. 用不超过十句话复述云服务器、Hy2、Mihomo、Sub-Store 及两个可选商业服务 | |
| 在架构中的位置。 | |
| 2. 说明最小可用方案和所有可选组件。 | |
| 3. 列出需要用户提供的信息,但不索取私钥。 | |
| 4. 给出只读盘点命令和预计不会产生中断的检查范围。 | |
| 5. 等待用户授权只读盘点。 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment