Вы не авторизированы! Логин:  Пароль:  Запомнить:    Зарегистрироваться
Забыл пароль
 
 
 

DNS сервер на основе BIND 9

SVD programming - Программирование Delphi, HTML, PHP, CGI. Обзоры софта, ReactOS и многое другое...
 
Главная - Новости - Публикации - Файлы - Ссылки - Форум Обратная связь
 


Друзья сайта ::

Сайтом управляют ::

Друзья сайта ::
Обзоры софта » DNS сервер на основе BIND 9
Автор: Дмитрий Донченко / Дата: 12:43 09.04.2006
Комментарии: Комментарии (0)
Рейтинг статьи: 0
Этот документ описывает установку и начальную конфигурацию пакета BIND 9 для работы в качестве кэширующего DNS сервера для локальной сети.

Было решено использовать 9-ю версию пакета BIND, так как она наименее уязвима для внешних атак. BIND 9 поддерживает списки управления доступом для запросов, передачи зоны, а также динамических обновлений. Кроме того, этой версией поддерживается стандарт динамических обновлений и уведомления об изменениях зоны, она может использовать механизм инкрементальной передачи зоны, позволяющий вторичным DNS серверам запрашивать у первичных серверов только изменения зональных данных. Это позволяет ускорить передачу зон.
В качестве ОС на сервере установлена FreeBSD 4.10.

Получение, сборка и установка пакета BIND из исходных кодов
На момент написания статьи последней стабильной версией BIND 9 являлась 9.2.3.
Исходные коды BIND 9.2.3 доступны для загрузки с публичного FTP сервера: ftp://ftp.isc.org/isc/BIND9/9.2.3/bind-9.2.3.tar.gz.
Итак.

Создаем директорию, где будет проходить весь процесс:

Код:
# mkdir /usr/local/src
# cd /usr/local/src


Скачиваем дистрибутив с FTP сервера ftp.isc.org:


Код:
# fetch ftp://ftp.isc.org/isc/BIND9/9.2.3/bind-9.2.3.tar.gz
Распаковываем, и заходим в полученную папку:


Код:
# tar -xzf bind-9.2.3.tar.gz
# cd bind-9.2.3

Мы хотим что бы наш BIND 9 стал вместо штатного BIND 8.

Код:
# ./configure --prefix=/usr --sysconfdir=/etc/namedb

Далее, если конфигурация прошла успешно, приступаем к сборке пакета:

Код:
# make
# make install

На моей системе (FreeBSD 4.10) все собралось и установилось без каких-либо проблем.

Проверяем версию named которая у нас теперь стоит:

Код:
# named -v
BIND 9.2.3

Пусть вас не пугает, что мы устанавливаем BIND, а для проверки запускаем named. Так называется исполняемый файл, который, собственно говоря, и выполняет роль DNS сервера.

На этом первый этап нашей затеи окончен, BIND 9 скомпилирован и установлен в вашей системе, можно порадоваться за себя. :)

Установка BIND 9 из портов FreeBSD

Если порты у вас обновляются регулярно, то переходим в соответствующую директорию:

Код:
# cd /usr/ports/dns/bind9

Если не регулярно, то, вероятно, ваш BIND 9 нужно искать здесь:

Код:
# cd /usr/ports/net/bind9

Если портов у вас совсем нет, то устанавливайте BIND 9 из исходных кодов (см. выше).

Итак делаем следующие шаги.
Переходим в каталог BIND9 в ваших портах и компиллируем BIND 9:

Код:
# cd /usr/ports/dns/bind9
# make PORT_REPLACES_BASE_BIND9=yes install

Данная операция необходима для того, чтобы BIND 9 был установлен вместо штатного BIND 8.
Система сама скачает дистрибутив, распакует, сконфигурирует и установит.
После того, как закончится установка, предлагаю убедиться, что теперь у вас установлен именно BIND 9:

Код:
# named -v
BIND 9.2.3

На этом установка BIND 9 закончена, теперь можно переходить к конфигурированию и запуску. :)

Маленькая ремарка: я предпочитаю установку из портов, потому что в дальнейшем очень удобно обновлять пакет при помощи portupgrade, например, и потому, что устанавливать из портов просто удобнее.


Начальное конфигурирование и запуск BIND 9

Если у вас был установлен BIND 8, который идет в поставке с системой, то, вероятно, в папке /etc/namedb вы найдете файл конфигурации bind и некоторые дополнительные файлы, которые могут понадобиться для работы BIND. Если таких файлов у вас нет, никогда не было, и вы не знаете, где их взять, придется писать их с нуля. Я, например, нашел эти файлы в исходных кодах системы /usr/src/etc/namedb/.
Если вы обнаружили у себя соответствующие файлы, внимательно делайте необходимые правки в них. Будьте особенно осторожны, если вы решились писать конфигурационные файлы с нуля.
Итак, сначала создадим самый главный файл - файл конфигурации. Возьмите свой любимый текстовый редактор и создайте новый файл с именем named.conf. Содержание у него будет примерно такое:

Код:
# cat named.conf

// Первой строкой задаем сети, которым будет разрешено
//посылать запросы через наш DNS-сервер:
acl "corpnets" { 192.168.1.0/24; 192.168.2.0/24; 127.0.0.1; };
options {
// Рабочая директория:
   directory "/etc/namedb"; 
// Pid файл создавать тоже в рабочей директории, хотя можно
// написать любую другую, например /var/run/named/named.pid:
   pid-file "named.pid";           
// Разрешаем посылать запросы только от тех сетей, которые мы
// указали выше:
   allow-query { "corpnets"; };
   };
// Указатели корневых серверов:
   zone "." {
       type hint;
       file "named.root"; };
// Настраиваем обратное отображение
// для адреса 127.0.0.1:
   zone "0.0.127.in-addr.arpa" {
       type master;
       file "localhost.rev";
       notify no; };


С файлом named.conf пока все. Теперь нужно создать файлы, на которые мы ссылаемся в named.conf, а именно: named.root и localhost.rev.
Файл named.root скачиваем c FTP-сервера ftp.internic.net:

Код:
# fetch ftp://ftp.internic.net/domain/named.root

Желательно периодически повторять эту процедуру или настроить на автоматическое обновление через cron.

Файл localhost.rev можно написать вручную, а можно воспользоваться специальной утилитой make-localhost, которая находится в исходных кодах системы: /usr/src/etc/namedb/make-localhost.

Выглядит он примерно так:

Код:
# cat localhost.rev

;       From: @(#)localhost.rev 5.1 (Berkeley) 6/30/90
; $FreeBSD: src/etc/namedb/PROTO.localhost.rev,v 1.6 2000/01/10 15:31:40 peter Exp $
;
; This file is automatically edited by the 'make-localhost' script in
; the /etc/namedb directory.
;

$TTL    3600

@       IN      SOA     zm.domain.com. root.zm.domain.com.  (
                                20040603        ; Serial
                                3600            ; Refresh
                                900             ; Retry
                                3600000 ; Expire
                                3600 )          ; Minimum
        IN      NS      zm.domain.com.
1       IN      PTR     localhost.domain.com.



С файлом localhost.rev тоже закончили.

Теперь можно попробовать запустить и проверить наш bind:

Код:
# named
# ps -ax|grep named

Если процес запущен и работает, пробуем послать запрос через наш DNS-сервер:


Код:
# dig @127.0.0.1 ya.ru

В ответ на этот запрос мы должны получить некий положительный ответ, например:


Код:
# dig @127.0.0.1 ya.ru

; <<>> DiG 9.2.1 <<>> @127.0.0.1 ya.ru
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36843
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 0

;; QUESTION SECTION:
;ya.ru.                         IN      A

;; ANSWER SECTION:
ya.ru.                  36000   IN      A       213.180.193.123

;; AUTHORITY SECTION:
ya.ru.                  36000   IN      NS      ns1.yandex.ru.
ya.ru.                  36000   IN      NS      ns2.yandex.ru.
ya.ru.                  36000   IN      NS      ns3.yandex.ru.
ya.ru.                  36000   IN      NS      ns.ispm.ru.

;; Query time: 2639 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Jun 13 22:28:50 2004
;; MSG SIZE  rcvd: 122


Если ответа нет, идем смотреть логи системы в /var/log/messages, читаем, что нам пишет наш bind, и пытаемся понять, с чем это может быть связано.
Надеюсь, вы догадаетесь при необходимости настроить соответствующим образом ваш фаервол для работы DNS-сервера.

Если положительный ответ получен, значит ваш DNS-сервер работает и теоретически может обслуживать вашу сеть :)

Теперь давайте настроим ваш компьютер на работу с установленным DNS-сервером. Для этого необходимо внести изменения в файл /etc/resolv.conf. Выглядеть он будет примерно следующим образом:

Код:
# cat /etc/resolv.conf
# Ваш домен
domain domain.com
# IP адрес либо 127.0.0.1 либо адрес вашей машины
nameserver 127.0.0.1


Проверяем, обращается ли ваша машина к установленному DNS-серверу:

Код:
# nslookup yandex.ru
Server:  localhost.domain.com
Address:  127.0.0.1
Non-authoritative answer:
Name:    yandex.ru
Address:  213.180.216.200


Если получен ответ, аналогичный тому, что вы видите выше, значит, обращение происходит успешно.

С целью уменьшения трафика от вашего DNS сервера имеет смысл указать ему адреса DNS серверов вашего провайдера. В этом случае при попытке резольвинга DNS имени ваш DNS сервер будет сначала обращаться к кэшу на сервере провайдера.

Для этого необходимо добавить в наш файл конфигурации (named.conf) опцию forwarders.
В секции options добавляем следующую строку:

Код:
forwarders { 195.5.45.17; };

Не забудьте изменить IP адрес на адрес DNS сервера вашего провайдера.

Секция options в файле конфигурации должна выглядеть вот так:

Код:
   options {
        directory "/etc/namedb";           // Working directory
        pid-file "named.pid";              // Put pid file in working dir
        allow-query { "corpnets"; };
        forwarders { 195.5.45.17; };
};


После изменения файла конфигурации необходимо перестартовать named, для чего можно воспользоваться командой:

Код:
# killall -HUP named


Настройка DNS-сервера для работы с утилитой удаленного администрирования rdnc
Теперь настроим наш DNS сервер для работы с утилитой удаленного администрирования rndc, которая в дальнейшем вам очень пригодится.

Чтобы решить эту задачу, нам необходимо создать файл конфигурации для утилиты rndc.conf и добавить несколько строк в конфигурационный файл нашего сервера.
Копируем содержимое файла /usr/sbin/rndc-confgen в файл /etc/namedb/rndc.conf, который будет служить конфигурационным файлом для утилиты rndc:

Код:
# /usr/sbin/rndc-confgen > /etc/namedb/rndc.conf

В результате выполнения этой команды мы получим файл rndc.conf примерно следующего содержания:

Код:
# Начало файла rndc.conf
# Start of rndc.conf
key "rndc-key" {
        algorithm hmac-md5;
        secret "SW8ldl5IOMfhvlqxyRuRVw==";
};
options {
        default-key "rndc-key";
        default-server 127.0.0.1;
        default-port 953;
};
# Конец файла rndc.conf
# Начало секции для named.conf
# Для использования ключа авторизации необходимо добавить следующие строки в файл
# named.conf, при необходимости исправив список разрешенных для авторизации хостов:
key "rndc-key" {
algorithm hmac-md5;
secret "SW8ldl5IOMfhvlqxyRuRVw==";
};

controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
#Конец секции для named.conf


Теперь нужно добавить в самое начало файла конфигурации DNS сервера (named.conf) следующую секцию файла rndc.conf:

Код:
key "rndc-key" {
      algorithm hmac-md5;
      secret "SW8ldl5IOMfhvlqxyRuRVw==";
};
controls {
      inet 127.0.0.1 port 953
              allow { 127.0.0.1; } keys { "rndc-key"; };
};



После этого можно перезапустить named:

Код:
# killall -HUP named

Давайте проверим, работает ли наша утилита для удаленного администрирования DNS сервера:

Код:
# rndc status
number of zones: 3
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
server is up and running


Если выполнение данной команды прошло успешно, и вы получили примерно то, что получилось выше, значит утилита смогла подключиться к вашему named, успешно авторизовалась при помощи ключа, который мы создали, и попросила показать статус DNS сервера.

При помощи утилиты rndc можно делать очень много различных операций с вашим DNS сервером. Запустите ее без аргументов и увидите список доступных команд. :)

На этом установка и конфигурация вашего DNS сервера закончена. После ее окончания должен получиться DNS сервер, который может обслуживать вашу локальную сеть, использовать кэш DNS-сервера провайдера для оптимизации распознания имен Интернет и поддерживает удаленное управление при помощи утилиты rndc.

В следующей части статьи мы рассмотрим такие темы, как:

1. Настройка DNS сервера для поддержки домена.
2. Повышение безопасности DNS сервера.
3. Параметры в файле доменной зоны.

Источник: http://ru-board.com
Автор : Дмитрий Донченко
Комментарии: Комментарии (0)

Внимание!

Друзья сайта
Голосование ::
Случайные статьи ::
Добавления в форуме ::
Новые комментарии ::
Пользователи on-line ::
0 пользователь, 155 гостей
 
Страница создана за 0.013 секунд

SQL общее время: 0.007 секунд
SQL запросов всего: 15
Администрация сайта не несет ответственности за содержание рекламных материалов, а так же за информацию размещаемой посетителями. При использовании материалов сайта ссылка на svdpro.info обязательна.

Powered by LDU 802

Рейтинг@Mail.ru
Copyright © 2005 - 2011 «SVD Programming»
Версия сайта для коммуникаторов
Обратная связь - Карта сайта