DNS 中很久以前就定义了 SRV 记录,它允许将域的某些服务定向到不同的机器。例如,这是我在TCP 端口 389example.com
上为域发布 LDAP 服务的方式:server1.example.net
_ldap._tcp.example.com IN SRV 100 1 389 server1.example.net
此类记录可能不止一条,这样我就可以实现一些负载平衡。
某些服务通常支持相应的 DNS 查找,包括 LDAP、Kerberos、SIP、XMPP 和其他一些服务。但是,对于电子邮件,我们使用一种SRV
称为记录的“简化形式” MX
。它不允许我们定义权重和更改端口(它始终使用 tcp 25)。有些服务根本不使用这种类型的查找,例如,HTTP 客户端从不发出相应的 DNS 请求,并且始终连接到相应主机的 TCP 端口 80(或 HTTPS 的 443)。
最近新草案出现了,建议使用一种特殊的新类型的 DNS 记录,称为 SVCB 记录。它还定义了一种特殊的 SVCB 记录类型,即 HTTPS 记录。在草案中,作者确认这本质上是一种新型的 SRV 记录。
所以我想知道为什么他们发明了一种具有全新语义的新型记录,而不是推动采用众所周知且广泛使用的 SRV 记录?为什么不使用类似
_https._tcp.example.net IN SRV 100 1 443 server2.example.com
缺点也类似:这需要更换软件。旧客户端软件既不会执行 SRV 请求,也不会执行 SVCB/HTTPS DNS 请求,因此两者都不起作用。
然而,SVCB 还有一个很大的缺点:记录类型是新的,因此它还需要 DNS 服务器更新和管理员培训。顺便说一句,记录的语义并不是那么简单。
作为一名负责十几个公共 DNS 域的专业管理员,我对此感到担忧。
有哪些显著的优势?
答案1
引自草案附录 C.1
C.1. Differences from the SRV RR type
An SRV record [SRV] can perform a similar function to the SVCB
record, informing a client to look in a different location for a
service. However, there are several differences:
* SRV records are typically mandatory, whereas SVCB is intended to
be optional when used with pre-existing protocols.
* SRV records cannot instruct the client to switch or upgrade
protocols, whereas SVCB can signal such an upgrade (e.g. to
HTTP/2).
* SRV records are not extensible, whereas SVCB and HTTPS RRs can be
extended with new parameters.
* SRV records specify a "weight" for unbalanced randomized load-
balancing. SVCB only supports balanced randomized load-balancing,
although weights could be added via a future SvcParam.