前几天看到 Ethan Hawksley 的一篇文章 How to get a free .arpa domain,讲怎么钻 IPv6 反向 DNS 的空子:拿一段属于自己的 .ip6.arpa 命名空间,在上面写任意 DNS 记录,最后挂个网站上去。
这事能成。但我更感兴趣的不是"白嫖域名"这个结果,而是中间要用到的几个机制:
- IPv6 地址是怎么映射成 DNS 名字的?
ip6.arpa为什么存在,归谁管?- 一个 IPv6 前缀为什么天然对应一块 DNS 命名空间?
- DNS 委派(delegation)怎么把这块空间交给别的服务器?
- 把它当普通网站域名用,会卡在哪?
下面挨个说,顺便补上原文一带而过的部分。
.arpa 是什么
日常见得最多的顶级域是 .com、.org、.net、.dev,都由商业注册局运营,任何人都能花钱注册。
.arpa 不是这一类。
它的全称是 Address and Routing Parameter Area(地址与路由参数区),是一个专供互联网基础设施使用的顶级域,由 IANA 在 IAB 指导下管理,地位由 RFC 3172 定义。这个全称其实是后来倒推出来的。最早它就叫 arpa,是 ARPANET 向 DNS 过渡时期的临时域,本打算用完就删,结果一堆基础设施长在了上面删不掉,才补了个正式含义。
.arpa 不对外开放注册,你没法拥有 yoursite.arpa。它下面挂着几个专用命名空间:
in-addr.arpa IPv4 反向 DNS
ip6.arpa IPv6 反向 DNS
e164.arpa 电话号码(ENUM,RFC 6116)
home.arpa 家庭网络本地域名(RFC 8375)
e164.arpa 是个旁支:它把 E.164 电话号码映射进 DNS,由 RIPE NCC 按 IAB 指示运营。少数几个国家(比如德国)开放过让用户自己管理号码对应的记录,原文作者最早就是从这里受到启发的,只是大部分国家的号码段没开放,他才转向了 ip6.arpa。
正向和反向 DNS
平时用的是正向解析:
blog.eimoon.com → AAAA / A 记录 → IP 地址
反向解析是反过来问:这个 IP 属于谁?
IP 地址 → PTR 记录 → 域名
反向解析靠的就是 in-addr.arpa 和 ip6.arpa。把 IP 地址按规则转成 .arpa 下的一个名字,再查它的 PTR 记录,就能拿到主机名。邮件服务器的 FCrDNS 校验、traceroute 里显示的路由器名字,用的都是这套。
IPv6 地址怎么变成一个域名
先看单个地址怎么处理。IPv6 地址是 128 bit,写成 32 个十六进制字符。反向 DNS 里不直接塞完整地址,而是:
- 补全:把每个冒号分段补到 4 位;
- 拆到 nibble:一个十六进制字符就是一个 nibble(4 bit),逐字符拆开;
- 倒序:把 nibble 顺序整个反过来(最低位在最左);
- 加后缀:末尾拼上
ip6.arpa。
拿原文用的前缀举例。Hurricane Electric 给的路由前缀是:
2001:470:1f09:140::/64
取前 64 bit,补全成 2001:0470:1f09:0140,拆成 16 个 nibble:
2 0 0 1 0 4 7 0 1 f 0 9 0 1 4 0
倒序,每个 nibble 之间加点,拼上 ip6.arpa:
0.4.1.0.9.0.f.1.0.7.4.0.1.0.0.2.ip6.arpa
这就是这段 /64 对应的反向 DNS 区域名。
如果是一个完整地址 2001:470:1f09:140::1,展开成 32 个 nibble 后同样处理,得到的 PTR 名字有 32 个标签:
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.4.1.0.9.0.f.1.0.7.4.0.1.0.0.2.ip6.arpa
规则就是把地址的每个 nibble 当成一级 DNS 标签,低位在左、高位在右。DNS 名字本来就是左边最具体、右边最泛(www.example.com 里 com 最泛),反向 DNS 把这套规则套到了地址的每一位上。
这套 nibble 格式由 RFC 3596 定义,它也是现在 AAAA 记录的规范来源。历史上还折腾过几版:
- RFC 1886(1995)最早定义反向域,用的是
ip6.int; - RFC 3152(2001)把反向域迁到
ip6.arpa,并弃用ip6.int; - RFC 2673 提过一版基于 bitstring label(
\[x.../nn])的紧凑写法,后被 RFC 3363 建议不要用,统一回到 nibble; - RFC 4159(2005)正式宣告
ip6.int停用,ip6.arpa成为唯一标准。
一个 IPv6 前缀 = 一段命名空间
只有单个地址时能做的不多,拿到一整段前缀才有意思。
比如一个 /64:
2001:470:1f09:140::/64
/64 是 64 bit,正好 16 个 nibble,也就是 ip6.arpa 下深度为 16 的一个节点:
0.4.1.0.9.0.f.1.0.7.4.0.1.0.0.2.ip6.arpa
这个节点以下的整棵子树(对应地址后 64 bit 的所有取值),反向 DNS 上都归这段前缀的持有者。
只要前缀长度是 4 的倍数,反向委派就正好落在 DNS 标签边界上。/48、/56、/60、/64 分别对应 12、14、15、16 个 nibble,都是整数个标签,而 IPv6 的前缀分配基本就是这几个长度。RIR 和 ISP 分配地址时,一般也会把对应的反向 DNS 子域一起委派给你。
所以拿到一段 IPv6 地址空间,就等于拿到了它对应的那段反向 DNS 空间的控制权。而 DNS 不按区域限制记录类型,这个子树里放 PTR、CNAME、TXT、AAAA 都行,它只是碰巧本来是给反向解析用的。
DNS 委派
下一个问题:这段 ip6.arpa 空间,怎么交给我自己的 DNS 服务器管?
DNS 是一棵分层的树,每一级都能把某个子域的权威下放给别的服务器,靠的是在父区里放一组 NS 记录。.com 的权威服务器里有 example.com 的 NS 记录,指向 example.com 的托管商,就是这个机制。
反向 DNS 完全一样。在这个例子里:
- Hurricane Electric 持有
2001:470::/32这一大块的反向 DNS 权威; - 你在 HE 的隧道详情页把这段
/64的rDNS Delegation填成你自己的 NS; - HE 就在
0.4.1.0.9.0.f.1.0.7.4.0.1.0.0.2.ip6.arpa这个名字上放一组NS记录,指向你的服务器; - 之后所有对这个子树的查询,都会被引导到你这边。
托管商的 NS(比如 ns1.desec.io)不在这个区域内部,所以不需要 glue 记录。
到这一步,ip6.arpa 对你来说就不再是查 IP 用的东西,而是一块你能自己写记录的 DNS 区域。
实操路线
原文的完整路径是这样:
1. 拿 IPv6 前缀。 Hurricane Electric Tunnelbroker 免费发 IPv6 隧道,注册不做实名。创建隧道时要填一个能响应 ICMP Echo 的 IPv4 端点,它只校验这个地址 ping 得通,不校验你是否拥有它(原文作者直接 ping news.ycombinator.com 拿了个 IP 填进去)。建好后记下 Routed IPv6 Prefix,默认给 /64,点一下能再要个 /48。注意 HE 只委派 Routed 前缀的反向 DNS,隧道两端那个 PtP /64 不给。
2. 算出区域名。 按前面的 nibble 规则,把前缀转成 x.x.….ip6.arpa。
3. 建区域。 找一家肯接受 .arpa 区域的 DNS 托管商。原文提到 Cloudflare 免费版会拒掉这种区域名,deSEC 能正常建。deSEC 是柏林一家非营利组织运营的免费 DNS 服务,默认开 DNSSEC,有开放 API。在里面新建一个域,名字填第 2 步算出来的那串。
4. 配委派。 回到 HE 隧道详情页的 rDNS Delegations,把 NS1–NS5 填成 deSEC 给的 NS(ns1.desec.io、ns2.desec.org)。传播很快。
5. 写记录。 在 deSEC 里,这块区域就随你用了。
整条链路:
IPv6 前缀 → 反向 DNS nibble 命名 → ip6.arpa 子树 → NS 委派给 deSEC → 自己的 DNS 记录
你没有"注册"任何 .arpa 域名。你是因为持有一段 IPv6 地址空间,顺带控制了它对应的那段反向 DNS。
拿它做网站
技术上没问题。在这块区域里建一条记录,比如 blog.0.4.1.0.9.0.f.1.0.7.4.0.1.0.0.2.ip6.arpa,CNAME 到一个静态托管:
blog.<你的区域>.ip6.arpa → CNAME → 静态托管商
浏览器解析这个名字时不会因为它在 ip6.arpa 下就拒绝——递归解析器对 ip6.arpa 的正向查询一视同仁。所以 HTTP 层面它能正常打开。
原文用 Surge 托管,命令是:
bunx surge . subdomain.domain.ip6.arpa
选 Surge 是因为它默认用纯 HTTP 服务自定义域名,不强制跳 HTTPS,正好绕开下面这道坎。
卡点:HTTPS
只是做 DNS 实验的话,到这里就跑通了。当成真网站用是另一回事。
现代网站离不开公网 HTTPS,而公网 HTTPS 依赖浏览器和操作系统预置信任的 CA。CA 签发证书要遵守 CA/Browser Forum 的 Baseline Requirements。
2025 年 11 月,CA/B Forum 通过了 Ballot SC-086v3(Sunset the Inclusion of IP Reverse Address Domain Names),由 DigiCert 提出,Apple、Opera 附议。它规定:自 2026 年 3 月 15 日起,公开信任的 TLS 证书中不得再包含以 IP 反向区域后缀(in-addr.arpa 或 ip6.arpa)结尾的域名。理由很直接:.arpa 是基础设施命名空间,不是用来放主机名的。
在这之前,一部分 CA(尤其是对 .arpa 一向谨慎的几家)已经会拒签这类名字,SC-086 只是把它变成硬性规定。
结果就是:
something.ip6.arpa ✗ 拿不到公网信任的证书
example.dev ✓ 正常签发
自签证书或内部 CA 在自己可控的环境里能用,但普通访客的浏览器不认,会红屏警告。
另外还有几个连带的坑:
- DNSSEC 到这里是断的。deSEC 会给区域签名,但信任链要接上,得让父区(HE)给你的委派发一条
DS记录,而 HE 的 rDNS 界面根本没有填DS的地方,于是这块区域成了签了名却没人验证的孤岛。 - HSTS preload 列表、公共后缀列表这类生态设施不会收录这种名字。
- 控制权不稳。这段命名空间归你管,前提是 HE 隧道还活着、前缀还在你名下,隧道一停或者前缀被收回它就没了,严格说它从来不属于你。
- 第一次访问时如果记录还没配好,解析器会缓存一条
NXDOMAIN,之后得等 TTL 过期才能好。
什么时候值得做
要真拿它建博客、部署 SaaS、做项目主页,没必要。普通的 .dev、.page 域名更省事,很多平台还连域名带 HTTPS 一起免费给,犯不着为一串奇怪的地址折腾。
但如果是想搞清楚 IPv6 前缀、正向和反向 DNS 的区别、DNS 委派怎么把一个子区切出去、一块命名空间怎么被逐级管理,那这一圈走下来挺值。平时分开学的几个概念,在这里被串成一条链,而且每一步都能自己动手验证。
一点体会
走完这一圈,我印象最深的是:IP 地址空间本身也是一块 DNS 命名空间。平时用的是 域名 → IP,反向 DNS 是 IP → 域名,IPv6 的地址空间又大到让这棵反向树变得非常深。加上委派机制之后会发现,很多看起来只是一串字符的域名,背后是一整套逐级下放的管理关系。ip6.arpa 就是这套关系里一个不常被人翻到的角落。
参考
- How to get a free .arpa domain — Ethan Hawksley
- IANA — .arpa: Address and Routing Parameter Area
- RFC 3172 — Management Guidelines & Operational Requirements for the .arpa Domain
- RFC 3596 — DNS Extensions to Support IP Version 6
- RFC 3152 — Delegation of IP6.ARPA / RFC 4159 — Deprecation of “ip6.int”
- CA/Browser Forum — Ballot SC-086v3: Sunset the Inclusion of IP Reverse Address Domain Names
- Hurricane Electric — Reverse DNS FAQ / deSEC
关于
关注我获取更多资讯