再谈域名注册服务提供商的选择
近期由于一些众所周知的原因,我做了一系列域名转移的操作。和2006年的这篇相比,这些年我也经历了不少域名注册服务提供商,并且积累了不少经验,是时候更新一下了。
域名服务是一项互联网基础服务,它提供了容易被人记忆和识别的在线地址。对于个人和企业来说,拥有自己的域名最大的好处在于能够掌握随时换一家供应商的议价权。集中式的平台,包括YouTube、Twitter、GitHub,也包括新兴的平台如TikTok、或是来自中国的小红书、喜马拉雅、B站等等,尽管也都是很好的产品,有些甚至可以为内容作者带来丰厚的回报,但是其上的个人或是企业无法很容易地离开这些平台。依赖这些平台,意味着在它们选择对内容作者采取某些行动,或是退出某项生意的时候,当事人可能没有任何其他选择,而必须在极短的时间内通知自己的受众去其他平台,这有时是很困难甚至不可能的。
对个人来说,邮件服务的运行成本是很高的(这里需要考虑的不仅是服务器本身的成本和运行费用,也包括需要投入的时间精力)。但即使不自己去运行邮件服务,也仍然有许多支持独立域名的邮件服务提供商,例如 Google Workspace、Microsoft 365、Zoho Workplace等等。与单纯使用Gmail或outlook.com等等相比,拥有独立的域名意味着可以在这些服务之间随时进行转移,而无需逐个通知亲朋好友。
域名系统(DNS)是全球节点最多的一个分布式数据库系统,它包括数以百万计的缓存和权威解析服务器。
13对IP v4/v6地址后面的「根」DNS服务器完成根域名(.)的下级域名,俗称顶级域,包括 .com、.net、.org
等的解析。
顶级域名 (Top-level Domain, TLD) 例如由一系列域名注册管理机构(domain registry)进行管理,这包括维护该顶级域名的解析服务器、维护用于注册域名的数据库,等等。顶级域名的解析是由13组根域名服务器完成的。大部分域名注册管理机构并不直接提供针对个人或企业的域名注册服务,这类服务通常是称做「域名注册服务提供商 (domain registrar)」的代办机构完成的,如果把域名注册管理机构看作是批发商的话,这些注册服务提供商可以看作是零售商。
根域,以及大部分顶级域都采用了 DNSSEC。DNS协议本身是在上世纪八十年代设计的,当时互联网上的攻击行为并不普遍,因此这个协议没有任何内建的安全特性,而作为DNS的扩展,DNSSEC提供了可以从根域开始的逐层验证DNS应答真伪的方法,从而可以大幅提高DNS的安全性。然而,由于DNSSEC的部署有一定的难度,许多人不敢在自己的域名上部署DNSSEC,而许多域名注册服务提供商对于DNSSEC的支持也相当有限。
除了DNS本身的安全之外,域名注册服务提供商的安全性也相当重要。在2023年,我认为支持采用 FIDO 的双因素身份验证是最最基本的要求。和短信或是TOTP (例如Google Authenticator,以及RSA SecurID等硬件产品) 均不够可靠,容易让用户遭到钓鱼攻击。支持FIDO U2F的公司目前还不太多,而是否能够采用最新的安全技术,则十分反映一家公司的技术实力和对安全的重视程度。
基于上述考虑,我认为一家符合我需要的域名注册服务提供商应该满足的条件是(不分先后):
- 声誉良好,无不良记录(例如通过一些手段诱使用户购买不必要的产品,或是给用户域名转出制造不必要的障碍。)的直接代理(即它们本身是 ICANN认证的注册服务提供商 而不是这些注册服务提供商的代理)。
- 必须支持基于FIDO的双因素身份验证,并且可以完全禁止使用SMS作为2FA。
- 必须支持DNSSEC(希望支持Ed25519,必须至少支持ECDSAP256SHA256)
- 可以使用自己的DNS服务器,或提供符合下列条件的DNS服务:
- 必须提供高可用性(anycast)。
- 必须支持符合标准格式的数据导入及导出(换言之在迁出时此处不应成为障碍)。
- 必须支持不需要人工干预的自动化DNSsec。
- 必须支持SSHFP、TLSA和TXT记录。
- 必须提供Whois Privacy服务(这目前基本上是标配了)。
- 价格合理:总费用不超过市场占有率前4家在无折扣时报价倒数第二低的水平。
域名注册服务是一项红海业务,大部分注册服务提供商并不能从这项业务中获得充足的利润。因此,选择的注册服务提供商最好是有其他的利润来源,而不仅仅依赖这一利润单薄的业务。
本次评估过的注册服务提供商
2023年6月,我考察了以下注册服务提供商。
- CloudFlare(NYSE: NET)。它的主营业务是CDN,可用性方面记录良好。
- Amazon AWS的 Route 53。这是Amazon AWS旗下的业务,AWS是亚马逊的主营业务。
- PorkBun。这是一家最近几年新兴的以域名注册为主的服务,它也经营包括Web和Email托管这样的业务。
- Namecheap。这是第二大注册商,基本上符合我的需求,但由于价格原因未做更进一步的评估。
- Name.com。淘汰原因是不支持FIDO U2F。
- Moniker.com。淘汰原因是不支持FIDO U2F。
- GoDaddy.com。淘汰原因是其捆绑销售手法。
- ionos.com。淘汰原因是不支持FIDO U2F。
评估总结摘要
在我选择的前三家注册商之间,我认为比较合理的选择方法如下:
首先确定自己是不是打算自行架设DNS。采用DNSSEC之后,域名迁移会 复杂一些,因此如果DNS是由域名注册服务提供商提供的话,这应该是一项需要考虑的问题。如果决定不自建DNS的话,选择CloudFlare,原因是其价格便宜。
如果决定自行架设DNS,则选择 .net 选择AWS Route 53,而 .com 选择PorkBun。
具体评估记录
CloudFlare
优势 CloudFlare的主营业务是CDN,做网站通常会用得上。CDN的利润比较稳定,不需要特别担心它突然不干了跑路。CloudFlare的域名注册服务基本上是成本价。其提供的DNS采用了anycast,有良好的可靠性记录,并且可以自由导入导出BIND zone格式的数据。DNSSEC配置简便。 缺点 不支持自定义DNS(需要升级到Business或更高级别的用户),域名转移过程较慢。
转移域名的大致流程如下:
- 把域名添加到CloudFlare,在原注册商处导出BIND格式然后直接导入。CloudFlare本身可以扫描原有的域名并添加常见的记录,但导入BIND zone显然更为可靠。
- 在原注册商处关闭DNSSEC,DNS指向CloudFlare,等待CloudFlare这边确认之后,如果域名已经处于解锁状态即可开始转移。变更DNS服务的生效时间是很快的,但CloudFlare尽管在界面上提供了开始刷新的按钮,实际反应却非常慢,实际操作中我等待了至少20分钟。
- 在原注册商处解锁域名。CloudFlare此处并未提供任何手动触发的刷新机制,此操作极慢(相对其他域名注册服务提供者;以小时计)。
发现的坑:
- CloudFlare识别DNS服务器变更、域名状态的速度极慢,慢是以小时甚至数小时计的,它是我从业二十几年以来见过的最慢的registrar。
- CloudFlare的免费版本完全不支持自定义DNS(子域可以自行添加NS记录来delegate),想要使用自己的DNS必须成为尊贵的Business或Enterprise用户。
- 转移过程中有一段时间域名会显示为已过期而不是转移过程中的状态,对于维持平稳的血压非常不友好。
- 所有用户的所有域名使用的是同一个KSK。这未必是个显著的安全隐患,但是这个实现显得有些偷懒了。
CloudFlare的DNSSEC实现没有提供算法的选择,这个做法有好(防止用户自己给自己挖坑)有坏(不够灵活),对大部分用户来说问题不大。
Amazon AWS Route 53
优势 Amazon AWS是Amazon旗下的产品,而AWS是Amazon的主营业务,AWS没有砍用户爱用产品的不良记录。Route 53支持DNSSEC,也支持自架DNS。使用Amazon信用卡可获得5%。
缺点 Route 53域名注册服务要求提供KSK的公钥对应的 DNSKEY 而不是直接提供 DS 记录。这一要求比较特别。域名转移过程中的反馈较少。自架DNS只支持6个NS记录。
转移域名的大致流程如下
- 首先在原注册商处解锁,禁用DNSsec、确信DNS仍然可用之后在AWS发起转移。
- 域名转移过程大约进行了20分钟,较为顺利,但中间几乎无任何反馈。由于我用的是自己的服务器,系统直接沿用了这些服务器,并未创建hosted zone(注意Route 53的hosted zone服务是收费的)。
发现的坑:
- DNSSEC配置比较独特。配置时需要告知DNSKEY记录(base64编码),需要注意选对key的类型。系统会自动根据它产生正确的DS记录。
- 域名转移过程中基本无任何反馈,略有些抓狂,此外域名注册email确认邮件需要点击一下,注意仔细检查邮件确认自己确实点了该链接。
- AWS对于自定义NS只支持最多6个,如果原先已经有超过6个,他们会照单全收,但如果删掉就不能再加回去了。
PorkBun
优势 界面较为现代化,转移域名时有详细的状态显示。 缺点 该公司业务比较单一,我对于该公司是否能一直持续提供这个业务存在一定的疑虑。DNSSEC配置略有些语焉不详。有些域名并不比竞争对手便宜。
转移域名的大致流程如下:
- 首先在原注册商处解锁,禁用DNSsec、确信DNS仍然可用。
- 获得Auth Code,在porkbun输入域名和auth code,结账。
- 等待。注意porkbun会直接复制glue record和原先的NS信息,而没有任何提示。
发现的坑:
DNSSEC配置界面有些地方不够明确,例如不能同时输入 DS 和 DNSKEY,这一点在界面中完全可以表达的更明确一些(例如「请不要同时填写」,而不是「系统检测到了某项错误」)。实际操作中,.com 只填写 DS 部分即可注册成功。