【问题标题】:What happens if a DNS over HTTPS server responds with status 5xx or 4xx on iOS?如果基于 HTTPS 的 DNS 服务器在 iOS 上响应状态为 5xx 或 4xx 会发生什么?
【发布时间】:2021-11-20 15:47:00
【问题描述】:
看着这个examplemobileconfig,我试图找出如果 DoH 服务器在响应 iOS 上的 DoH 查询时响应状态为 4xx 或 5xx 会发生什么。例如,如果 NGINX 损坏或出于任何原因,DoH 服务器会以 200 以外的任何状态响应。DNS 请求是否完全失败,我会在 Safari 中收到错误消息? iOS 设备会自动尝试其他 DNS 吗?
【问题讨论】:
标签:
ios
dns
doh
dns-over-https
【解决方案1】:
规范很清楚,见RFC 8484 " DNS Queries over HTTPS (DoH)", section 4.2.1 "Handling DNS and HTTP Errors":
具有不成功 HTTP 状态代码的 HTTP 响应不包含
回复 HTTP 请求中的原始 DNS 问题。卫生部
不成功的客户端需要使用相同的语义处理
与其他 HTTP 客户端一样的 HTTP 状态代码。这可能意味着
DoH 客户端使用同一个 DoH 服务器重试查询,例如如果
存在授权失败(HTTP 状态代码 401;请参阅
[RFC7235] 的第 3.1 节)。这也可能意味着 DoH 客户端
使用不同的 DoH 服务器重试,例如不支持的媒体
类型(HTTP 状态码 415;参见 [RFC7231] 的第 6.5.13 节),或
服务器无法生成适合于
客户端(HTTP 状态码 406;参见 [RFC7231] 的第 6.5.6 节),等等
开。
那么确切的行为显然取决于所使用的客户端,但这意味着这里的问题并不是真正的主题,因为与编程无关。