LINUX.ORG.RU

DNS

 


0

1

Собираюсь поднимать DNS-сервер, читаю литературу. Никак не могу вот понять классификацию DNS-серверов: они бывают первичные (master), вторичные(slave) и кэширующие.
Первичные DNS-сервера - это те, которые содержат описания хостов в файлах зон.
Вторичные - это те, у которых файлы зон изначально пусты, но потом они заполняются, получаясь с первичного, для этого вторичный сервер связывается с первичным, предъявляя ключ.
У кэширующего сервера файлы зон тоже изначально пусты, работает он так, что запросы от клиента он передают другому DNS-серверу, а ответы от него сначала кэширует в файлах зон, а потом передаёт клиенту. DNS-серверы провайдеров Интернета являются как раз кэширующими.
Я всё правильно понимаю? Если что-то переврал, то, пожалуйста, поправьте.
bind9 может одновременно работать и как первичный, и как вторичный, и как кэшируюший сервер. Определяется это тем, что в конфиге несколько инструкций zone, в каждой их которой директива type определяет класс сервера. Вот допустим в моей локалке я назначаю хостам доменные имена первого уровня: server, wifi, post-1. Это работа первичного сервера, а перый уровень определён в зоне ".", то есть:

zone "." {
   type master;
   file "db.local";   
}
Тут всё понятно, если клиент запросит IP-адрес хоста server, сервер найдёт соответствующую запись A в db.local и передаст её клиенту. А если клиент запросит IP-адрес хоста yandex.ru? Для ru в db.local записи нет, значит сервер должен перенаправить запрос на другой DNS-сервер, провайдерский и, стало быть сработать как кэширующий сервер. Что для этого нужно? Определить зону "." дважды? А как между ними будут распределяться приорететы?

★★★★★

Если в зоне нет записи, а сервер отвечает за эту зону, то сервер так и отвечает, что записи нет и никуда дальше не пойдёт. Одно дело, делать зону «local.» , а другое дело создовать свою корневую зону "."

mky ★★★★★ ()

Никогда не перекрывай корневую зону (которая ".") - за исключением случаев, когда ты точно знаешь что делаешь и тебе не нужен интернет. Но у тебя не тот случай.

no-dashi ★★★★★ ()
Ответ на: комментарий от mky

То есть хостам нужно давать доменные имена второго уровня: server.local, post-1.local, иначе не заработает?

sunny1983 ★★★★★ ()
Ответ на: комментарий от sunny1983

Короткие имена делаются непосредственно на запрашивающем хосте - через /etc/hosts (прямое определение), /etc/resolv.conf (search, domain) или ту свистоперделку, что resolv.conf подменяет.

sergv ()

Я всё правильно понимаю?

Боюсь что вы понимаете не все и не совсем правильно ибо написаное вами - каша.
Если действительно хотите разобраться как работает DNS, то есть замечательная книга. Там для понимания достаточно прочитать две первые главы.

anonymous ()
Ответ на: комментарий от sunny1983

да, и подумай насчет .local. тебя может залюбить какой-нить zeroconf daemon, например, avahi ;)
придумай себе другой tld.

aol ★★★★★ ()

Книга у меня есть. Эви Нэмет «Руководство администратора Linux». Там довольно большая глава по DNS и BIND. Только буду особо признателен, если меня не в литературу отсылать начнут, а объяснят всё на пальцах. Я же не поленился тут изложить своё неправильное понимание вопроса. Вот и вы не поленитесь изложить правильное.

sunny1983 ★★★★★ ()
Ответ на: комментарий от sunny1983

То есть хостам нужно давать доменные имена второго уровня: server.local, post-1.local, иначе не заработает?

В конфиг dhcp впиши

option domain-name "local.net";

После этого, при получении адреса клиент добавит в /etc/resolv.conf строку search local.net. В результате к адресам, если они не заканчиваются на точку, будет добавляться доменное имя и ping comp003 превратится в ping comp003.local.net.

sin_a ★★★★★ ()
Ответ на: комментарий от sunny1983

Да, второго уровня или ещё ниже. Всё одно, как уже написали, резолвинг имён легко конфигурится так, что при запросе дописывается нужный домен и в командах можно писать короткое имя, которое автоматически преобразуется в полное.

Или каждое имя из корневой зоны делать через отдельную зону BIND! Совсем запутался, помогите настроить! (комментарий) . Понятно, что имя не должно перекрываться с существующими (.com, .net и т.д.).

mky ★★★★★ ()
Ответ на: комментарий от sunny1983

немет - минимально достаточно. но желателньо не лозхматое издание и читать оченбь внимательно

mumpster ★★★★★ ()

я бы предостерёг от использвоания local.net - лучше уж тогда просто local.

mumpster ★★★★★ ()

если клиент запросит IP-адрес хоста yandex.ru?

то если ты прописал разрешение для этого IP (клиента) делать рекурсивные запросы и вообще запросы - то он пойдёт, всё выяснит и вернёт Ip для yndex.ru. но лушче сделдать так чтобы веьс интернет не мог польщоваться твоим NDS для выясннеия адресов yandex.ru, vsya.puplin.com и т.д. т.е. чтобы публично отдавались только твои домены, пример:

acl «trusted» { 127.0.0.1 }; options { allow-recursion { trusted; }; allow-transfer { }; };

zone «dul.ru» { type slave; file «/XXX/bind/slaves/dul.ru»; masters { X.Y.Z.31; }; allow-query { 127.0.0.1; }; allow-transfer { 127.0.0.1; }; };

mumpster ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.