![CNAME 的 PTR 注册](https://linux22.com/image/781260/CNAME%20%E7%9A%84%20PTR%20%E6%B3%A8%E5%86%8C.png)
在我的 bind9 DNS 服务器中,我的服务器描述如下:
[...]
prd1frm201 IN A 172.21.10.2
dns IN CNAME prd1frm201.kprd1.
ntp IN CNAME prd1frm201.kprd1.
prd1frm202 IN A 172.21.10.3
sentry IN CNAME prd1frm202.kprd1.
[...]
反向定义如下:
[...]
3 IN PTR prd1frm202.kprd1.
4 IN PTR prd1frm203.kprd1.
[...]
因此,当我解析主机名(A 或 CNAME)时,我得到了这个正确的答案:
gmartins@HP-Gilberto:~$ host prd1frm201
prd1frm201.kprd1 has address 172.21.10.2
gmartins@HP-Gilberto:~$ host dns
dns.kprd1 is an alias for prd1frm201.kprd1.
prd1frm201.kprd1 has address 172.21.10.2
gmartins@HP-Gilberto:~$ host ntp
ntp.kprd1 is an alias for prd1frm201.kprd1.
prd1frm201.kprd1 has address 172.21.10.2
确实是正确的!我的问题是关于反向解析的:
gmartins@HP-Gilberto:~$ host 172.21.10.2
2.10.21.172.in-addr.arpa domain name pointer prd1frm201.kprd1.
gmartins@HP-Gilberto:~$ host 172.21.10.3
3.10.21.172.in-addr.arpa domain name pointer prd1frm202.kprd1.
显然,我永远不会得到 CNAME 作为答案。但如果我只是像这样更改反向 DNS 文件:
2 IN PTR prd1frm201.kprd1.
2 IN PTR dns.kprd1.
2 IN PTR ntp.kprd1.
提供以下答案:
gmartins@prd1frm201:~$ host 172.21.10.2
2.10.21.172.in-addr.arpa domain name pointer dns.kprd1.
2.10.21.172.in-addr.arpa domain name pointer ntp.kprd1.
2.10.21.172.in-addr.arpa domain name pointer prd1frm201.kprd1.
虽然看上去没什么问题,RFC 1912指出“此外,PTR 记录必须指向有效的 A 记录,而不是 CNAME 定义的别名“。
我的问题是:配置它的正确方法是什么?我应该只将 PTR 分配给 A 寄存器,还是可以将 PTR 分配给 A 或 CNAME 寄存器?为什么(不)?
答案1
并非所有应用程序都会检查其他 PTR。当您有单个主机的多个记录时,它们可能会以不可预测的顺序返回。大多数应用程序将采用它得到的第一个答案,而完全忽略其余的答案。您的问题将持续存在,并且只有当所有记录都正向和反向匹配时,您的问题才会按预期工作。由于这都是私人空间,因此不应该有任何东西阻止您为每个服务分配 IP。一台机器可以有多个 IP,然后您的正向和反向记录都匹配。快乐的一天!