- 打得开的域名其实是在售的
- DNS 早就在做名称解析以外的事
- 下划线名字在做的事
- RFC 10023 定义的记录
- 四个标签和那些约束
- 这种做法便宜的原因
- 以及这种做法给不了信任的原因
- 如果要挂在自己的域名上
- 小结与出处
打得开的域名其实是在售的
你想要的域名已经被注册了。打开一看,网站也好好地显示着。到这里一般人就放弃了。可其中相当一部分,其实是有意出售的。
问题在于机器没有办法知道这件事。人可以去找网站上写的联系方式发封邮件,但域名搜索工具或注册商没法对几百万个域名都这么干。注册信息里也不会写着出售意愿。「已注册」和「愿意卖」是两个层次的信息,而后者一直没有地方安放。
DNS 早就在做名称解析以外的事
这个问题的答案最近以 RFC 的形式出现了,而比答案本身更有意思的是答案被放在了哪里。是 DNS。
我们学到的是,DNS 是把名字变成地址的系统。可在真实运维里,我们往 DNS 里塞的东西有相当一部分并不是地址。我们写下哪些服务器可以用这个域名发邮件,写下验证签名要用的公钥,写下哪些机构可以为这个域名签发证书,还会为了拿到证书而短暂地放上一份「我控制着这个域名」的证据。
这些东西的共同点是,它们全都是关于这个域名的主张。而且这些主张被放在了只有域名所有者才能写的位置上。DNS 真正提供的东西,与其说是名称解析,不如说更像一块只有域名所有者能写、所有人都能读的全球公告板。
下划线名字在做的事
这块公告板能互不冲突地运转下去,靠的就是下划线。
TXT 记录什么内容都能装,所以当一个域名上混着多种用途的 TXT 时,读的一方必须打开内容才能挑出属于自己的那条。把这个问题理顺的是 2019 年的 RFC 8552。这份文档立下的规则是:按用途设立以下划线开头的子节点,只有该节点之下的记录才按这个用途来解释。它还在 IANA 建立了下划线节点名的注册表,让它们彼此不重叠地被管理起来。
选用下划线的理由才是关键。主机名规则不允许下划线。所以以下划线开头的名字,绝不会与任何真实主机冲突。早已广泛使用的 _dmarc、_domainkey、_acme-challenge 这些名字,就这样被纳入了这条规则之下。
RFC 10023 定义的记录
这次新增的是 RFC 10023。它是 SIDN Labs 的 Marco Davids 撰写的信息类文档,于 2026 年 7 月发布。名字是 _for-sale。
它的工作方式是这样的。如果你有意出售 example.com,就在 _for-sale.example.com 上放一条 TXT 记录。原来的域名照常工作。网站照常显示,邮件照常收发。只是在旁边多挂了一个信号。
记录的内容是一个 255 字节的字符串片段,并且必须以版本标签开头。之后最多只能再附加一个标签值对。
_for-sale IN TXT "v=FORSALE1;"
_for-sale IN TXT "v=FORSALE1;ftxt=Call for info."
_for-sale IN TXT "v=FORSALE1;furi=https://example.com/foo%20bar"
_for-sale IN TXT "v=FORSALE1;fval=EUR999"
_for-sale IN TXT "v=FORSALE1;fval=BTC0.000010"
像第一行那样只有版本、没有标签的形式也是有效的。它只宣告有出售意愿,其余什么都不说。
四个标签和那些约束
定义的标签有四个。
| 标签 | 用途 | 格式 |
|---|---|---|
fcod | 处于合作关系的当事方之间使用的私有代码 | 1 到 239 字节 |
ftxt | 供人阅读的自由格式文字 | 1 到 239 字节 |
furi | 指向更多信息的 URI | 一个 URI。推荐 http、https、mailto、tel |
fval | 期望价格 | 货币代码加金额,形如 USD750、BTC0.000010 |
约束在规范里也写得很清楚。一条记录里的标签值对不能超过一个。通配符形式不符合规格。缓存有效时间推荐在 3600 秒以内。而写入「无意出售」之类的内容,会被视为无效用法。
价格用的是货币代码而不是货币符号,这一点也值得留意。符号在各国之间会重叠、还会引发字符集问题,而代码不会。看着像个小决定,在自动处理这一侧却是很大的差别。
这种做法便宜的原因
这套设计之所以有吸引力,在于它什么都不动。
它没有新造记录类型。真造了的话,解析器、权威服务器和管理工具就全都得跟着适配。取而代之的是,直接用早已到处都能跑的 TXT。协议也不改。而且对原域名的运行没有影响。它安静地挂在一个活着的站点旁边,等你不想卖了,删掉就完事了。
这也是下划线通道一直被沿用的原因。部署一项新功能最便宜的办法,就是把它叠在所有人都已经部署好的东西上面。邮件认证是这样传播开的,证书签发验证也是。
以及这种做法给不了信任的原因
便宜是有代价的。这条通道上承载的一切,都是未经验证的自我主张。除了「控制着这个域名」之外,它什么都不保证。
RFC 10023 在这一点上坦率得令人意外。光看安全一节里点出的风险就够了:把值原样输出到页面上可能变成脚本注入或查询注入;可以利用同形异义字符或双向文本欺骗读到该值的人;furi 指向的地方可能是恶意站点;还可以写一个低得离谱的价格来诱骗买家。所以文档建议,处理方必须对值做净化并核查 URI 的信誉,同时一并展示「价格仅供参考、应向卖方确认」这类提示。
还有一条最明确的禁令。即便遇到了 furi 的内容,也不得在没有用户明确确认的情况下自动跳转。一旦你把用户直接送往 DNS 记录里写的地址,那么临时拿到这个域名的人就能决定那条链接的落点。
隐私方面的风险文档也直接写了。公开出售意愿这件事本身就是信息的暴露,而写上去的联系方式会被收集、成为垃圾信息的目标。
如果要挂在自己的域名上
归纳一下,清单是这样的。
- 只在真的想卖的时候才挂。 规范就是这么定的。
- 把缓存有效时间设短。 推荐 3600 秒以内。为了避免自己改了主意、却还被整天当作在售来广告,这是必要的。
- 新开一个联络方式。 不要写现有的工作邮箱。写进公开记录里的地址会被收集。
- 慎重决定要不要写价格。 信息类 RFC 只规定格式,不会替你决定谈判策略。写下去的数字会变成上限。
- 如果你做的是读取方,就禁止自动信任。 不要原样渲染取到的值,不要加入自动跳转,并在界面上标明这条信息只是卖方的一面之词。
- 不想卖了就删掉。 只要删掉记录信号就消失,这是这套做法最大的优点。
小结与出处
把这份 RFC 只当成一份关于域名交易的文档来读,它就显得很小。更值钱的部分是那个模式。在已部署的基础设施之上叠一个下划线名字来承载新含义,这种做法有多便宜、以及作为代价它有多缺乏信任,一份文档里两面都摆了出来。当你在内部系统里感到同样的诱惑时,请把这两面放在一起看。
- RFC 10023 — The
_for-saleUnderscored and Globally Scoped DNS Node Name —— Marco Davids,SIDN Labs,信息类,2026 年 7 月。记录语法、四个标签及其长度限制、示例、缓存有效时间建议、禁止自动跳转、安全与隐私考量,全部在这份文档中确认。 - RFC 8552 — Scoped Interpretation of DNS Resource Records through Underscored Naming of Attribute Leaves —— 2019 年 3 月,BCP 222。下划线名字的注册表以及使用下划线的理由在此确认。
- 正文末尾的清单,是把上述两份文档的规定与建议转写成实务形式的结果,其本身并不是规范里收录的列表。
현재 단락 (1/44)
你想要的域名已经被注册了。打开一看,网站也好好地显示着。到这里一般人就放弃了。可其中相当一部分,其实是有意出售的。