Настройки сервера DNS под FreeBSD

Настройки сервера DNS под FreeBSD Настройки сервера DNS под FreeBSD
BIND доступен во FreeBSD "из коробки". Но перед настройкой нужно проверить версию:
1
2
named -v
BIND 9.6.-ESV-R3
И при необходимости обновиться:
1
cd /usr/ports/dns/bind98/ && make rmconfig && make install clean
Не забываем включить опцию REPLACE_BASE.

Если получим ошибку (не понятно почему, но вылазит такое при первом запуске):
1
2
3
4
make: don't know how to make /usr/ports/dns/bind98/work/.install_done.bind98._usr_local. Stop
*** Error code 2
 
Stop in /usr/ports/dns/bind98.
То нужно просто повторить запуск:
1
make install clean

Конфигурационный файл named.conf

Самый популярный вариант - свой NS обслуживает локальную сеть и свои зоны.

Мой конфиг имеет такой вид:

1
less /etc/namedb/named.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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; <ip вашего интерфейса>; };
 
        disable-empty-zone "255.255.255.255.IN-ADDR.ARPA";
        disable-empty-zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA";
        disable-empty-zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA";
 
        forwarders {
                127.0.0.1; <DNS1 вашего провайдера>; <DNS2 вашего провайдера>;
        };
 
allow-recursion {
        127.0.0.1;  <ip локалки (если есть);>;
};
        recursive-clients 30000;
};
 acl "trusted-dns" {
        127.0.0.1; <ip вторичного DNS>;
};
logging {
        category lame-servers { null; };
};
 
zone "." {
type hint;
        file "/etc/namedb/named.root";
};
zone "0.0.127.IN-ADDR.ARPA" {
    type master;
    file "master/localhost.rev";
};
 
// RFC 3152
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA" {
    type master;
    file "master/localhost-v6.rev";
};
zone "rublin.org.ua" {
     type master;
     file "master/rublin.org.ua.zone";
     allow-transfer { trusted-dns;};
};
Нужно создать (если их нет в /etc/namedb/master) файлы localhost.rev и localhost-v6.rev. Для этого выполним:
1
sh make-localhost

Файл зоны named

Теперь создадим файлы зон (для каждой зоны, указанной в конфиге). У меня вот как получилось:
1
less /etc/namedb/master/rublin.org.ua.zone
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
$TTL 3600        ; 1 hour
@               IN      SOA     ns1.rublin.org.ua. admin.rublin.org.ua. (
                                20110808001     ; Serial
                                10800           ; Refresh
                                3600            ; Retry
                                604800          ; Expire
                                3600           ; Minimum TTL
                        )
 
; DNS Servers
@                IN      NS      ns1.rublin.org.ua.
@                IN      NS      ns.secondary.net.ua.
 
; MX Records
@                IN      MX 10   mx1.rublin.org.ua.
 
 
; Machine Names
@               IN      A       <ip>
localhost       IN      A       127.0.0.1
ns1             IN      A       <ip>
ns2             IN      A       <ip>
mx1             IN      A       <ip>
 
; Aliases
;www             IN      CNAME   @
Важно! Файл зоны должен заканчиваться пустой строкой!

Как видно из файла зоны, мой вторичный NS-сервер совсем не мой. Я воспользовался услугами Secondary.NET - они позволяют регистрировать вторичный NS, если настроен и доступен первичный.

Установка и настройка RNDC

Для удобства дальнейшего управления демоном named рекомендую использовать утилиту RNDC. Для этого запустим:
1
rndc-confgen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# Start of rndc.conf
key "rndc-key" {
        algorithm hmac-md5;
        secret "Lvekw+LSYvjc4MugWSXn/w==";
};
 
options {
        default-key "rndc-key";
        default-server 127.0.0.1;
        default-port 953;
};
# End of rndc.conf
 
# Use with the following in named.conf, adjusting the allow list as needed:
# key "rndc-key" {
#       algorithm hmac-md5;
#       secret "Lvekw+LSYvjc4MugWSXn/w==";
# };
#
# controls {
#       inet 127.0.0.1 port 953
#               allow { 127.0.0.1; } keys { "rndc-key"; };
# };
# End of named.conf
Вывод этой команды нужно использовать для редактирования конфигов. Все что от # Start of rndc.conf до # End of rndc.conf помещаем в /etc/named/rndc.conf. В итоге он такой:
1
less /etc/namedb/rndc.conf
1
2
3
4
5
6
7
8
9
10
key "rndc-key" {
        algorithm hmac-md5;
        secret "Lvekw+LSYvjc4MugWSXn/w==";
};
 
options {
        default-key "rndc-key";
        default-server 127.0.0.1;
        default-port 953;
};
Все что от # Use with the following in named.conf, adjusting the allow list as needed: до # End of named.conf дописываем в конце named.conf, но без комментария (#). В итоге концовка моего конфига примерно такая:
1
less /etc/namedb/named.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
******
zone "rublin.org.ua" {
     type master;
     file "master/rublin.org.ua.zone";
     allow-transfer { trusted-dns;};
};
 
key "rndc-key" {
       algorithm hmac-md5;
       secret "Lvekw+LSYvjc4MugWSXn/w==";
};
 
controls {
       inet 127.0.0.1 port 953
               allow { 127.0.0.1; } keys { "rndc-key"; };
};
Теперь читаем ман и учимся пользоваться. Ну а основные возможности такие:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
rndc [-b source-address] [-c config-file] [-k key-file] [-s server] [-p port] [-V] [-y key_id] {command}
 
reload  - перечитать файл конфигурации и зон
 
reload zone [class [view]] - перечитать файл зон
 
retransfer zone [class [view]] - ретрансфер зоны без проверки серийника
 
reconfig - перечитать конфиг и новый файл зоны (использовать при добавлении новой зоны)
 
stats - писать статистику сервера в файл статистики
 
stop - сохранить изменения в мастерфайл и потушить сервер
 
halt - остановить сервер без сохранения
 
flush - очистка кеша
 
status - отобразить состояние сервера
 
restart - рестарт сервера

Запуск и отладка named

Теперь в добавим записи для запуска:
1
2
3
echo 'named_enable="YES"' >> /etc/rc.conf
echo 'named_program="/usr/sbin/named"' >> /etc/rc.conf
echo 'named_flags="-u bind -c /etc/namedb/named.conf"' >> /etc/rc.conf
И настроем логирование. В /etc/syslog.conf допишем:
1
2
!named
*.* /var/log/named.log
Создадим пустой файл лога и выставим права:
1
touch /var/log/named.log && chown bind:bind /var/log/named.log
Перезапустим процесс syslogd для того чтобы он перечитал конфиг:
1
/etc/rc.d/syslogd restart
Теперь все готово к запуску. Стартуем:
1
/usr/sbin/named -t /var/named -u bind -c /etc/namedb/named.conf
И в логах видим:
1
tail -F /var/log/named.log
1
2
3
Jun 15 19:31:46 rublin named[37338]: zone rublin.org.ua/IN: loaded serial 2011061502
Jun 15 19:31:46 rublin named[37338]: reloading zones succeeded
Jun 15 19:31:46 rublin named[37338]: zone rublin.org.ua/IN: sending notifies (serial 2011061502)
Значит все ОК, named запущен и зона запущена.

Проверка работы named

Теперь мы можем изменить в /etc/resolv.conf сервер DNS на себя и проверить:
1
dig rublin.org.ua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
; <<>> DiG 9.6.-ESV-R3 <<>> rublin.org.ua
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50809
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; WARNING: recursion requested but not available
 
;; QUESTION SECTION:
;rublin.org.ua.                 IN      A
 
;; ANSWER SECTION:
rublin.org.ua.          3600    IN      A       192.168.67.99
 
;; AUTHORITY SECTION:
rublin.org.ua.          3600    IN      NS      ns.secondary.net.ua.
rublin.org.ua.          3600    IN      NS      ns1.rublin.org.ua.
 
;; ADDITIONAL SECTION:
ns1.rublin.org.ua.      3600    IN      A       192.168.1.2
ns.secondary.net.ua.    3600    IN      A       195.149.112.1
 
;; Query time: 14 msec
;; SERVER: 192.168.67.99#53(192.168.67.99)
;; WHEN: Wed Jun 15 19:38:41 2011
;; MSG SIZE  rcvd: 115
В выводе получили именно то, что прописывали. Сервер настроен правильно и функционирует.

Источник: www.rublin.org
More
hit.ua: посетителей за сегодня