Я пытаюсь настроить BIND так, чтобы он перехватывал все запросы, сделанные к нему, и указывал их на определенный набор серверов NS и конкретную запись A.
У меня около 500 доменов, и я добавляю новые со скоростью 10-15 в день, поэтому я не хочу явно добавлять зону для каждого домена.
Моя текущая настройка: в моем named.conf у меня есть представление (с именем external) со следующей зоной:
zone "." {
type master;
file "ext.zone";
};
Это соответствует всем запросам.
ext.zone это:
TTL 3600
@ В SOA. root.nsdomain.com. (
1; последовательный
3600; обновление
300; Retry
3600; истекать
300); Отрицательный кэш TTL
IN NS ns1.example.com
IN NS ns2.example.com
ns1 IN A 192.0.2.4
ns2 IN A 192.0.2.5
*. В 192.0.2.6
Итак, цель: для всех NS-запросов return ns1.example.comи ns2.example.com
для всех A-запросов, кроме тех, где она есть ns1.example.comили ns2.example.com, return 192.0.2.6. Для ns1.example.comвозвращения 192.0.2.4, для ns2.example.comвозвращения 192.0.2.5.
Это почти работает, единственная проблема в том, что когда я копаю, я получаю:
копать @localhost somedomain.example ; > DiG 9.3.6-P1-RedHat-9.3.6-4.P1.el5_5.3> @localhost somedomain.example ; (Найден 1 сервер) ;; глобальные параметры: printcmd ;; Получил ответ: ;; код операции: QUERY, статус: NOERROR, id: 37733 ;; флаги: qr aa rd; ЗАПРОС: 1, ОТВЕТ: 1, ПОЛНОМОЧИЯ: 2, ДОПОЛНИТЕЛЬНО: 2 ;; РАЗДЕЛ ВОПРОСА: ; Somedomain.example. В ;; ОТВЕТ РАЗДЕЛ: somedomain.example. 3600 В 192.0.2.6 // как и ожидалось ;; РАЗДЕЛ ВЛАСТИ: , 3600 IN NS ns1.example.com. // ожидается, я не знаю, если "." в начале это плохо, хотя. , 3600 IN NS ns2.example.com. // см. выше. ;; ДОПОЛНИТЕЛЬНЫЙ РАЗДЕЛ: ns1.example.com. 3600 IN A 192.0.2.6 // не ожидается, это должно быть 192.0.2.4 ns2.example.com. 3600 IN A 192.0.2.6 // не ожидается, это должно быть 192.0.2.5
Как я могу это исправить? Я делаю что-то ужасное? Есть лучший способ это сделать?