Альтернативный DNS-сервер не может разрешить

Альтернативный DNS-сервер не может разрешить

Я настроил DNS-сервер в Linux как пересылающий.
Он пересылает DNS-запросы только на главный DNS-сервер организации.

В клиентах Windows (в филиалах организации) основной DNS настроен на их собственный DNS-сервер,
а альтернативный — на мой (DNS пересылки).

Если мой DNS-сервер настроен как альтернативный, он не может разрешить.
Но когда мой DNS-сервер настроен как основной, разрешение работает.

Как мне заставить мой DNS-сервер работать, если он настроен как альтернативный DNS?

решение1

Базовый DNS-резолвер (например, в клиенте Windows) предполагает, чтокаждый настроенный для этого DNS-сервер знает или может узнать все, что нужно знать, и если один сервер скажет, что чего-то не существует, то нет смысла спрашивать у другого сервера второе мнение.

DNS-сервер может иметь больше гибкости в том, откуда он получает информацию. Многие DNS-серверы можно настроить на выборочную пересылку запросов: «если запрос касается домена X.Y.example, пересылать запрос на сервер A, если касается любого другого Y.example, пересылать на сервер B, в противном случае попытаться решить его самостоятельно, обратившись к DNS-серверам Интернета».

Но это не обычный способ настройки разрешения DNS.


Если информация на первичном DNS-сервере относится к домену Y.example, а на вашем DNS-сервере есть информация о поддомене X.Y.example, то на первичном DNS-сервере должна быть так называемаяклейкие пластинкив его информации о Y.exampleдомене. Что-то вроде:

X.Y.example.            IN NS <your.DNS.server.name.>

и если ваш DNS-сервер находится внутри Y.exampleдомена (т.е. является частью либо домена X.Y.example, либо домена Y.exampleили любого из его других поддоменов), также:

<your.DNS.server.name.> IN A <your DNS server IP address>

Запись NS сообщит основному DNS-серверу о необходимости связаться с вашим DNS-сервером для получения любой информации о X.Y.exampleдомене. Это называетсяDNS-делегирование. Запись A нужна только для предоставления адреса для подключения: aклейкая пластинка.


Если информация на вашем сервере имен относится к несвязанному домену, например Z.other.example, , то есть три варианта:

  • Основной сервер имен может иметь особую связь с вашим DNS-сервером, чтобы он мог загружать полную копию Z.other.exampleсодержимого домена и автоматически обновлять ее, периодически сверяясь с вашим DNS-сервером. Обычно это называется связью master/slave: ваш сервер будет главным авторитетом на Z.other.example, но основной DNS-сервер будет иметь полную информацию о содержимом этого домена и сможет дать авторитетный ответ на основе загруженных данных.

С BIND это означает, что на вашем сервере будет что-то вроде:

options {
    allow-transfer { <IP address of primary DNS server>; };
    # The next line is not absolutely necessary but speeds up propagation of updates:
    also-notify { <IP address of primary DNS server>; }; 
    <... any other options here...>
}; 

а основной сервер будет иметь:

zone "Z.other.example" { 
    type slave; 
    masters { <IP address of your DNS server>; };
};

И да, это означает, что организацияначальныйDNS-сервер будет подчиненным серверомZ.other.exampleтолько для домена. Для других доменов/зон это не будет иметь никакого эффекта.

Обычно этот тип отношений означает, что первичный DNS-сервер также может быть указан в записях NS для Z.other.exampleдомена, нотебе не обязательно этого делатьесли домен предназначен только для внутреннего использования пользователями основного DNS-сервера.

  • Или основной DNS-сервер может быть настроен на условную пересылку запросов: «если запрос касается Z.other.example, пересылайте его на свой DNS-сервер, а не делайте ничего другого». Иногда это делается, например, с внутренними DNS-доменами организации, существование которых не должно быть раскрыто ни в одной публичной записи NS.

Для этого основной сервер должен иметь:

zone "Z.other.example" { 
    type forward;
    forwarders { <IP of your DNS server>; };
    forward only;
}; 
  • Или, если специальной конфигурации нет, то для того, чтобы DNS-серверы нашли ваш Z.other.exampleдомен, должна существовать цепочка записей NS:
    • корневые DNS-серверы должны иметь записи NS (и соответствующие записи A), указывающие на DNS-серверы exampleдомена верхнего уровня
    • на серверах домена exampleдолжны быть записи NS, указывающие на DNS-серверы other.exampleдомена второго уровня
    • и DNS-серверы домена other.exampleдолжны иметь записи NS, указывающие на ваш DNS-сервер как на ответственный за Z.other.example.

Благодаря этому основной DNS-сервер сможет найти ваш домен, как и любой другой домен в Интернете.


Если вы пытаетесь заставить свой DNS-сервер предоставить всего несколько дополнительных записей для домена Y.example,это не сработает.

Если DNS-сервер является полномочным для определенного домена (исключая делегированные поддомены, если таковые имеются), то он всегда должен иметь полное знание содержимого этого домена; для DNS-сервера, занимающего полномочную позицию, не существует такого понятия, как «может быть». Если первичный DNS-сервер является полномочным для Y.exampleи при запросе о X.Y.exampleнем не имеет записи для этого и соответствующего делегирования поддомена, его ответ «no such host/domain» будет выражен в человеческих терминах:

«Я знаю все, что нужно знать о Y.example, и такого понятия, как XYexample, определенно не существует».


Технически возможно заставить основной сервер отклонять запросы для вашего домена, чтобы клиент вместо этого обращался к альтернативному DNS-серверу, ноЯ бы настоятельно не рекомендовал этого делать..

Такие настройки могут сначала казаться работающими, но, как правило, дают сбой неожиданным образом, особенно когда один или другой из серверов имен становится временно недоступным. Многие пробовали такие настройки и терпели неудачу. Опыт обучения, как правило, включает в себя болезненный сеанс устранения неполадок во времянетпо вашему выбору и/или фейспалмы от более опытных администраторов DNS, которые будут уведомлены о помощи в устранении проблемы.

Связанный контент