Я в конечном счете использовал PowerDNS, но с бэкендом SQL. Я изменил SQL-операторы и добавил нейтрализацию к домену 'по умолчанию', если требуемый домен не был найден.
Работы отлично. Задержка почти никогда не выше 5 (некоторые дополнительные тонкие настройки конфигурации требуются).
Другая опция могла бы состоять в том, чтобы создать зональный файл по умолчанию как следующее:
$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, Вы получите информацию от зоны по умолчанию.
Однако знайте, я только сделанный это в мелком масштабе, и он не был протестирован с 500K зонами, таким образом, я не уверен, теперь Связывают, структурирует его в памяти. Так, например, я не уверен, загрузит ли это только один зональный файл и укажет на все зоны на него, или если это загрузит те же зональные времена файла 500K!
для powerdns установить по умолчанию запись с пустым именем
nano /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;