DNS 解析与缓存与动态服务发现

共 24 题
#

1. 递归解析器从根区到权威服务器如何迭代查询,胶水记录解决了什么循环依赖?

A 递归解析器直接向根区查询最终答案,无需逐级
B 递归解析器从根区到 TLD 再到权威逐级迭代,胶水记录在父区提供子区权威的 A 记录以打破循环依赖 ✓ 正确答案
C 胶水记录只用于 TLD 查询,不用于权威解析
D NS 记录本身包含权威服务器的 IP 地址
#

2. DNS-over-HTTPS(DoH)与 DNS-over-TLS(DoT)在握手开销、隐私与中间设备兼容上的取舍有哪些?

A DoH 混入 443 HTTPS 流量,抗封锁强但握手开销略高;DoT 用 853 端口实现简洁但易被中间设备识别/阻断 ✓ 正确答案
B DoT 用 443 端口,DoH 用 853 端口
C DoH 与 DoT 都不加密 DNS 查询
D DoT 比 DoH 更难被识别
#

3. 负缓存如何依据 SOA MINIMUM 与响应 TTL 生效,NXDOMAIN 与 NODATA 应如何区分?

A 负缓存 TTL 由 SOA MINIMUM 与 SOA 记录 TTL 中较小者决定 ✓ 正确答案
B NXDOMAIN 表示域名存在但无此类型,NODATA 表示域名不存在
C 负缓存不缓存 SOA 记录的 TTL
D NXDOMAIN 与 NODATA 含义相同
#

4. 权威 DNS 的 anycast 部署如何减少延迟与抗 DDoS,地域调度与健康探测如何协同?

A anycast 让用户路由到最近节点降低延迟并分散 DDoS 流量,健康探测确认节点可用并据此调整通告与调度 ✓ 正确答案
B anycast 部署会增大解析延迟
C 健康探测与 anycast 无关
D anycast 无法抗 DDoS
#

5. DNS 查询的 QNAME minimization 与 QTYPE filtering 如何减少隐私泄露,与 ECS(edns-client-subnet)的取舍是什么?

A QNAME minimization 与 QTYPE filtering 减少对权威的隐私泄露,而 ECS 携带客户端子网提升调度精度但增加泄露 ✓ 正确答案
B QNAME minimization 会把完整查询名发给上游权威
C ECS 与隐私泄露无关
D QTYPE filtering 与隐私无关
#

6. DNSSEC 验证链中的 DS、DNSKEY、RRSIG、NSEC/NSEC3 分别承担什么职责?

A DS 记录存放子区私钥
B DNSKEY 存放公钥,RRSIG 是数据签名,DS 在父区绑定子区 DNSKEY 以建立信任链,NSEC/NSEC3 提供否定证明 ✓ 正确答案
C RRSIG 用于证明域名不存在
D NSEC 记录用于证明域名存在
#

7. NSEC3 相比 NSEC 在 zone walking 防御上做了什么,为何需要 salt 与额外 hash 迭代次数?

A NSEC 用哈希隐藏域名,NSEC3 明文泄露
B salt 的作用是降低验证开销
C NSEC 与 NSEC3 都明文列出域名
D NSEC3 用哈希隐藏域名防御 zone walking,salt 防预计算、迭代次数增加破解成本 ✓ 正确答案
#

8. 启用 DNSSEC 后某些 CDN 解析失败通常源于签名过期而非配置错误,自动化续签与监控要点是什么?

A 签名过期会使验证失败导致解析失败,需启用自动签名续签并监控 RRSIG 到期时间与验证成功率 ✓ 正确答案
B RRSIG 没有有效期,不会过期
C 解析失败永远是配置错误,与签名无关
D 续签只需手工改一次 DS 记录
#

9. Kubernetes Service、EndpointSlice 与 CoreDNS 记录如何把服务名映射到后端 Pod?

A Service 经 EndpointSlice 记录后端 Pod IP,CoreDNS 为服务生成 A/SRV 记录映射到 ClusterIP(或 headless 的 Pod IP) ✓ 正确答案
B CoreDNS 直接返回每个 Pod 的容器运行时 ID
C EndpointSlice 由 CoreDNS 生成
D 服务名解析不经过 CoreDNS
#

10. DNS 缓存投毒攻击(Kaminsky)的根本原因是什么,源端口随机化与 0x20 编码如何缓解?

A 0x20 编码是把查询名全部转小写
B Kaminsky 攻击根因是事务 ID 太长,无法伪造
C Kaminsky 攻击的根因是响应验证熵不足,源端口随机化与 0x20 编码都增加攻击者猜测难度 ✓ 正确答案
D 源端口随机化不增加任何熵
#

11. DNS 缓存过期后客户端仍能解析可能源于 ndots、search domain 与 negative cache TTL 组合,如何系统排查?

A ndots 与 search domain 只影响正向解析,不影响缓存
B ndots/search 会改变查询路径,负缓存 TTL 会延长"不存在"记录,两者结合可导致缓存过期后仍解析到旧值,需分层排查 ✓ 正确答案
C negative cache 只缓存存在的记录
D ndots 与缓存无关
#

12. 客户端缓存超过权威 TTL 会怎样影响故障摘除,连接池复用为何会进一步延迟切换?

A 客户端在 TTL 内沿用旧地址,叠加上连接池复用旧连接,会显著延迟故障摘除与切换 ✓ 正确答案
B 客户端缓存超过 TTL 会加速故障摘除
C 连接池复用能立即切换新地址
D TTL 与故障摘除无关
#

13. 服务网格(Istio/Linkerd)中的 EDS(Endpoint Discovery Service)相比传统 DNS 轮询在故障检测时延上的优势来自哪里?

A EDS 仍依赖 DNS 的 TTL 缓存
B EDS 只做地址解析,不做健康检查
C EDS 与 DNS 轮询延迟相同
D EDS 由控制面主动监测健康并推送端点变更,避免 DNS TTL 缓存延迟,故障检测更快 ✓ 正确答案
#

14. 排查间歇性 SERVFAIL 时,如何检查 DNSSEC 时钟、EDNS 大包分片、上游超时与 lame delegation?

A SERVFAIL 只可能由 DNSSEC 签名过期导致
B EDNS 大包不会影响解析
C 需检查 DNSSEC 时钟/签名、EDNS 大包分片、上游超时与 lame delegation(NS 指向错误权威) ✓ 正确答案
D lame delegation 不影响解析
#

15. 为什么 gRPC 的 service config + DNS resolver 在 K8s 集群内仍需要 headless service + Endpoints,而非 ClusterIP?

A gRPC 使用 ClusterIP 即可在客户端感知所有 Pod
B headless service 也返回 ClusterIP
C gRPC 客户端需要解析到全部后端 Pod IP,headless service 返回所有 Pod IP;ClusterIP 只返回单一虚拟地址,无法做客户端负载均衡 ✓ 正确答案
D gRPC 不使用 DNS resolver
#

16. 服务发现与配置中心(Apollo/Nacos/ConfigMap)在推送机制上分别为长轮询、watch 与 HTTP poll,QoS 与一致性差距如何?

A Apollo 长轮询、Nacos watch、ConfigMap 轮询,三者实时性更高、一致性更强
B 三种机制都实时推送且强一致
C 长轮询与 watch 实时性较好,ConfigMap 轮询延迟大且多属最终一致,三种机制在实时性与一致性上有差距 ✓ 正确答案
D ConfigMap 更新实时生效且强一致
#

17. SRV 记录的 priority、weight、port 如何驱动客户端选择,失败重试应避免什么偏差?

A SRV 只有 priority 没有 weight
B SRV 用 priority 分层、weight 加权随机选择,失败重试应随机化起点并避免固定顺序造成的头部偏差 ✓ 正确答案
C 重试总是从列表头部开始是最优的
D SRV 的 port 字段表示优先级
#

18. Kubernetes 中 Pod readiness probe 与 EndpointSlice controller 的 readiness gating 联动如何避免流量进入未就绪 Pod?

A readiness probe 决定 Pod 就绪,EndpointSlice 把就绪 Pod 标记为 serving,Service 只把流量转发到就绪端点 ✓ 正确答案
B EndpointSlice 忽略 Pod 的 ready 状态
C 未就绪 Pod 也会接收 Service 流量
D readiness probe 与流量转发无关
#

19. 客户端负载均衡策略(random、round-robin、least-requests、power-of-two-choices)在重尾延迟下表现差异如何?

A random 与 round-robin 能感知后端负载,规避慢后端
B power-of-two-choices 不感知负载
C 所有策略在重尾下表现相同
D 重尾延迟下 least-requests 与 power-of-two-choices 这类感知负载的策略优于随机/轮询,后者无法规避慢后端 ✓ 正确答案
#

20. CNAME、DNAME、ALIAS/ANAME 的语义有何不同,zone apex 为什么不能简单放置 CNAME?

A CNAME 允许与 SOA/NS 记录共存
B ALIAS/ANAME 是标准 CNAME 的别名
C DNAME 作用于单个名称而非子树
D zone apex 必须有 SOA/NS 且 CNAME 不能与其它记录共存,故 apex 不能用 CNAME,通常用 ALIAS/ANAME 解决 ✓ 正确答案
#

21. 为什么 zone apex 不能用 CNAME 与 MX/NS 冲突,ALIAS/ANAME 实现上是 A 记录拼接还是 302 重定向?

A ALIAS/ANAME 需要客户端跟随别名
B ALIAS/ANAME 实现为 HTTP 302 重定向
C apex 可以安全放置 CNAME 而不冲突
D apex 放 CNAME 会与 SOA/NS 冲突,因为 CNAME 不能与其它记录共存 ✓ 正确答案
#

22. Consul、etcd、ZooKeeper 作为服务注册中心在一致性模型(CP/AP)与 watch 语义上的取舍是什么?

A Consul 只能配置为 CP
B ZooKeeper 是 AP 模型
C 所有注册中心都只支持一次性 watch
D ZooKeeper 与 etcd 都是 CP(Raft/ZAB 强一致),ZK 的 watch 是一次性的,etcd/Consul 支持流式 watch ✓ 正确答案
#

23. 在双注册中心(consul + nacos)环境中,跨中心数据同步通过 xDS 还是自研 replication,哪种场景更易出现脑裂?

A 脑裂与分区无关
B xDS 双写必然脑裂
C 自研 replication 在分区时不会产生数据分叉
D 双写 + 异步复制(自研 replication)在分区时更易脑裂,xDS 单一数据源分发可降低脑裂风险 ✓ 正确答案
#

24. 服务发现返回的 endpoint 元数据(zone、region、version)如何被客户端纳入负载均衡权重,蓝绿发布与灰度发布怎么映射?

A endpoint 元数据只用于展示,不影响负载均衡
B 蓝绿发布与灰度发布没有区别
C 客户端按 zone/region/version 元数据做区域感知与版本路由,蓝绿是全量切换、灰度按比例渐进放量 ✓ 正确答案
D 灰度发布无法按版本分流