Настройка DNS-сервера BIND
Материал из Xgu.ru
-  Автор: Сергей Черепенин
 - Короткий URL: bind
 
На этой странице описывается процедура инсталляции и настройки DNS-сервера
BIND для работы в режиме кэширующего и авторитетного сервера доменных имён.
[править] Инсталляция DNS-сервера BIND
Установка сервера в Debian / Ubuntu:
%# apt-get install bind9
[править] Начальное конфигурирование DNS-сервера
После установки сервера необходимо указать некоторые параметры для работы сервера. Это делается путем редактирования определенных директив в файле /etc/bind/named.conf.options:
options {
        directory "/var/cache/bind";
        forwarders {
                10.0.35.1;
                10.0.17.1;
                10.0.1.2;
         };
        listen-on { 
                192.168.15.180; 
                127.0.0.1;
         };
  
         auth-nxdomain no;    # conform to RFC1035
};
 
Директива directory указывает на расположение в дереве каталогов временных файлов сервера.
Директива forwarders - на какие серверы пересылать запрос, если наш сервер сам не в состоянии определить имя или IP-адрес запроса клиентов.
Директива listen-on указывает на каких интерфейсах вести прослушивание 53 порта.
[править] Запуск DNS-сервера
После редактирования этого файла необходимо рестартовать сервер:
%# /etc/init.d/bind9 restart Stopping domain name service...: bind. Starting domain name service...: bind.
И проверяем: 
%# netstat -lnp | grep :53 tcp 0 0 192.168.15.180:53 0.0.0.0:* LISTEN 31290/named tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 31290/named udp 0 0 192.168.15.180:53 0.0.0.0:* 31290/named udp 0 0 127.0.0.1:53 0.0.0.0:* 31290/named
[править] Настройка DNS-сервера для работы в режиме авторитетного сервера
Далее необходимо указать в основном конфигурационном файле сервера /etc/bind/named.conf.local имена файлов, в которых мы далее опишем зоны для прямого и обратного преобразований. Добавляем следующие строки в этот файл:
zone "unix.nt" {
        type master;
        file "/etc/bind/db.unix.nt";
        allow-transfer { 127.0.0.1; };
};
zone "15.168.192.in-addr.arpa" {
        type master;
        file "/etc/bind/db.rev_unix.nt";
        allow-transfer { 127.0.0.1; };
};
Файл /etc/bind/db.unix.nt служит для описания зоны прямого преобразования, а файл /etc/bind/db.rev_unix.nt - для обратного
Содержание файла /etc/bind/db.unix.nt:
$TTL 3000h
@ SOA unix.nt. user.host180.unix.nt. 2007012000 (
                                                10h ; slave-server connection preiod
                                                1h  ; retry
                                                1w  ; lifetime
                                                1h ); negative ttl
        NS @ 
host1.unix.nt. A 192.168.15.1
host2.unix.nt. A 192.168.15.2
host3.unix.nt. A 192.168.15.3
host4.unix.nt. A 192.168.15.4
host5.unix.nt. A 192.168.15.5
host6.unix.nt. A 192.168.15.6
host7.unix.nt. A 192.168.15.7
host8.unix.nt. A 192.168.15.8
host9.unix.nt. A 192.168.15.9
host10.unix.nt. A 192.168.15.10
host11.unix.nt. A 192.168.15.11
.
.
.
host251.unix.nt. A 192.168.15.251
host252.unix.nt. A 192.168.15.252
host253.unix.nt. A 192.168.15.253
host254.unix.nt. A 192.168.15.254
Содержание файла /etc/bind/db.rev_unix.nt:
15.168.192.in-addr.arpa. 10800 IN SOA unix.nt. user.host180.unix.nt. 2007012001 (
                                                10h  ; slave-server connection period
                                                1h   ; retry
                                                1w   ; life-time
                                                1h ) ; negative ttl
                NS host180.unix.nt.
1 PTR host1.unix.nt.
2 PTR host2.unix.nt.
3 PTR host3.unix.nt.
4 PTR host4.unix.nt.
5 PTR host5.unix.nt.
6 PTR host6.unix.nt.
7 PTR host7.unix.nt.
8 PTR host8.unix.nt.
9 PTR host9.unix.nt.
10 PTR host10.unix.nt.
11 PTR host11.unix.nt.
.
.
.
250 PTR host250.unix.nt.
251 PTR host251.unix.nt.
252 PTR host252.unix.nt.
253 PTR host253.unix.nt.
254 PTR host254.unix.nt.
Примечание: для быстрого описания всей зоны (254 хоста) можно дать команду в vim:
-- для прямой зоны:
:r! for i in `seq 1 254`;do echo host$i.unix.nt. A 192.168.15.$i; done
-- для обратной зоны:
:r! for i in `seq 1 254`;do echo $i PTR host$i.unix.nt. ; done
Другой вариант - использование директивы $GENERATE
$ORIGIN 15.168.192.in-addr.arpa. $GENERATE 0-255 $.0 PTR host$.unix.net.
для реверсной зоны и аналогично для прямой зоны
$ORIGIN unix.net. $GENERATE 0-255 host$ A 192.168.15.$
Рестартуем сервер:
%# rndc reload server reload successful
И проверим:
%# host 192.168.15.190 190.15.168.192.in-addr.arpa domain name pointer host190.unix.nt. %# host host190.unix.nt host190.unix.nt has address 192.168.15.190
[править] Настройка резолвера DNS
Резолвер (resolver) -- клиентская библиотека DNS, которая используется всеми программами Unix/Linux, которым нужен доступ к доменной системе имён.
Итак, прямое и обратное преобразование работает. На этом настройка DNS сервера завершена. Необходимо только указать операционной системе использовать только что сконфигурированный сервер. Делается это через файл /etc/resolv.conf:
%# cat /etc/resolv.conf search unix.nt nameserver 127.0.0.1 nameserver 10.0.35.1
[править] Клиенты DNS. Программа dig
dig — программа, предназначенная для получения информации из DNS. Пришла на смену устаревшей программе nslookup.
Пример использования команды dig:
$ dig mail.ru mx ; <<>> DiG 9.7.0 <<>> mail.ru mx ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4337 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 6, ADDITIONAL: 1 ;; QUESTION SECTION: ;mail.ru. IN MX ;; ANSWER SECTION: mail.ru. 3471 IN MX 10 mxs.mail.ru. ;; AUTHORITY SECTION: mail.ru. 3463 IN NS ns3.mail.ru. mail.ru. 3463 IN NS ns2.mail.ru. mail.ru. 3463 IN NS ns.mail.ru. mail.ru. 3463 IN NS ns4.mail.ru. mail.ru. 3463 IN NS ns5.mail.ru. mail.ru. 3463 IN NS ns1.mail.ru. ;; ADDITIONAL SECTION: mxs.mail.ru. 3471 IN A 94.100.176.20 ;; Query time: 3 msec ;; SERVER: 10.0.35.1#53(10.0.35.1) ;; WHEN: Sat Mar 20 16:14:30 2010 ;; MSG SIZE rcvd: 168
[править] Обратное преобразование имён
[править] DNS и DHCP: Динамическое обновление
[править] BIND в качестве DNS в AD
[править] Дополнительная информация
- BIND как DNS сервер в Active Directory
 - DHCP server with Dynamic DNS
 - Настройка DDNS + DHCPD
 - DNS Tutorial
 
[править] Материалы по DNS на xgu.ru
- DNS
 - DNS-spoofing
 - DNS-tunneling
 - Настройка DNS-сервера BIND