Назад | Перейти на главную страницу

Авторитетный DNS с ответом по умолчанию

Мне нужно настроить авторитетный DNS для зон 500K. Около 90% зон идентичны (конечно, кроме доменного имени).

Я нашел только PowerDNS, подходящий для этой задачи - использование Pipe Backend со скриптом Perl, который отвечает на статический ответ для любого домена в качестве вторичного Backend.

Есть ли другие альтернативы?

Другой вариант - создать файл зоны по умолчанию, как показано ниже:

$TTL 3600
@   IN  SOA ns1.company.com hostmaster.company.com (
            2011010101;
            3600;
            1800;
            604800;
            3600;
            )
@   IN  NS  ns1.company.com
@   IN  NS  ns2.company.com

@   IN  MX  10 mail.company.com

@   IN  A   192.0.2.1
www IN  A   192.0.2.2

Предполагая, что это было вызвано /etc/bind/default.zone, вы можете добавить такие записи зоны, как:

zone "domain1.com" {
    type master;
    file "/etc/bind/default.zone";
};
zone "domain2.com" {
    type master;
    file "/etc/bind/default.zone";
};

В этом случае, если вы запросите domain1.com или domain2.com, вы получите информацию из зоны по умолчанию.

Однако имейте в виду, что я делал это только в небольшом масштабе, и он не тестировался с зонами на 500 КБ, поэтому я не уверен, что теперь Bind будет структурировать его в памяти. Так, например, я не уверен, загрузит ли он только один файл зоны и укажет на него все зоны, или он загрузит один и тот же файл зоны 500 КБ раз!

В конце концов я использовал PowerDNS, но с серверной частью SQL. Я изменил операторы SQL и добавил откат к домену «по умолчанию», если запрошенный домен не был найден.

Прекрасно работает. Задержка почти никогда не превышает 5 (требуются некоторые дополнительные настройки).

для powerdns установить по умолчанию запись с пустым именем

нано /etc/pdns/pdns.conf


gmysql-any-query=select COALESCE(b.content,c.content,d.content,e.content,f.content) content, \
COALESCE(b.ttl,c.ttl,d.ttl,e.ttl,f.ttl) ttl, \
COALESCE(b.prio,c.prio,d.prio,e.prio,f.prio) prio, \
COALESCE(b.type,c.type,d.type,e.type,f.type) type, \
COALESCE(b.domain_id,c.domain_id,d.domain_id,e.domain_id,f.domain_id) domain_id, \
a.mydomain name \
from \
(select '%s' mydomain) a \
left outer join records b on b.name = SUBSTRING_INDEX(a.mydomain, '.', -4) and b.type = 'A' \
left outer join records c on c.name = SUBSTRING_INDEX(a.mydomain, '.', -3) and c.type = 'A' \
left outer join records d on d.name = SUBSTRING_INDEX(a.mydomain, '.', -2) and d.type = 'A' \
left outer join records e on e.name = SUBSTRING_INDEX(a.mydomain, '.', -1) and e.type = 'A' \
left outer join records f on f.name = SUBSTRING_INDEX(a.mydomain, '.', 0) and f.type = 'A' \
limit 1;