Сегодня мы поговорим о настройке, пожалуй, самого популярного DNS сервера bind9. Следуйте инструкции, и у Вас всё получится, в этом нет ничего сложного. В этом примере Вы увидите как формируются файлы зон и проследите процесс простой настройки, не вдаваясь при этом в подробности. Это лишь небольшое HowTo, призванное помочь Вам понять принцип работы DNS сервера. Если же Вы настраиваете DNS сервер на шлюзе в сегменте Вашей локальной сети, то в конце статьи Вы увидите как сделать Ваш DNS сервер кэширующим, что позволит существенно сократить время повторного запроса к NS серверам, ведь посещённые адреса будут браться из Вашего локального кэша. Ну что ж, приступим.
Если у Вас ещё не установлен bind9, проделаем это:
apt-get install bind9
Отредактируем файл /etc/init.d/sysklogd, он должен выглядеть следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 | # # Top configuration file for syslogd # # # Full documentation of possible arguments are found in the manpage # syslogd(8). # # # For remote UDP logging use SYSLOGD="-r" # SYSLOGD="-u syslog" |
Перезапустим демона sysklogd:
/etc/init.d/sysklogd restart
Приступим к настройке файла зоны для нашего домена. В качестве примера будет выступать домен zerolab.net. Создаём файл конфигурации для наших зон myzones.conf в папке /etc/bind, содержимое файла:
1 2 3 4 | zone "zerolab.net" { type master; file "/etc/bind/zerolab.net"; }; |
Теперь непосредственно создадим наш файл зоны zerolab.net в той же папке /etc/bind:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | $ORIGIN zerolab.net. $TTL 86400 ; 1 day @ IN SOA zerolab.net. root.zerolab.net. ( 2008082859 ; serial 14400 ; refresh (4 h) 3600 ; retry (1 h) 2592000 ; expire (4w2d) 600 ; minimum (10 minute) ) NS ns1.zerolab.net. NS ns2.bla-bla-bla.com. zerolab.net. A 192.168.0.1 *.zerolab.net. CNAME @ zerolab.net. MX 10 mail.zerolab.net. mail.zerolab.net. A 192.168.0.1 ns1 A 192.168.0.1 |
Где 192.168.0.1 — IP Вашего сервера, MX запись нам нужна если Вы поднимаете на своем сервере почтовый сервер. ns1.zerolab.net — наш DNS сервер. Так как для функционирования DNS сервера требуется помимо master ns сервер и slave, прописываем его — ns2.bla-bla-bla.com. Естественно у Вас он должен быть на стороннем сервере, либо если у Вас есть ещё выделенный IP для Вашего сервера, то задача упрощается. Для сервера, находящегося в локальной сети и выдающего имена только в локальную сеть (к примеру у Вас установлен web-сервер, обслуживающий Вашу сеть и настроены виртуальные хосты), достаточно лишь прописать ns1, т.е. адрес Вашего DNS сервера. 2008082859 — смените на текущую дату.
Выставим нужные права на файл зоны zerolab.net:
chown bind:bind /etc/bind/zerolab.net
Отредактируем файл конфигурации bind /etc/bind/named.conf, включив в него конфигурацию для наших зон, добавим в конец файла:
1 2 3 | ... //Вырезано для экономии места... include "/etc/bind/myzones.conf"; |
Ну и обновим конфигурацию bind командой:
rndc reload
Если у Вас DNS сервер установлен на шлюзе в Вашей локальной сети, сделаем его кэширующим. Открываем файл /etc/bind/named.conf.options и раскомментируем следующую строку:
1 2 3 | forwarders { ... }; |
Добавим в неё IP адреса DNS серверов к которым будет обращаться наш сервер, с большой долей вероятности у Вашего провайдера есть свои DNS сервера, укажем их первыми, тем самым экономя трафик:
1 2 3 4 5 6 7 | forwarders { 10.0.0.x; //Первый адрес DNS сервера моего провайдера 10.0.0.x; //Второй адрес DNS сервера моего провайдера x.x.x.x; x.x.x.x; x.x.x.x; }; |
Перезапускаем наш DNS сервер:
/etc/init.d/bind9 restart
Ну а далее не забудьте поменять DNS адрес в /etc/resolv.conf на свой.
Вернёмся к особенностям настройки DNS сервера на выделенном сервере, когда нам необходимо прописать два ns адреса. myzones.conf примет немного другой вид:
1 2 3 4 5 | zone "zerolab.net" { type master; file "/etc/bind/zerolab.net"; allow-trasfer {x.x.x.x;}; //Указываем IP адрес нашего slave ns сервера }; |
При настройке на slave сервере myzones.conf примет такой вид:
1 2 3 4 5 6 | zone "zerolab.net" { type slave; file "/etc/bind/zerolab.net"; masters { 192.168.0.1; }; allow-notify { address_match_list; }; //allow-notify { список-шаблонов-адресов }; (первичный сервер зоны, от кого наш сервер как вторичный уполномоченный сервер будет принимать извещения об изменениях зоны. Замените address_match_list }; |
На этом всё, настройка закончена. ;) Удачи!


{ Комментариев - 26 … читайте их ниже или добавьте свой комментарий }
Спасибо за статью, всегда рад почитать вас!
Подробная инструкция, спасибо за помощь!
Написано, конечно, отлично, однако, было бы интересно почитать о
способе (возможности) настройки named на сервере, являющемся шлюзом для внутренней сети (с-klass типа 192.168.х.х)
во внешнюю, с сеткой внешних реальных адресов, редоставленных
провайдером и веб-сервером на компьютере внутренней сети.
P.S. Возможно, будучи «чайником», изложил невнятно. Попробую иначе: например, имеется машина во внутренней сети с адресом 192.168.1.2 и именем inhost на которой установлен веб-сервер домена второго уровня (my-domen.ru), эта машина имеет выход в инет через шлюз рутера с адресом 192.168.1.1 и внешним реальным адресом, который необходимо сделать ns1-адресом (т.е. завести праймери DNS на рутере) домена my-domen.ru
Вопрос: можноли как-то подружить такую конфигурацию, если — да, прошу растолковать.
Благодарю всех, кто откликнется.
P.P.S. Возможно я туплю, и неправильно формулирую вопрос, но
в таком виде ответа в инете найти не смог :(
Сделал как тут сказано но к сожалению при попитке перезагрузить BIND он не перезагружается пишет fail… Пере проверил пару раз вроде все правильно…
Смотрите логи.
Спасибо за помошь, все заработало… У меня не много туповатый вопрос к вам а если вот я хочу ДНС-сервер использовать в локальной сети (для обслуживанимя веб сервера…) Мне не надо регить доменое имя а использовать любое ?
Разумеется, Вы можете использовать любое доменное имя в своей локальной сети, только проследите чтобы на компьютерах в Вашем сетевом окружении был прописан в качестве DNS-сервера Ваш DNS-сервер. ;)
А на слэйве мы тоже должны создавать файл зоны zerolab.net и прописывать тоже самое содержимое что и на мастере, или на слэйве мы создаем токо в myzones.conf запись, а серв сам скачивает с мастера уже файлик зоны ?
@Gosha: При изменении с master посылается notify на Ваши slave сервера, а они в свою очередь сами инициируют запрос на трансфер зоны по 53/UDP.
Имеется внешний статический айпи. Имеется домен закрепленный у хост-провайдера Мажордомо. Почтой и сайтом пользуемся на их хостинге. Стоит задача создать почтовый сервер на предприятии, причем сайт должен остаться на их хостинге. Вот тут проблема не могу понять как сконфигурировать ДНС. Как вообще поступить в такой ситуации. Нужен ли вообще в данном случае свой ДНС? Ведь сам хост-провайдер может добавить айпи адрес нашего сервера к своим ДНС (запись аля MX), как тогда быть с настройками на нашем сервере?
в файлике зоны перед NS домен надо ставить табуляцию! Иначе не работает…
@Timur: Добрый день!
Полагаю Вы не совсем правильно представляете себе работу почтового сервера, поэтому Ваш вопрос звучит немного некорректно. MX записи со стороны регистратора, предоставляющего Вам свои DNS-сервера, совершенно не достаточно. Раз Вы собираетесь повесить почтовый сервер на статический IP-адрес, выданный Вашим провайдером, то у Вашего Интернет-провайдера должна быть прописана PTR-запись в обратной зоне, потому что именно они обычно занимаются поддержкой обратных зон.
Сервер исходящей почты должен представляться в команде HELO/EHLO своим внешним FQDN, далее FQDN сервера исходящей почты должно однозначно разрешаться записью A во внешний IP-адрес сервера исходящей почты, а так же, как и было сказано выше, внешний IP-адрес сервера исходящей почты должен однозначно разрешаться записью PTR во внешний FQDN сервера исходящей почты.
Вывод: A, PTR и HELO/EHLO должны однозначно соответствовать друг другу и для корректной работы почтовой системы необходимо наличие следующих записей в DNS:
- A-запись узла почтового сервера;
- MX-запись, ссылающаяся на a-запись узла почтового сервера;
- PTR-запись в обратной зоне.
Не соблюдение этих условий чревато тем, что адресат не будет получать Вашу почту по одной простой причине — спам-фильтры. Ну а далее, Вам уже нужно корректно будет настроить сам MTA.
Я считаю, что тема настройки почтового сервера — одна из наиболее сложных, и без многодневного изучения мануалов, с применением изученного материала на практике, с ней разобраться с наскоку не получится. Удачи Вам!
Разъясните пожалуйста.
Ситуация такая:
У меня есть от хостера 3 IP адреса
MainIP
IPDNSResolver1
IPDNSResolver2
В GoDaddy настроино
ns1.myzone.com –> IPDNSResolver1
ns2.myzone.com –> IPDNSResolver2
Как закольцевать все это на myzone.com –> MainIP или MainIP –> myzone.com?
Что в /etc/hosts или /etc/resolv.conf прописать?
И если настраивать Bind кто у меня будет мастер MainIP или DNSResolver1 ? Или при таких исходных данных мне надо настроить только forwarders на эти два DNSResolverа?
Запутался…помогите
Спасибо
@Alexey: Из Вашего описания ничего не понятно.
А в SOA мы для каждого домена пишем так :
для домена допустим blabla.ru
@ IN SOA blabla.ru. root.blabla.ru.
ну скажем для домена kyky.ru
@ IN SOA kyky.ru. root.kyky.ru.
я правильно понял ?
@Игорь: Да.
эм а вот скажем есть 2 сервера ns1.myserv.org.ua <— мастер и ns2.myserv.org.ua <— слейв вот как это должно быть настроено правильно чтоб на 2 физических серверах был 1 и тот же домен только с ns-ами разными: ну мастер ясно тупо так делаем :
zone "myserv.org.ua" {
type master;
file "/etc/bind/myserv.org.ua";
};
и файл зоны:
$TTL 3600 ;
@ IN SOA ns1.myserv.org.ua. root.myserv.org.ua. (
2008082859 ; serial
14400 ; refresh (4 h)
3600 ; retry (1 h)
2592000 ; expire (4w2d)
600 ; minimum (10 minute)
)
NS ns1.myserv.org.ua.
NS ns2.myserv.org.ua.
@ A 109.86. .. . ..
ns1 A 109.86. .. . ..
ns2 A 109.88. .. . ..
эт ясно, ну на слейве :
zone "myserv.org.ua" {
type slave;
file "/etc/bind/myserv.org.ua";
masters { 109.86. .. . ..; };
allow-notify { 109.86. .. . ..; };
};
это все ? или я что то пропустил ?
@Игорь: Цель — round robin DNS?
эм ну как бы по принципу хостинга (ну вот на хостингах там 1 и тотже домен только с ns отличаетс в плане ns1.myserv.org.ua и ns1.myserv.org.ua), верней хостинг и будет там не большой…
@Игорь: Я пока не научился читать мысли. Если хотите получить помощь, четко ставьте задачу. Пока получается — хочу чего-то, а объяснить чего именно не могу.
тьфу в прошлом посте написал так что шяс сам сижу и думаю что я имею виду )))
так лан поясняю болие подробно, ну вот мне там над будет организовать для 1 программиста небольшой хостинг , у него будет 2 сервера, вот на 1 крутится web server со всеми состаляюшими (apache либо nginx, mysql, php, phpmyadmin,ftp и т.д.) + DNS server (master) а на втором ну 2 DNS (slave) вот ну и что нибудь есче… вот надо сделать так чтобы 1 DNS был с доменом ns1.myserv.org.ua (master) а второй ns2.myserv.org.ua (slave) (это его желание чтоб так было на 1 домене), вот в принципе и все…
@Игорь: Теперь немного понятнее. Так в чем проблема? Для одного домена и нужно два NS сервера, и как настроить master и slave в самом конце статьи написано, различия небольшие. Настроить можно как на двух физических серверах (что правильнее), так и на одном, при условии привязки двух IP адресов к нему (что глупо, при падении одного сервера, отрезольвить домен уже будет некому).
ну это все я понимаю, меня почему то смущает (не могу понять почему наверно таракан в голове ))) ) ns2.myserv.org.ua, его нужно прописывать только получается в описании зоны на мастире и все ? а ну да наверно все так как он же передается на слейв и в случае падения мастера домен же будет доступен… блин ну все правильно как бы в описании зоны я могу ns2 хоть федей назвать там же все привязаться к ипу ))) тьфу кажись понял, или я что то упускаю ?
Просто попробуйте настроить.
эм хорошая идея ))) эм и последний вопос а ns1.myserv.org.ua надо прописывать в файл hosts 1 сервера, и ns2.myserv.org.ua в в файл hosts 2 сервера.
Здравствуйте, приобрел vds — есть два ip на серве!
Как правильно поднять основной dns, чтобы для других сайтов на моей машинки я мог потом указывать ns1.mysite.ru и ns2.mysite.ru
В данный момент выбрал основной домен — в качестве днс — и у регистратора определил ип’ы
то есть так: ns1.mysite.ru — первый ip и ns2.mysite.ru — второй ip
В первый раз настраиваю — машинка не пингуется по mysite.ru…
Почитал Вашу инструкцию — сделал так
—- myzones.conf ——
zone «mysite.ru» {
type master;
file «mysite.ru»;
};
—- mysite.ru —-
$ORIGIN mysite.ru.
$TTL 86400 ; 1 day
@ IN SOA mysite.ru. root.mysite.ru. (
1 ; serial
14400 ; refresh (4 h)
3600 ; retry (1 h)
2592000 ; expire (4w2d)
600 ; minimum (10 minute)
)
NS ns1.mysite.ru.
NS ns2.mysite.ru.
mysite.ru. A первый ip
*.mysite.ru. CNAME @
ns1 A первый ip
ns2 A второй ip
Перезагрузил rdns — ничего не пошло — подскажите что я не так делаю???
Вариант со slave — не понял — где вторую машинку настраивать если один серв и значит бинд один)) с двумя ip!!!
Оставить комментарий