PowerDNS和CNAME到外部域

问题描述:

我为我的客户使用PowerDNS(2.9.22)。因为它可以将所有数据存储到MySQL数据库中,并且客户可以轻松地编辑它们的区域。PowerDNS和CNAME到外部域

现在我有CNAME记录一个问题:

以下是记录到MySQL数据库:

+-----------------------+-------+-----------------------+ 
| localhost.example.com | A | 127.0.0.1    | 
+-----------------------+-------+-----------------------+ 
| a.example.com   | CNAME | localhost.example.com | 
+-----------------------+-------+-----------------------+ 
| www.example.com  | CNAME | andreyzentavr.com  | 
+-----------------------+-------+-----------------------+ 

PowerDNS配置是在这里:

allow-recursion=127.0.0.1, 173.193.**.162, 173.193.**.163 
allow-recursion-override=on 
cache-ttl=20 
config-dir=/etc/powerdns 
daemon=yes 
default-soa-name=ns3.bserver.com 
disable-axfr=yes 
guardian=no 
launch=gmysql 
gmysql-host=127.0.0.1 
gmysql-port=3306 
gmysql-user=powerdns 
gmysql-dbname=powerdns 
gmysql-password=123123 
lazy-recursion=yes 
local-address=173.193.**.162, 173.193.**.163 
local-port=53 
log-dns-details=yes 
log-failed-updates=yes 
logfile=/var/log/pdns.log 
loglevel=6 
master=yes 
max-queue-length=5000 
max-tcp-connections=10 
module-dir=/usr/lib/powerdns 
query-logging=yes 
recursor=127.0.0.1:53 
setgid=pdns 
setuid=pdns 
skip-cname=no 
slave=yes 
slave-cycle-interval=600 
soa-minimum-ttl=3600 
soa-refresh-default=10800 
soa-retry-default=3600 
soa-serial-offset=0 
socket-dir=/var/run 
use-logfile=yes 
wildcards=yes 
version-string=powerdns 

当我做NSLOOKUP查询,我得到了这个:

server:~# nslookup 
> set q=any 
> server ns3.***.com 
Default server: ns3.***.com 
Address: 173.193.**.163#53 
> a.example.com 
Server:   ns3.***.com 
Address:  173.193.***.163#53 

a.example.com  canonical name =localhost.example.com. 
Name: localhost.example.com 
Address: 127.0.0.1 
> 
> 
> www.example.com 
Server:   ns3.***.com 
Address:  
173.193.***.163#53 

** server can't find www.example.com: NXDOMAIN 

正如你所看到的,如果CNAME指向INTERNAL记录 - 一切都解决了。但是,如果它指向外部域 - 我有一个错误。

andreyzentavr.com是existant域名并指向194.126.204.41

它是错误的PowerDNS?或者我错误地配置了它?

+0

我认为你的'default-soa-name'包含你试图从你的帖子中删除的域名.. – sarnold 2011-01-30 10:53:51

通常,对于DNS,如果要将CNAME指向外部记录,则必须在记录末尾添加一个句点(sub.domain.com.)。当你离开最后一个点时,DNS将其解释为相对记录(例如,sub.domain.com将被解释为sub.domain.com.domain.com)。

因为您在数据库中设置了​​的'A'记录,所以PowerDNS可以看到并知道那是您指向的域名,即使您没有将其他CNAME绝对设置(localhost.example.com. )或相对(主机名中只有localhost)。

+5

PowerDNS实际上并不需要记录结束的时间段。 – Habbie 2011-10-14 04:53:15

解决方法是将recursor放在权威服务器前,并配置recursor使用forward-zones-recurse指令将特定域转发到权威服务器。需要recursor的版本3.2。