反向DNS与PTR记录:邮件服务器为何需要它
PTR记录如何把IP地址映射为主机名,谁可以修改,邮件服务器为何需要正向确认的反向DNS,以及不匹配意味着什么。
从地址到名称
A和AAAA等正向DNS记录保存在域名的区域中:控制example.com的人决定www.example.com指向哪个地址。反向DNS需要另一棵树,因为地址并不是按域名组织的。IPv4使用的是in-addr.arpa,IPv6使用的是ip6.arpa。
构建反向名称时,要把地址倒过来写。8.8.8.8变成8.8.8.8.in-addr.arpa,203.0.113.10变成10.113.0.203.in-addr.arpa,这样地址中最宽泛的部分就会像域名一样排在最后。对于IPv6,要把完整地址的32个十六进制数字逐位倒序并用点分隔,所以IPv6反向名称很长。
谁控制PTR记录
地址段的反向区域由地区互联网注册机构委派给持有该地址段的组织,再由该组织委派给其指定的一方。对于家庭或移动网络,这一方就是你的运营商;对于云服务器,则是云服务商,通常允许你在控制面板中设置名称,或应你的请求代为设置。
因此,在域名注册商或DNS托管服务商处添加PTR记录不会起作用:它们并不控制你服务器地址的反向区域。请联系为你分配该地址的服务商,并提供你想要的准确主机名。
正向确认的反向DNS
任何控制反向区域的人都可以在其中发布任意名称,包括别人域名下的名称。因此,PTR名称需要反方向验证:查询该名称的A或AAAA记录,确认其中之一就是原始地址。两个方向一致时,就称为正向确认的反向DNS,即FCrDNS。
IPNixa反向DNS查询会完成这两步。它先向Cloudflare和Google查询PTR记录,再查询返回的名称,并报告以下四种状态之一。
| 结果 | 含义 | 通常的下一步 |
|---|---|---|
| 正向匹配 | 存在PTR名称,且能解析回同一地址 | 无需操作;这正是邮件服务器所期望的 |
| 正向不匹配 | 存在PTR名称,但其正向记录不包含该地址 | 请服务商修改PTR,或把该地址添加到该名称的A或AAAA记录中 |
| 未查询到PTR | 反向区域回应该地址没有对应的名称 | 如果该地址用于发送邮件或需要名称,请地址所有者创建PTR |
| 无法确认 | 解析器失败、超时或返回了不一致的答案 | 修改任何设置之前,请稍后重新查询 |
实测查询结果
2026年11月2日,我们通过Cloudflare和Google的DNS over HTTPS解析器查询了以下公共地址。每个名称都能解析回原始地址。
| 地址 | PTR名称 | 正向查询结果包含该地址 |
|---|---|---|
| 8.8.8.8 | dns.google | 是(8.8.8.8和8.8.4.4) |
| 1.1.1.1 | one.one.one.one | 是(1.1.1.1和1.0.0.1) |
| 9.9.9.9 | dns9.quad9.net | 是(9.9.9.9和149.112.112.9) |
| 173.194.118.27 | yukulhq-in-f27.1e100.net | 是 |
示例说明了什么
第四个地址是当时Gmail收信主机gmail-smtp-in.l.google.com返回的地址。它的PTR名称不在gmail.com下,而在1e100.net下,这是Google用于服务器命名的域名。PTR名称不必与服务对外使用的域名一致,但必须能解析回该地址。
两个解析器返回了相同的名称,但剩余缓存时间差别很大。对于8.8.8.8,Cloudflare报告84,907秒,Google报告18,566秒,因为二者缓存该记录的时间不同。因此,服务商修改PTR记录后,旧名称最长可能在该记录的完整TTL内继续出现。
家庭网络通常使用根据地址生成的通用名称。同一天检查的一条曼谷宽带线路返回了ppp-a-b-c-d.revip8.asianet.co.th形式的名称,其中a到d是地址中的各段数字。这类名称能识别运营商,往往也能看出连接类型,但无法识别用户本人。
邮件服务器为什么需要反向DNS
收信服务器把反向DNS作为一项低成本的初步检查,用来拦截来自被入侵家用电脑的垃圾邮件。Google的发件人指南要求发信服务器具有有效的PTR记录,且能解析回发信地址;其他大型邮箱服务商也采用类似的检查。像上文宽带示例那样的通用名称,通常会被视为家庭网络地址而遭到过滤。
- 在你控制的域名下为服务器选择一个主机名,例如mail.example.com。
- 创建一条A记录,将该主机名指向服务器地址;如果服务器通过IPv6发信,还要创建AAAA记录。
- 请拥有该地址的服务商把该地址的PTR记录设置为同一主机名。服务器用于发信的每个地址(IPv4和IPv6)都要这样设置。
- 让邮件服务器在SMTP问候(HELO或EHLO)中使用同一主机名。
- 用IPNixa反向DNS查询检查结果,直到两个解析器都显示正向匹配;请留出旧记录TTL到期所需的时间。
反向DNS无法告诉你的信息
PTR名称是地址所有者选定的标签。它可能过时、通用或缺失,也无法说明某个动态地址当前由谁使用。它可以用来识别网络或服务器的用途,而不能用来识别某个人。192.168.1.10这样的私有地址没有公开的反向记录,因此查询会跳过它们。
常见问题
可以在域名注册商处设置PTR记录吗?
通常不能。PTR记录属于该IP地址的反向区域,由地址段的所有者控制。请联系你的主机服务商或运营商;有些云服务商允许在服务器或IP地址设置中修改。
一个地址可以有多个PTR名称吗?
DNS允许这样做,但很多系统只使用其中一个。对于邮件服务器,每个地址只发布一个PTR名称,并确保它能解析回该地址。
家庭网络需要反向DNS吗?
浏览网页、玩游戏或看视频都不需要。只有当你运行需要他人按名称检查的服务器(例如邮件服务器)时才有意义,而且大多数家庭宽带运营商不允许用户修改。
为什么查询大型网站时显示不匹配?
内容分发网络和负载均衡器通常为自己的基础设施设置PTR名称,而这些名称的正向记录可能变化很快。对于你运营的邮件服务器,不匹配很重要;对于你访问的网站,影响则小得多。