Добрый деньК примеру есть такая запись:
zone "corp.ru" {
type slave;
file "corp.ru";
masters { 8.8.8.8; };
};То есть, на нашем DNS сервере, при работе сервера, будет создан файл corp.ru, с точным содержимым этой зоны с DNS сервера 8.8.8.8, но, необходимо что бы записи в этих зонах были различными.
К примеру, у меня в локальной сети 192.168.0.0/24 находится почтовик, который так же виден через проброс портов на роутере из интернета.
Записи на него хранятся на внешнем DNS сервере, к примеру на 8.8.8.8, и ссылаются как:
mail50.corp.ru A 123.123.123.5
В локальной сети он виден под ip равным 192.168.0.5
И соотвественно он прописан на DNS сервере в локальной сети под этим же ip, но в этой зоне есть к примеру еще 49 почтовиков, mail1.corp.ru .. mail49.corp.ru, которые находятся в инете, и эти записи достаточно динамичны, что бы исключить ручное прописывание их ip.Есть ли директива или возможность заместить в слейв зоне определенную запись, подобие как для зоны corp.ru ресолвим как записанно в файле primary.corp.ru, а если нужных записей нет, то берем их с файла slave.corp.ru, который загружен с сервера 8.8.8.8
Не нужно устраивать себе геморрой. Всё уже придумано до нас. В операционной системе вашего DNS сервера в файле hosts пропишите
192.168.0.5 mail50.corp.ru
И всё!
При резолвинге резолвер операционной системы сначала будет смотреть в этот файл hosts, потом в нэймсервер.
> Не нужно устраивать себе геморрой. Всё уже придумано до нас. В операционной
> системе вашего DNS сервера в файле hosts пропишите
> 192.168.0.5 mail50.corp.ru
> И всё!
> При резолвинге резолвер операционной системы сначала будет смотреть в этот файл hosts,
> потом в нэймсервер.Не надо вводить человека в заблуждение.
Ресолвить ч/з hosts будет только сама ОС на машине, а не клиенты, которые делают к ней ДНС-запросы. При ответе ДНС-сервера клиенту hosts не рулит никак вообще - он ТОЛЬКО для локальной системы.
> Не нужно устраивать себе геморрой. Всё уже придумано до нас. В операционной
> системе вашего DNS сервера в файле hosts пропишите
> 192.168.0.5 mail50.corp.ru
> И всё!
> При резолвинге резолвер операционной системы сначала будет смотреть в этот файл hosts,
> потом в нэймсервер.:) Давно все прописанно, иначе бы и не заработало, там крутится Zimbra.
Это все затеяно для клиентов локалки, им нужны DNS записи.
Локальный DNS крутится на этой же машине, на DNS хостера записи для белого ip.
>[оверквотинг удален]
> mail50.corp.ru A 123.123.123.5
> В локальной сети он виден под ip равным 192.168.0.5
> И соотвественно он прописан на DNS сервере в локальной сети под этим
> же ip, но в этой зоне есть к примеру еще 49
> почтовиков, mail1.corp.ru .. mail49.corp.ru, которые находятся в инете, и эти записи
> достаточно динамичны, что бы исключить ручное прописывание их ip.
> Есть ли директива или возможность заместить в слейв зоне определенную запись, подобие
> как для зоны corp.ru ресолвим как записанно в файле primary.corp.ru, а
> если нужных записей нет, то берем их с файла slave.corp.ru, который
> загружен с сервера 8.8.8.8Немного сумбурно написано...
Насколько я понял, задача в том, что один из серверов прописанных в slave-зоне, доступен для клиентов по локальной сети (ч/з серый IP) и Вы хотите обеспечить доступ к нему именно по локалке. Так?
> Насколько я понял, задача в том, что один из серверов прописанных в
> slave-зоне, доступен для клиентов по локальной сети (ч/з серый IP) и
> Вы хотите обеспечить доступ к нему именно по локалке. Так?Именно так, он установлен в локальной сети 24 сида, из инета проброс портов через роутер ( белый ip ). На нем же DNS сервер, на DNS сервере хостера прописан для него белый ip.
>> Насколько я понял, задача в том, что один из серверов прописанных в
>> slave-зоне, доступен для клиентов по локальной сети (ч/з серый IP) и
>> Вы хотите обеспечить доступ к нему именно по локалке. Так?
> Именно так, он установлен в локальной сети 24 сида, из инета проброс
> портов через роутер ( белый ip ). На нем же DNS
> сервер, на DNS сервере хостера прописан для него белый ip.http://www.zytrax.com/books/dns/ch6/index.html#stealth
view?
>>> Насколько я понял, задача в том, что один из серверов прописанных в
>>> slave-зоне, доступен для клиентов по локальной сети (ч/з серый IP) и
>>> Вы хотите обеспечить доступ к нему именно по локалке. Так?
>> Именно так, он установлен в локальной сети 24 сида, из инета проброс
>> портов через роутер ( белый ip ). На нем же DNS
>> сервер, на DNS сервере хостера прописан для него белый ip.
> http://www.zytrax.com/books/dns/ch6/index.html#stealth
> view?view используется для отдачи разных записей для разных сетей клиентов, а здесь все клиенты из одного сегмента. Не это.
Мне нужно подменить всего одну запись, максимум три, остальные записи для этой зоны должны браться с внешнего DNS сервера.
Можно конечно написать в лоб скрипт, который будет заглатывать зону с внешнего DNS сервера, подменять нужные записи, подсовывать этот файл к локальному DNS серверу, но это все как вырывать гланды через задний проход, наверняка должно быть решение средствами BIND, не такая уж эта сложная задача, и я не думаю что я первый кто подошел к этой задаче.
На текущий момент решил задачу так ( я думаю пригодится многим ):
Хотелось бы конечно без недостатков этой схемы решить проблему, но пока я никаких решений не нашел. Недостаток в том, что при появлении новогу узла домена, к примеру ftp.microsoft.com, потребуется добавить вручную запись.$TTL 3600
$ORIGIN microsoft.com.microsoft.com. IN SOA ns1.microsoft.com. ns2.microsoft.com. (
2013080217 ; serial
14400 ; refresh
3600 ; retry
2592000 ; expire
600 ; minimum
); Здесь я описываю замещенные и статичные записи:
microsoft.com. IN NS ns1.microsoft.com.
ns1 A 192.168.1.2
mail50 A 192.168.1.2
mail50.microsoft.com IN A 192.168.1.2
microsoft.com. IN TXT "v=spf1 +a +mx a:mail50.microsoft.com a:mail.microsoft.com a:mail50.microsoft.com ip4:111.222.333.444 ip4:1.2.3.4 redirect=microsoftpartner.com"
@ IN A 192.168.1.2; Все интересное здесь, эти записи переодически изменяют значения:
mail.microsoft.com. IN NS ns2.microsoft.com.
www.microsoft.com. IN NS ns2.microsoft.com.
microsoft.com. IN NS ns2.microsoft.com.; ns2 - внешний DNS, в моем случае это кеширующий DNS на роутере, можно любой другой указать
ns2 IN A 192.168.1.1
>[оверквотинг удален]
> ns2.microsoft.com.
> microsoft.com.
> IN NS
> ns2.microsoft.com.
> ; ns2 - внешний DNS, в моем случае это кеширующий DNS на
> роутере, можно любой другой указать
> ns2
>
> IN A
> 192.168.1.1Долго не мог понять что Вам нужно из описания, но судя по верхнему, Вы сделали совершенно
иную вещь - подмена данных чужой зоны на свои.
Изначально Вы хотели "перевернуть" архитектурную концепцию DNS:
slave --тянет-- с primary, затем подмена записи, notify просто убьет Вашу
конструкцию.
И если я правильно понял и расписал верхнее, Вы некорректно описали задачу и
сделали некорректную постановку задачи, это если я правильно понял.
Честно говоря, аналогов этой задаче я пока не нашел в инете, поэтому как ее сформулировать я не знаю.
Задача в подмене записей внешнего DNS сервера на локальном DNS сервере, для выборочных записей зоны.
Все остальные записи зоны должны быть как на внешнем сервере или хотя бы браться с внешнего сервера ( этот вариант хуже, лишние задержки и лишний трафик ).
В моем случае возможно стянуть зону с внешнего сервера, так как это наш хостер.
Но как эту зону обработать средствами DNS сервера - это я не придумал, и не нашел решения в инете.
>[оверквотинг удален]
> как ее сформулировать я не знаю.
> Задача в подмене записей внешнего DNS сервера на локальном DNS сервере, для
> выборочных записей зоны.
> Все остальные записи зоны должны быть как на внешнем сервере или хотя
> бы браться с внешнего сервера ( этот вариант хуже, лишние задержки
> и лишний трафик ).
> В моем случае возможно стянуть зону с внешнего сервера, так как это
> наш хостер.
> Но как эту зону обработать средствами DNS сервера - это я не
> придумал, и не нашел решения в инете.А никак, подмена зоны, imho
>> Насколько я понял, задача в том, что один из серверов прописанных в
>> slave-зоне, доступен для клиентов по локальной сети (ч/з серый IP) и
>> Вы хотите обеспечить доступ к нему именно по локалке. Так?
> Именно так, он установлен в локальной сети 24 сида, из инета проброс
> портов через роутер ( белый ip ). На нем же DNS
> сервер, на DNS сервере хостера прописан для него белый ip.ИМХО просто пропишите на маршрутизаторе роут до белого IP нужного сервера ч/з локалку. Вероятно придется еще пакетный фильтр на самом серваке подкрутить.
ДНС тут вообще ни при чем - перекрыть определение хостов в слейв зоне можно только кривыми костылями (странно если было бы иначе).