Конфигурирование DNS-сервера BIND (Master & Slave)

02.01.2011 - 17:51

В один прекрасный день возникла идея, а не зарегистрировать ли себе доменное имя в интернете?! Первым делом приглянулся свободный - unix.ck.ua.
Хостер предоставлял поддержку домена на своих NS-серверах, но за деньги. Решил пойти другим путем, настроить поддержку домена у себя.
По стандарту, для поддержки домена, необходимо иметь не менее двух DNS-серверов. Этим мы обеспечим надежность работы DNS, если первый DNS-сервер станет недоступен, второй будет продолжать обслуживать запросы.

dns2.png

Настройка Master DNS-сервера.
Так как FreeBSD уже поставляется с предустановленным DNS-сервером BIND, не буду останавливаться на установке оного. Рассмотрим настройку первичного DNS-сервера на собственном примере для домена unix.ck.ua:
[root@router /]# cat /etc/namedb/named.conf
# Параметры.
        options {
        directory       "/etc/namedb";
        pid-file        "/var/run/named/pid";
        dump-file       "/var/dump/named_dump.db";
        statistics-file "/var/stats/named.stats";

# На каких интерфейсах слушать.
listen-on {
        127.0.0.1;
        82.207.87.36;
        };

# Тут лучше не светить своей версией BIND!
        version         "my DNS:)";

#Корневая зона DNS.
zone "." {
    type hint;
    file "named.root";
};

# Форвард-зона локалхоста.
zone "localhost" {
type master;
    file "master/localhost.forw";
    allow-transfer { 127.0.0.1; };
    allow-query { 127.0.0.1; };
};

# Реверс-зона локалхоста.
zone "0.0.127.IN-ADDR.ARPA" {
    type master;
    file "master/localhost.rev";
};

# Наша зона, которую мы поддерживаем.
        zone "unix.ck.ua" {
# Говорим, что мы будем авторитетным DNS-сервером для этой зоны.
        type master;
# Файл форвард-зоны, указываем месторасположение.
        file "master/unix.ck.ua.forw";
# Сервера на которые разрешено передавать зону. В нашем случае, указываем IP нашего Slave-сервера.
        allow-transfer { 193.108.251.254; };
# При изменении зоны все вторичные DNS сервера получают уведомление.
        notify yes;
};

Далее создаём файл форвард зоны нашего домена, подробное описание файла зоны есть в статье: Настройка собственного DNS:

[root@router /]#cd /etc/namedb/master/
[root@router /etc/namedb/master/]#cat > unix.ck.ua.forw
$TTL    3600
@               IN      SOA     ns.unix.ck.ua. admin.unix.ck.ua.  (
                                2010123101      ; Serial
                                3600            ; Refresh
                                900             ; Retry
                                3600000         ; Expire
                                3600 )          ; Minimum
; DNS сервера
@               IN      NS      ns.unix.ck.ua.
@               IN      NS      ns.yuren.com.ua.

; MX записи
@               MX      10      aspmx.l.google.com.
@               MX      20      alt1.aspxm.l.google.com.
@               MX      20      alt2.aspmx.l.google.com.
@               MX      30      aspmx2.googlemail.com.
@               MX      30      aspmx3.googlemail.com.
@               MX      30      aspmx4.googlemail.com.
@               MX      30      aspmx5.googlemail.com.

; A-записи
www             IN      A       82.207.87.36
forum           IN      A       82.207.87.36
ns              IN      A       82.207.87.36
@               IN      A       82.207.87.36

Далее добавляем в автозапуск /etc/rc.conf:

[root@router /]# echo 'named_enable="YES"' >> /etc/rc.conf
[root@router /]# echo 'named_flags="-u bind -g bind"' >> /etc/rc.conf

Запускаем named:

[root@router /etc/rc.d]# ./named start
[root@router /etc/rc.d]# ps -A | grep named
879  ??  Ss     0:13,40 /usr/sbin/syslogd -l /var/run/log -l /var/named/var/run/log -s
37336  ??  Ss     0:41,71 /usr/sbin/named -t /var/named -u bind

Проверяем поддерживает ли наш DNS зону unix.ck.ua:
[root@router /]# dig @127.0.0.1 unix.ck.ua
; <<>> DiG 9.4.2 <<>> @127.0.0.1 unix.ck.ua
; (1 server found)
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5392
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 1

;; QUESTION SECTION:
;unix.ck.ua.                    IN      A

;; ANSWER SECTION:
unix.ck.ua.             3600    IN      A       82.207.87.36

;; AUTHORITY SECTION:
unix.ck.ua.             3600    IN      NS      ns.yuren.com.ua.
unix.ck.ua.             3600    IN      NS      ns.unix.ck.ua.

;; ADDITIONAL SECTION:
ns.unix.ck.ua.        3600    IN      A       82.207.87.36

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Jan  2 21:30:58 2011
;; MSG SIZE  rcvd: 114

На этом настройку авторитативного DNS-сервера для нашей зоны завершено.

Настройка Slave DNS-сервера.
По правилам, необходимо вторичный DNS-сервер размещать, чем подальше от первого. Happy
Моим вторичный NS-сервером будет, хост моего друга - ns.yuren.com.ua, который будет поддерживать нашу зону. Конфиги Master- и Slave- серверов принципе идентичны, привиду только измененную его часть необходимую для вторичного сервера:

[root@router /]# cat >> /etc/namedb/named.conf
# Поддерживаемая зона
zone "unix.ck.ua" {
# Тип, тут указываем, что мы вторичный DNS-сервер для нашей зоны.
type slave;
# Файл Slave-зоны, указываем месторасположение.
file "slave/unix.ck.ua.slave";
# Сервер, который выступает в роли - Master. В нашем случае, указываем IP нашего Master-сервера.
masters { 82.207.87.36;};
};

После перезапуска, зона "unix.ck.ua" сама подтянется в файл /etc/namedb/slave/unix.ck.ua.slave c Master-сервера.
Будет иметь, вот такой вид:
[root@srv /]#cat  /etc/namedb/slave/unix.ck.ua.slave
$ORIGIN .
$TTL 3600       ; 1 hour
unix.ck.ua              IN SOA  ns.unix.ck.ua. admin.unix.ck.ua. (
                                2010123101 ; serial
                                3600       ; refresh (1 hour)
                                900        ; retry (15 minutes)
                                3600000    ; expire (5 weeks 6 days 16 hours)
                                3600       ; minimum (1 hour)
                                )
                        NS      ns.unix.ck.ua.
                        NS      ns.yuren.com.ua.
                        A       82.207.87.36
                        MX      10 aspmx.l.google.com.
                        MX      20 alt1.aspxm.l.google.com.
                        MX      20 alt2.aspmx.l.google.com.
                        MX      30 aspmx2.googlemail.com.
                        MX      30 aspmx3.googlemail.com.
                        MX      30 aspmx4.googlemail.com.
                        MX      30 aspmx5.googlemail.com.
$ORIGIN unix.ck.ua.
forum                   A       82.207.87.36
ns                      A       82.207.87.36
www                     A       82.207.87.36

Перед запуском, желательно проверить саму возможность копирования зоны с Master на Slave сервер:

[root@srv /]# dig @ns.unix.ck.ua unix.ck.ua. axfr
; <<>> DiG 9.6.2-P1 <<>> @ns.unix.ck.ua unix.ck.ua. axfr
; (1 server found)
;; global options: +cmd
unix.ck.ua.             3600    IN      SOA     ns.unix.ck.ua. admin.unix.ck.ua. 2010123101 3600 900 3600000 3600
unix.ck.ua.             3600    IN      A       82.207.87.36
unix.ck.ua.             3600    IN      NS      ns.unix.ck.ua.
unix.ck.ua.             3600    IN      NS      ns.yuren.com.ua.
unix.ck.ua.             3600    IN      MX      10 aspmx.l.google.com.
unix.ck.ua.             3600    IN      MX      20 alt1.aspxm.l.google.com.
unix.ck.ua.             3600    IN      MX      20 alt2.aspmx.l.google.com.
unix.ck.ua.             3600    IN      MX      30 aspmx2.googlemail.com.
unix.ck.ua.             3600    IN      MX      30 aspmx3.googlemail.com.
unix.ck.ua.             3600    IN      MX      30 aspmx4.googlemail.com.
unix.ck.ua.             3600    IN      MX      30 aspmx5.googlemail.com.
forum.unix.ck.ua.       3600    IN      A       82.207.87.36
ns.unix.ck.ua.          3600    IN      A       82.207.87.36
www.unix.ck.ua.         3600    IN      A       82.207.87.36
unix.ck.ua.             3600    IN      SOA     ns.unix.ck.ua. admin.unix.ck.ua. 2010123101 3600 900 3600000 3600
;; Query time: 74 msec
;; SERVER: 82.207.87.36#53(82.207.87.36)
;; WHEN: Mon Jan  3 00:44:56 2011
;; XFR size: 15 records (messages 1, bytes 422)

Если не отдаст зону, увидите:
[root@srv ~]# dig @ns.unix.ck.ua unix.ck.ua. axfr
; <<>> DiG 9.6.2-P1 <<>> @ns.unix.ck.ua unix.ck.ua. axfr
; (1 server found)
;; global options: +cmd
; Transfer failed.

На этом настройка вторичного DNS-сервера завершена.
Теперь можно смело регистрировать себе доменное имя, где в качестве NS1 и NS2, указываем наши Master- и Slave- DNS сервера.
Обсуждения на форуме: тут.

Ваша оценка: Нет Средняя: 3.8 (10 votes)

Комментарии:


Что-то не получается у меня...
вот что в лог выпало:

Oct 15 00:08:54 gate1 named[86491]: xfer-out: info: client 188.254.5.2#17989: transfer of 'mydomen.ru/IN': AXFR started
Oct 15 00:08:54 gate1 named[86491]: xfer-out: info: client 188.254.5.2#17989: transfer of 'mydomen.ru/IN': AXFR ended
Oct 15 00:08:55 gate1 named[86491]: xfer-out: info: client 188.254.5.2#36877: transfer of 'mail.mydomen.ru/IN': AXFR started
Oct 15 00:08:55 gate1 named[86491]: xfer-out: info: client 188.254.5.2#36877: transfer of 'mail.mydomen.ru/IN': AXFR ended
Oct 15 00:08:55 gate1 named[86491]: xfer-out: info: client 188.254.5.2#51435: bad zone transfer request: '28/6.167.95.in-addr.arpa/IN': non-authoritative zone (NOTAUTH)
Oct 15 00:09:53 gate1 named[86491]: xfer-out: info: client 188.254.5.2#15910: bad zone transfer request: '28/6.167.95.in-addr.arpa/IN': non-authoritative zone (NOTAUTH)
Oct 15 00:10:25 gate1 named[86491]: xfer-out: info: client 95.167.6.35#48498: bad zone transfer request: '188.254.5.2/IN': non-authoritative zone (NOTAUTH)



Пишите на форум пожалуйста.



Здравствуйте, хорошая статья.
Собираюсь ею воспользоваться скоро, так как тоже планирую создать свой ДНС сервер.
Подскажите, правильно ли мои действия
1) покупаю домен
2) прописываю в настройках domain.ru например свой айпи адреса внешние (основной + резервный)
3) Далее уже все по вашей статье?
4) как мне с обратной зоной быть?
Подскажите а то путаюсь



Настраиваете первым делом СВОИ 1-й и 2-й ДНС-сервера на поддержку domain.ru. Потом регистрируете сам домен domain.ru и настраиваете A запись на свой ИП.
Если хостер предоставляет свои ДНС-ы, можна воспользоваться в качестве слейва ним.

Обратную зону(PTR), просим провайдера прописать у себя на ДНС-е ИП-domain.ru.



Хорошая заметка, спасибо приятно почитать )))
у меня такой вопос это надо в каждом файле зоны в SOA запись писать имя ns-сервера ?
к примеру есть 2 домена :
test1.ua и test2.ua и естественно dns-сервер ns.host.org.ua
SOA запись 1 домена будет :
test1.ua              IN SOA  ns.host.org.ua. admin.test1.ua
и SOA запись 2 домена будет :
test2.ua              IN SOA  ns.host.org.ua. admin.test2.ua

я правильно понимаю ?



да, правильно.