7d89ec9d91
- domains.md: 四组域名隔离登记 + 冷备池 ≥5 + 启用流程(不含身份信息) - cdn/terraform: Cloudflare 配置即代码(WAF/bot/速率限制/代理DNS/回源鉴权注入)+ 30min 重放 Runbook - server/internal/originauth: 回源鉴权中间件,非 CDN 网段或鉴权头不符一律 403,支持双值轮换 - tools/endpoint-signer: 离线 Ed25519 签名 CLI(端点 + 公告文档,单调版本防回滚,key_id 双公钥轮换) - tools/publish-mirrors: ≥3 镜像发布 + hash 一致性校验 + 故障转移取回 - CLIENT-CONTRACT.md: schema/验签/防回滚/合并/兜底链/channel 客户端契约 - 出站独立出口要求写入部署文档;私钥/token/身份信息一律不入库 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
85 lines
4.6 KiB
Markdown
85 lines
4.6 KiB
Markdown
# 域名分组登记(配置即代码)
|
||
|
||
> 口径来源:doc/05 §3「域名体系与解析兜底」、doc/06 §2「身份隔离红线」。
|
||
>
|
||
> **本文件只登记分组、状态、启用流程,绝不记录任何注册身份信息**(注册商账号、邮箱、付款方式、WHOIS 联系人等身份线索一律离线管理,见末尾「身份线索」一节)。所有占位域名均为 `example-*`,启用真实域名时只替换占位、不写身份。
|
||
|
||
## 1. 四组隔离原则
|
||
|
||
四组域名**互不关联**:不同注册商、独立 WHOIS 隐私、不共享 NS 特征化配置、加密货币付款(doc/05 §3 / doc/06 §2 红线)。任意一组被墙或被关联,不牵连其余组。
|
||
|
||
| 组 | 用途 | 隔离策略 | 客户端是否内置 |
|
||
|---|---|---|---|
|
||
| **主域名** | 官网 + 用户中心 | 品牌入口,被墙概率最高,**做好牺牲准备**;常备 ≥2 活跃镜像 | 否 |
|
||
| **API 域名池(N≥3)** | 客户端 API | 不同注册商、不同 WHOIS、互不关联;客户端内置全部 | 是(全部) |
|
||
| **订阅 / 分发域名** | 端点更新、公告 JSON | **单独隔离**——「取订阅」最易被关联封锁 | 是(端点池来源之一) |
|
||
| **冷备池(≥5)** | 已注册未启用 | 启用即配 CDN,随签名端点更新下发 | 否(启用后进池) |
|
||
|
||
## 2. 登记表(占位示例,按组维护)
|
||
|
||
状态取值:`active`(在用)/ `standby`(冷备待启用)/ `burned`(已被墙,保留记录)/ `retired`(主动下线)。
|
||
|
||
### 2.1 主域名
|
||
|
||
| 域名 | 状态 | 用途 | CDN | 备注 |
|
||
|---|---|---|---|---|
|
||
| `example-brand.com` | active | 官网+用户中心 | CF | 主品牌入口 |
|
||
| `example-brand-mirror.com` | active | 官网镜像 | CF | 牺牲后顶替 |
|
||
|
||
### 2.2 API 域名池(N≥3)
|
||
|
||
| 域名 | 状态 | 注册商分组* | CDN | 备注 |
|
||
|---|---|---|---|---|
|
||
| `api-a.example-alpha.com` | active | A | CF | |
|
||
| `api-b.example-bravo.net` | active | B | CF | |
|
||
| `api-c.example-charlie.org` | active | C | CF | |
|
||
|
||
\* 注册商分组只记**代号**(A/B/C),代号到真实注册商的映射在离线身份台账,不入库。
|
||
|
||
### 2.3 订阅 / 分发域名(独立隔离)
|
||
|
||
| 域名 | 状态 | 用途 | CDN | 备注 |
|
||
|---|---|---|---|---|
|
||
| `dist-1.example-dist.com` | active | 端点更新 + 公告 JSON | CF | 与上两组零关联 |
|
||
|
||
> 分发内容本身走 ≥3 镜像(CF Pages / GitHub<独立账号> / 对象存储,见 `tools/publish-mirrors`),分发**域名**只是其中之一的入口。
|
||
|
||
### 2.4 冷备池(≥5)
|
||
|
||
| 域名 | 状态 | 预留用途 | 备注 |
|
||
|---|---|---|---|
|
||
| `example-cold-1.com` | standby | API 补池 | 已注册未配 CDN |
|
||
| `example-cold-2.net` | standby | API 补池 | |
|
||
| `example-cold-3.org` | standby | 分发补位 | |
|
||
| `example-cold-4.io` | standby | 主域镜像 | |
|
||
| `example-cold-5.app` | standby | 机动 | |
|
||
|
||
## 3. 启用流程(standby → active)
|
||
|
||
对应 doc/05 §5 Runbook(API 域名被墙 / 主域被墙):
|
||
|
||
1. **选域**:从冷备池挑一个与被墙域不同注册商分组的域名。
|
||
2. **配 CDN**:`infra/domains/cdn/terraform` 填 `zone_id/api_hostnames/origin_ip`,`terraform apply`(含 WAF/bot/速率限制/回源鉴权,目标 ≤30min)。
|
||
3. **下发**:用 `tools/endpoint-signer` 把新域名并入 `api_domains[]`,`version` +1,签名;`tools/publish-mirrors` 推 ≥3 镜像并校验 hash 一致。
|
||
4. **登记**:本文件把该域名状态改 `active`,被墙的改 `burned`,并补一个新 standby 维持冷备池 ≥5。
|
||
5. **验证**:域名级探针(复用 #15 探针体系)确认境内可达;回源鉴权 200、直连源站 403。
|
||
|
||
## 4. 被墙检测(接口需求,不在本任务实现)
|
||
|
||
域名级 DNS 污染 / TCP 阻断探测复用 **#15 探针体系**(doc/05 §3:境内拨测 + 境外对照)。本任务只登记契约需求:
|
||
|
||
- 输入:本文件 `active` 组的域名清单。
|
||
- 输出:每域名 `{reachable, dns_pollution, tcp_blocked, checked_at}`,污染 / 阻断即触发上面的启用流程。
|
||
- 探测器本身由 #15 实现,本任务不实现探针。
|
||
|
||
## 5. 身份线索(离线管理,禁止入库)
|
||
|
||
以下信息**只存在离线身份台账**,本仓库任何文件都不得出现:
|
||
|
||
- 注册商账号 / 登录邮箱 / 付款凭据(加密货币钱包)。
|
||
- WHOIS 联系人(一律隐私注册)。
|
||
- 注册商分组代号(A/B/C)到真实注册商的映射。
|
||
- CDN / 对象存储 / GitHub 独立账号的身份。
|
||
|
||
> 红线(doc/06 §2):服务器、域名、支付、邮箱之间不得产生可被关联的身份线索;管理操作只在专用环境进行。
|