你这个 DNS 系统的核心定位是什么?

答:这是一个控制面的 DNS 平台,核心不是单纯的记录管理后台,而是“本地期望态管理 + 多 Provider 聚合 + 私有DNS + 注册中心 + 运维工具 + 防攻击 + 域名优化的平台”。

提供了:

  • 智能DNS,geo+view+isp
  • Provider 聚合:反向控制器
  • 证书托管
  • 域名资产管理
  • 域名托底
  • 高级功能:LB,状态,防封等
  • 运维自动化
  • 高级安全防护,解耦+ACL

为什么要自己做一层 DNS 控制面,而不是直接用 Cloudflare 控制台?

答:因为企业场景通常有多云、多账号、多环境隔离和统一审计需求。 直接用各家 Provider 控制台会带来几个问题:

  • 入口分散,缺少统一权限和审计
  • 多 Provider 切换成本高
  • 无法做统一的记录模型和调度策略
  • 无法做企业内部自动化,比如批量变更、回滚、任务化切换、漂移检测

他价值就是把这些统一起来。

你这个 DNS 系统和普通 DNS 管理后台最大的区别是什么?

答:普通管理后台更多是 CRUD 记录,而这个系统是一个完整的 DNS 控制面。除了 Zone 和 Record 管理,还包括多 Provider 聚合、任务调度、HTTPDNS、证书管理、智能 DNS、防封防污染、私有 DNS、服务注册发现等能力。 也就是说,它不是“改记录的页面”,而是“统一的 DNS 治理平台”。

为什么要做多 Provider 聚合,而不是绑定单一厂商?

答:多 Provider 聚合主要解决三类问题:

  • 降低单厂商依赖风险
  • 支持迁移和容灾切换
  • 统一控制多云 DNS 配置

很多企业线上域名分散在 Cloudflare、Route53、Namecheap、阿里云、DNSPod 等不同平台。Hermes 把这些平台抽象成统一 Provider 层,让业务只关心 Hermes 的标准 Record 模型,而不是各厂商的控制台差异。

你们怎么保证 Hermes 和云 Provider 的一致性?

答:本地数据库是 source of truth。Provider 只是实际承载解析的远端系统。所以用户所有变更先写 Hermes,再通过异步 Job 把远端 Provider 收敛到 Hermes 当前状态,而不是反过来以 Provider 控制台为准。

答:Hermes 本地数据库是 source of truth,Provider 是远端实际状态。 一致性不是靠“某次写成功”,而是靠“持续 reconcile”:

  • 本地变更触发同步任务
  • 周期性做 drift detect
  • 比较 Hermes 期望态和 Provider 实际态
  • 自动修复或告警

这个思路借鉴了 Kubernetes controller,但不会照搬 reflector/watch。

HTTPDNS 在这个系统里的价值是什么?

答:HTTPDNS 主要是为了解决本地运营商 DNS 劫持、污染和解析不可控的问题。
传统域名解析依赖系统 DNS,而 HTTPDNS 由客户端直接请求 Hermes 的 HTTP 接口获取解析结果,可以做到:

  • 绕过本地 DNS 污染
  • 配合客户端 SDK 做优选
  • 提供更可控的返回策略
  • 支持业务侧灰度和线路调度

所以 HTTPDNS 更像是“应用层可编程解析服务”。

你们的 HTTPDNS 和普通 DNS 查询相比,有什么优势和代价?

答:优势是:

  • 不依赖本地系统 DNS
  • 更容易做鉴权、限流、日志分析
  • 能结合地域、设备、业务标签做动态返回
  • 更适合 App、移动端和 SDK 集成

代价是:

  • 客户端要接 SDK 或改解析逻辑
  • 不如标准 DNS 通用
  • 需要额外考虑接口性能和缓存策略

所以 HTTPDNS 适合对可控性要求高的业务场景,不是完全替代标准 DNS。

智能 DNS 在你们系统里怎么实现?

答:智能 DNS 的核心是“同一个域名,根据不同请求属性返回不同解析结果”。
常见维度包括:

  • 地域
  • 运营商
  • 网络延迟
  • 健康状态
  • 环境标签
  • 业务优先级

实现上通常会结合:

  • View 做逻辑隔离
  • GeoIP 做地域识别
  • 健康检查做故障摘除
  • 权重或优选策略做流量分配

所以它不是简单的 A 记录管理,而是一个调度决策层。

你们为什么设计了 View?它解决什么问题?

答:View 主要解决“同一域名在不同请求上下文下返回不同结果”的问题。
比如:

  • 内网和外网解析不同
  • 测试环境和生产环境隔离
  • 不同业务线看到不同结果
  • 安全场景下对某些来源直接返回特殊记录

它本质上是 DNS 决策前的流量分流层。

私有 DNS 这个功能的核心场景是什么?

答:私有 DNS 更偏企业内部基础设施。主要场景有:

  • 内网服务发现
  • 办公网、IDC、专线环境域名解析
  • 内外网同域不同解析
  • 混合云/多机房统一命名服务

它和公有 DNS 最大的差异在于,私有 DNS 更强调内网拓扑、服务生命周期、环境隔离和低延迟访问。

私有 DNS 和公有 DNS 在架构设计上有什么不同?

答:公有 DNS 更关注全球可达性、抗污染、线路调度和外部解析质量;
私有 DNS 更关注:

  • 企业内部命名规范
  • 服务注册发现
  • 与 K8s/Nacos 等系统联动
  • 内网隔离和权限控制
  • 多机房拓扑一致性

所以私有 DNS 往往会和服务发现系统结合得更紧。

证书管理为什么要放进 DNS 平台?

答:因为很多证书自动化场景和 DNS 强相关,尤其是 DNS-01 Challenge
把证书管理放进 DNS 平台有几个优势:

  • 域名资产和证书资产统一管理
  • 自动申请、续期和 TXT 验证闭环
  • 支持通配符证书
  • 证书过期和域名过期可统一告警

对企业来说,这样能把域名治理和 HTTPS 治理放在同一控制面里。

证书自动续期最大的难点是什么?

答:最大的难点不是调用 ACME 接口,而是“分布式环境下的协调和可靠性”。
比如:

  • 多节点不能重复申请同一证书
  • 续期失败要重试和告警
  • DNS-01 TXT 验证要保证生效
  • 通配符证书和多 SAN 证书管理更复杂
  • 续期后证书分发要可追踪

所以这类场景很适合结合 Job 调度和状态机做。

你们提到防封、防污染,这块主要解决什么问题?

答:主要解决域名在复杂网络环境下的可用性问题。常见风险包括:

  • 运营商 DNS 劫持
  • 污染返回错误 IP
  • 域名被针对性封锁
  • 线路访问质量下降
  • 某些地区或运营商被拦截

Hermes 的设计里,这块不是单点功能,而是组合能力:HTTPDNS、多上游对比、DoH/DoQ、结果验证、污染 IP 过滤、域名轮换、优选线路等一起发挥作用。

防污染和防封在技术上有什么区别?

答:两者相关,但重点不同。

  • 防污染更偏“解析结果被篡改或干扰” 例如错误 IP、假应答、运营商劫持
  • 防封更偏“域名或入口被识别和阻断” 例如某些域名被屏蔽、某些入口 IP 被封

所以防污染侧重解析质量校验和可信上游,防封侧重入口漂移、域名轮换、CDN 隐藏、证书自动化等能力。

你们怎么做健康检查和自动切换?

答:核心思路是把“解析配置”和“后端可用性”联动起来。
一般流程是:

  1. 后台周期性做 HTTP/TCP/自定义健康探测
  2. 如果某个目标不可用,更新其健康状态
  3. 智能 DNS 在返回记录时跳过不健康节点
  4. 必要时通过同步任务把某些记录切换到备用目标

这样 DNS 就不只是返回静态 IP,而是参与流量治理。

为什么说 DNS 平台也需要任务调度系统?

答:因为很多 DNS 相关能力本质上都是后台异步任务:

  • Provider 同步
  • Drift 检测
  • Provider 切换
  • WHOIS 刷新
  • 证书续期
  • 健康检查
  • 清理和补偿任务

如果没有统一调度系统,这些能力会散落在业务代码里,难以统一重试、审计和可视化。

你们如何做域名资产管理?

答:域名资产管理不仅是保存域名列表,还包括:

  • 域名注册商信息
  • 创建时间、过期时间
  • WHOIS 状态
  • NameServer 信息
  • DNSSEC 状态
  • 是否开启监控
  • 是否需要续费告警

这部分对企业很重要,因为很多故障不是解析配置错,而是域名过期、NS 被改、注册信息异常。

在性能上最关注的是什么?

  • 控制面性能 关注后台写入、任务调度、批量同步、查询管理接口响应
  • 数据面性能 关注 DNS 查询 QPS、缓存命中率、延迟和故障隔离

设计里强调内存缓存和查询隔离,是因为面对恶意扫描和高频查询时,不能让数据库被轻易打穿。

面对恶意子域扫描,你们怎么避免数据库被打穿?

答:这类问题不能只靠数据库优化,关键是前置缓存和故障隔离。
设计上会采用:

  • L1 内存缓存
  • 未命中异常检测
  • 恶意来源识别
  • 白名单/沙箱策略
  • 只对正常流量回源

核心思想是:未知恶意请求不能无限透传到底层存储。

如果面试官问,这个项目最有技术含量的点是什么,你会怎么回答?

答:我会说这个项目最有价值的,不是单一功能,而是把多个基础能力整合成统一 DNS 控制面。
难点在于:

  • 用本地模型统一抽象多 Provider
  • 通过异步 Job 保证最终一致性
  • 用 HTTPDNS、智能 DNS 和防污染提升解析可控性
  • 用证书、域名资产、私有 DNS、服务发现把平台能力从“解析管理”扩展到“企业名字服务治理”

它本质上是一个面向企业基础设施的 DNS 平台,不只是后台 CRUD。

为什么不直接选择 Route53、Cloudflare 这类成熟平台,而要做你这个系统?

答:因为 Route53、Cloudflare 这类平台本质上是“单厂商 DNS 服务”,而 Hermes 解决的是“企业级统一 DNS 治理”的问题,两者定位不一样。

如果直接用单一平台,会有几个明显限制:

  • 厂商绑定强 业务会被某一家 Provider 的能力、计费、区域覆盖和产品策略绑住,迁移成本高。

  • 多云统一治理差 很多企业现实里不是只有 Route53,往往同时有 Cloudflare、Namecheap、阿里云、DNSPod、私有 DNS。单一平台没法统一管理这些资产。

  • 企业内网场景支持不完整 Route53 这类更偏公有云 DNS 服务,不会替你统一处理企业里的私有 DNS、内外网同域、服务注册发现、混合云命名体系。

  • 缺少统一控制面 企业通常需要统一权限、审计、审批、资产管理、证书联动、WHOIS 监控、漂移检测、Provider 切换,这些能力如果全压在单一云厂商上,灵活性不够。

  • 防封、防污染、HTTPDNS、智能调度策略未必贴合业务
    公有平台提供的是通用能力,但企业业务常常要更强的可编排性,比如按业务标签、内外网、地区、健康状态、风控策略做动态调度。

所以 Hermes 的价值不是“比 Route53 更会做权威 DNS 解析”,而是:

  • 把多个 DNS 平台统一抽象成一个控制面
  • 让 Hermes 成为企业自己的 source of truth
  • 支持多 Provider 容灾、迁移和切换
  • 把公有 DNS、私有 DNS、HTTPDNS、证书、资产、安全、服务发现放到同一个治理体系里

一句话总结就是:

Route53 是一个优秀的 DNS Provider,而 Hermes 是一个面向企业的 DNS 治理平台。我们不是替代某一家 Provider 的底层解析能力,而是统一管理和编排这些能力。

如果面试官继续追问,你还可以补一句:

“如果公司业务规模小、单云、没有内网 DNS 和多 Provider 治理需求,那直接用 Route53 很合理;但一旦进入多云、多环境、多团队协作和基础设施治理阶段,就会需要 Hermes 这种控制面。”