前端页面
This commit is contained in:
148
EdgeHttpDNS/HTTPDNS主计划-V1.2.md
Normal file
148
EdgeHttpDNS/HTTPDNS主计划-V1.2.md
Normal 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)
|
||||
- TTL(1-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)页面方案。
|
||||
@@ -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 D:ECH 密钥、记录发布、节点解密联调。
|
||||
5. Phase E:三端 SDK 改造与灰度上线。
|
||||
6. Phase F:用户平台能力评估与二期补齐(可选)。
|
||||
|
||||
## 8. 验收标准
|
||||
1. 场景判定准确,返回 IP 正确。
|
||||
2. 动态验签通过可放行,失败稳定返回 403。
|
||||
3. `/resolve` 返回字段与 SDK 消费一致。
|
||||
4. ECH 记录发布成功且链路可用。
|
||||
5. 管理平台可独立完成全流程配置、发布、回退与审计。
|
||||
6. 具备观测能力(QPS、错误率、签名通过率、403 率)。
|
||||
114
EdgeHttpDNS/自定义解析功能.md
Normal file
114
EdgeHttpDNS/自定义解析功能.md
Normal 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 请求新的解析记录的频率就越高。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user