前端页面

This commit is contained in:
robin
2026-02-24 11:33:44 +08:00
parent f3af234308
commit 60dc87e0f2
141 changed files with 6845 additions and 133 deletions

View File

@@ -0,0 +1,148 @@
# HTTPDNS 主计划V1.2 现行版)
## 1. 目标
1. 形成 HTTPDNS 管理端可用闭环:集群、全局配置、应用、域名、自定义解析、日志、解析测试。
2. 保持独立 HTTPDNS 模块设计,不挂载到传统 DNS(53)职责中。
3. 文档仅保留当前已采用的设计与页面,不包含未落地方案。
## 2. 当前范围(仅管理平台)
1. 菜单顺序固定为:
- 集群管理
- 全局配置
- 应用管理
- SDK接入引导
- 解析日志
- 运行日志
- 解析测试
2. 现阶段以管理端页面与 Mock 数据联调为主。
## 3. 核心设计约束
1. 应用侧 SNI 防护仅采用“隐匿 SNI”固定策略不再提供 level1/level3 选择)。
2. 服务入口按“集群服务域名”管理,不使用全局单一网关地址。
3. 应用认证采用:
- 请求验签开关
- 加签 Secret
- AES 数据加密 Secret
4. 自定义解析规则支持 SDNS 参数与解析记录多条配置(各最多 10 条)。
## 4. 页面设计(现状)
### 4.1 集群管理
1. 集群列表字段:
- 集群名称
- 服务域名
- 节点数
- 在线节点数
- 状态
- 操作
2. 集群设置字段:
- 集群名称
- 集群服务域名
- 降级超时容忍度(毫秒)
- 本地内存缓存(秒)
- 节点安装根目录(默认 `/opt/edge-httpdns`
- 启用当前集群
3. 节点页提供基础筛选、状态展示、详情与删除。
### 4.2 全局配置
1. 用户设置:
- 默认部署集群
- 启用用户域名校验
2. 基础默认:
- SNI 防护配置(文案展示为“隐匿 SNI”
- 全局默认解析 TTL
- 全局降级超时
### 4.3 应用管理
1. 应用列表字段:
- 应用名称
- AppID
- 绑定域名数(可点击)
- 状态
- 操作(域名管理 / 应用设置)
2. 添加应用:
- 应用名称
- 所属集群
- 所属用户(可选)
3. 应用设置分两块:
- 基础配置AppID、应用启用、SNI 防护配置(隐匿 SNI
- 认证与密钥:请求验签开关、加签 Secret、AES Secret查看/复制/重置/更新时间)
### 4.4 域名管理与自定义解析
1. 域名管理:
- 域名列表
- 规则策略(显示该域名自定义解析规则数)
- 操作(自定义解析、解绑)
2. 自定义解析列表字段:
- 线路
- 规则名称
- SDNS 参数
- 解析记录
- TTL
- 状态
- 操作(编辑/启停/删除)
3. 新增/编辑规则弹窗:
- 规则名称
- 线路联动:
- 中国大陆:运营商 -> 大区 -> 省份
- 港澳台及境外:洲 -> 国家/地区(亚洲含中国香港/中国澳门/中国台湾)
- SDNS 参数配置:最多 10 条
- 解析记录值:最多 10 条,支持 A/AAAA可开启权重1-100
- TTL1-86400
- 规则状态
## 5. SDK接入引导现状
1. 仅保留两步:
- 01 查看配置
- 02 开发接入
2. 查看配置展示:
- App ID可复制
- 应用名称
- 集群服务地址(可复制)
- 加签 Secret查看/复制)
- AES 数据加密 Secret查看/复制)
- 请求验签状态
## 6. 日志页面(现状)
### 6.1 解析日志
1. 主列:
- 集群
- 节点
- 域名
- 类型
- 概要
2. 概要按单行拼接展示,按“访问信息 -> 解析结果”顺序输出,不使用字段名堆叠。
### 6.2 运行日志
1. 字段:
- 时间
- 集群
- 节点
- 级别
- 类型
- 模块
- 详情
- 次数
- 请求ID
## 7. 解析测试(现状)
1. 左侧配置项:
- 目标应用
- 解析域名
- 模拟客户端 IP
- 解析类型A/AAAA
- SDNS 参数(最多 10 条)
2. 右侧结果区:
- 解析成功/失败
- Request ID
- 请求URL
- 客户端 IP / 地区 / 线路
- 解析记录表解析域名、解析类型、IP地址、TTL、地区、线路
3. 已去掉无关展示块(如安全策略、验签响应头详情块)。
## 8. 本文不包含的内容
1. 不包含 ECH 控制台与 ECH 分阶段交付设计。
2. 不包含 SNI level1/level3、多级切换与 Public SNI 域名池页面设计。
3. 不包含第三方 DNS 凭证复用与相关编排描述。
4. 不包含用户平台User页面方案。

View File

@@ -1,98 +0,0 @@
# HTTPDNS 主计划V1.1
## 1. 目标与范围
1. 新增独立模块 `EdgeHttpDNS`,独立构建、独立部署。
2. 不改造 `EdgeDNS` 现有职责,`EdgeDNS` 继续处理传统 Port 53 DNS 请求。
3. 构建端到端链路:`SDK -> EdgeHttpDNS -> EdgeNode 动态验签 -> WAF 放行/403`
4. P1 包含 ECH 全量能力(记录发布、密钥与节点解密链路)。
5. 当前阶段仅实施管理平台能力,用户平台页面暂缓。
## 2. 关键决策(已锁定)
1. 对外接口仅保留 `POST /resolve`
2. 客户端 IP 策略:源 IP 优先,支持签名覆盖 `client_ip`
3. 场景判定规则:按“域名接入状态”自动判定。
4. 场景1仅 HTTPDNS 域名):直连权威 DNS。
5. 场景2已接入 CDN 域名):从边缘节点池计算并返回 CDN 节点 IP。
6. `sni_policy` 枚举:`none|mask|empty|ech`Level2 支持 `mask``empty`)。
7. 证书字段:`cert_fingerprints[] + fingerprint_algo`
8. `EdgeNode` 动态验签采用请求头签名:`X-Edge-Resolve-*`
9. ECH 记录由第三方 DNS API 发布(通过凭证中心编排)。
## 3. 系统职责拆分
### 3.1 管控端(仅管理平台)`edge-admin`
1. 配置中心:`AppID/Secret`、解析策略、SNI 隐匿等级、证书校验策略。
2. 凭证中心:第三方 DNS 运营商 API 凭证管理与复用。
3. ECH 发布编排:记录创建、更新、状态追踪、失败重试。
4. 发布灰度、回退控制与审计日志。
### 3.2 解析网关 `edge-httpdns`
1. 鉴权与签名校验、防重放、限流。
2. 双场景解析编排(权威 DNS / 边缘节点池调度)。
3. 下发 `sni_policy``public_sni`、证书指纹策略。
4. 生成并返回 `verify_headers` 供客户端请求透传。
### 3.3 边缘节点 `edge-node`
1. SNI 与 Host 解耦路由。
2. 动态验签(验签失败返回 403
3. ECH 解密与策略联动。
## 4. 接口规范(摘要)
### 4.1 Endpoint
- `POST /resolve`
### 4.2 返回关键字段
1. `ips`
2. `ttl`
3. `sni_policy`
4. `public_sni`
5. `cert_fingerprints`
6. `fingerprint_algo`
7. `verify_headers`
### 4.3 动态验签请求头
1. `X-Edge-Resolve-AppId`
2. `X-Edge-Resolve-Expire`
3. `X-Edge-Resolve-Nonce`
4. `X-Edge-Resolve-Sign`
## 5. 页面规划(当前仅管理平台)
### 5.1 管理平台Admin
1. HTTPDNS 集群默认配置页。
2. HTTPDNS 应用管理页(含 AppID/Secret、启停、限流、策略覆写
3. 域名绑定与策略页(含测试 IP 指向 CDN 节点能力)。
4. 边缘节点与调度策略页。
5. 第三方 DNS 凭证中心页。
6. ECH 发布状态与审计页。
7. 解析调试页。
8. WAF 动态验证规则页。
9. 一键回退与发布控制页。
### 5.2 用户平台User
- 暂缓,不在当前阶段实施。
- 所有配置与操作先收敛到管理平台。
## 6. SDK 路线
1. 三端均采用 fork 改造路线Android / iOS / Flutter
2. 已落地源码目录:
- `EdgeHttpDNS/sdk/android`
- `EdgeHttpDNS/sdk/ios`
- `EdgeHttpDNS/sdk/flutter/aliyun_httpdns`
3. 溯源文档:
- `EdgeHttpDNS/sdk/SOURCE_LOCK.md`
- `EdgeHttpDNS/sdk/THIRD_PARTY_NOTICES.md`
## 7. 实施阶段(更新)
1. Phase A管理平台配置模型与页面不做用户平台
2. Phase B`EdgeHttpDNS` 核心解析链路与双场景实现。
3. Phase C`EdgeNode` 动态验签与 WAF 联动。
4. Phase DECH 密钥、记录发布、节点解密联调。
5. Phase E三端 SDK 改造与灰度上线。
6. Phase F用户平台能力评估与二期补齐可选
## 8. 验收标准
1. 场景判定准确,返回 IP 正确。
2. 动态验签通过可放行,失败稳定返回 403。
3. `/resolve` 返回字段与 SDK 消费一致。
4. ECH 记录发布成功且链路可用。
5. 管理平台可独立完成全流程配置、发布、回退与审计。
6. 具备观测能力QPS、错误率、签名通过率、403 率)。

View File

@@ -0,0 +1,114 @@
在域名管理中 加一个 自定义解析功能。
功能简介若需为域名提供特定的解析结果可以使用HTTPDNS提供的自定义解析功能。该功能支持通过配置规则来实现对特定域名的自定义解析。
应用场景:灰度测试:假设您的域名是 www.example.com因为业务增长发布了新的服务新的服务IP为1.1.X.X在服务全量发布前您希望对电信_上海访问域名的流量进行特定APP版本号的灰度测试。对于这些流量访问www.example.com时发起的域名解析请求返回1.1.X.X。
流量调度:假设某个汽车企业服务域名是 www.example.com希望DNS解析过程中可以根据特定的业务逻辑返回位于不同区域的服务器的 IP 地址。例如根据汽车常驻地返回不同的服务IP某辆汽车的常驻地区在广州对于该汽车访问 www.example.com 时发起的 DNS 查询请求返回位于广州的服务器的 IP 地址。
策略说明
可以通过某种规则来达到自定义解析的目的。您可以对网络线路进行更精细的配置,并通过配置不同的解析参数,使来自不同运营商和地域的用户流量精准路由至不同的服务地址。
使用方式如下:
在 HTTPDNS 控制台 中,为指定域名创建一条自定义解析规则策略。
客户端通过 SDK 发起 DNS 查询请求时,携带相应的自定义解析参数。
HTTPDNS 服务端接收到请求后,会根据预设的匹配规则,返回最符合业务需求的解析结果。
您可以做以下配置:
基本信息
参数
说明
域名
您希望自定义解析的域名例如www.aliyun.com。
说明
域名选择下拉的数据源来自于接入域名中已经添加的域名,如果想要自定义解析的域名不在下拉列表中,可以到域名列表中添加后,再为该域名添加自定义解析记录。
如果要为某个泛域名的子域名添加自定义解析记录,例如:*.aliyun.com但你想要自定义域名是 a.aliyun.com则需要将 a.aliyun.com 添加到域名列表中,再为该域名添加自定义解析记录。
域名选择下拉字段选不到对应的域名有以下几种情况:
想要添加的域名不在域名列表中,您可以到接入域名中添加对应的域名即可。
想要添加的域名是某个泛域名的子域名,将该子域名添加到域名列表即可。
想要添加的域名已经存在自定义解析记录,需要去自定义解析记录列表管理对应的域名。
线路
可针对运营商和地域进行线路配置。
中国内地线路:按“运营商 > 大区 > 省份”进行配置。
运营商:可以自定义运营商,例如:中国电信。如果运营商设置为默认,表示当前线路覆盖所有运营商。
大区:按照地域划分,例如:东北、华北、华东等,省份归属在对应大区下。如果大区设置为默认,表示当前线路覆盖所有大区。
省份:可以自定义省份,例如:北京、河北,如果省份设置为默认,表示当前线路覆盖所有省份。
海外线路:选择地域为“境外”时生效,按“洲 > 国家或地区”进行配置。
可以选择大洲,例如:亚洲、欧洲、南美洲等;也可以在大洲下选择具体国家或地区,例如:日本、英国等。
如果大洲、国家或地区设置为默认,表示当前线路覆盖所选范围内的全部区域。
说明
在同一个域名下,对于相同地域的用户,线路生效的优先级是:运营商>地理位置>默认。例如,电信-华北-北京>电信-华北-默认>默认-华北-北京>默认-默认-默认。
例如:如果在同一个域名下同时存在两条规则策略,线路分别是电信-华北-北京和电信-华北-默认,那么对于北京的电信用户会使用电信-华北-北京线路的规则策略。
自定义解析规则
一条规则策略最多支持配置 10 条自定义解析规则。
参数
说明
规则名称
说明当前规则的名称可以用来表达规则的用途例如通过SDK版本调度。
规则排序
多个规则之间可以调整顺序,匹配的逻辑是从上往下串行匹配,顺序决定了哪个规则会被优先命中,调整顺序后会按照新的顺序匹配。
SDNS参数配置
用来匹配客户端请求解析接口携带的SDNS参数决定该条规则是否被命中如果匹配成功则返回该条规则中的解析记录值。详细的匹配逻辑请查看规则策略匹配逻辑说明。
参数名称SDNS参数的名称长度限制为 2 ~ 64 个字符。
参数值SDNS参数的值长度限制为 1 64 个字符。
说明
一条规则最多添加 10 个 SDNS参数。
解析接口可以添加SDNS参数具体查看 客户端传递自定义解析参数。
解析记录值
自定义解析的返回值集合,每个记录值代表记录集中的一条解析记录,必填。
记录类型返回解析记录值的类型支持A和AAAA记录。
记录值:返回的记录值
您可以添加多个记录值,在未开启权重的情况下,添加的多个记录值将会合并在一起返回。
还可以按照权重调度只需要打开按照权重调度开关即可。开启权重后可以为每个记录值设置权重权重值设置范围为1-100根据记录值的权重通过负载均衡算法返回一个合适的记录值。
说明
一条规则最多添加 10 个记录值。
TTL
必填自定义解析记录的有效期。有效期越短HTTPDNS SDK 中的解析记录缓存过期就越快。同时HTTPDNS SDK 请求新的解析记录的频率就越高。