редактировать: Я упростил целевую цель, как предложил Эндрю Б.
Цель состоит в том, чтобы настроить авторитетный сервер имен, чтобы он давал реальный ответ только на рекурсивные запросы, что означает нарушение итеративной процедуры разрешения DNS. Не имеет смысла для реального использования, но то, что я пытаюсь здесь сделать, предназначено для исследовательских целей, в частности, для выявления некорректно работающих открытых резолверов.
Я хочу отвечать без данных на нерекурсивные запросы DNS, даже если мы знаем иное (например, если мы являемся авторитетным сервером имен для запрошенного домена). то есть:
Case 1: REQUEST(RD=0) -> RESPONSE(rcode=NOERROR, All sections Empty, RA=1)
Case 2: REQUEST(RD=1) -> RESPONSE(Real Answer, RA=1)
Мои доступные ресурсы - это один полномочный сервер имен для определенного домена и один преобразователь DNS на разных машинах. Поведение должно быть одинаковым для любого поддомена моего контролируемого домена.
Моя текущая настройка:
Оба позволяют рекурсивные вызовы (в исследовательских целях). В настоящее время запросы «A» для субдоменов research.lab.mydomain.com направляются на сервер имен M1 и возвращают результаты NXDOMAIN (субдомены не зарегистрированы). M2 в настоящее время не используется.
То, что я думал, должно быть сделано
Сделайте так, чтобы все запросы субдоменов research.lab.mydomain.com отправлялись на распознаватель, а не на сервер имен. Сопоставитель по очереди запрашивает сервер имен, если установлена желаемая рекурсия, или возвращает кешированные ответы без ошибок в противном случае. Все запросы из внешнего мира должны проходить через распознаватель.
Что я пробовал
Я думал об изменении M1 в качестве преобразователя, а M2 в качестве сервера имен, так что research.lab.mydomain.com все равно будет зарегистрирован на адрес M1. Поэтому я переместил конфигурацию зоны с M1 на M2, а также установил пересылку с M1 на M2 в named.conf.options.
named.conf.local в M1 теперь пуст, а в M2 теперь:
zone "research.lab.mydomain.com" {
type master;
file "/var/lib/bind/research.lab.mydomain.com.hosts";
};
Содержимое /var/lib/bind/research.lab.mydomain.com.hosts является измененной версией того, что было в M1 (вместо m1 на m2):
$ttl 38400
research.lab.mydomain.com. IN SOA m2.lab.mydomain.com. roee88.gmail.com. (
1410888930
10800
3600
604800
38400 )
research.lab.mydomain.com. IN NS m2.lab.sit.cased.de.
research.lab.mydomain.com. IN NS ns1.research.lab.mydomain.com.
ns1.research.lab.mydomain.com. IN A {IP ADDRESS OF M2}
К сожалению, это не сработало. запросы, полученные на m2, привели к ответам SERVFAIL.
Вы пытались сказать M1, что M2 отвечает за поддомен по IP-адресу, а не по имени, например, с
zone "research.lab.mydomain.com." {
type forward;
forward first;
forwarders {
a.b.c.d ;
} ;
} ;
в M1 named.conf
, где a.b.c.d
это IP-адрес M2?