Приветствую Вас на своей страничке !


[ О себе ] [ Мое резюме ] [ Мои проекты ] [ Рассказки ] [ Форум ] [ Фото ] [ Написать ]
Установка кэширующего DNS сервера под Windows

Многим из нас знакома ситуация, когда DNS сервер провайдера выходит из строя. Из-за такой мелочи не работает ни почта, ни серфинг, вообще ничего. Но решение есть ! Это кеширующий DNS сервер. Ставить будем ISC BIND. Этот сервер изначально разработан для UNIX, но есть и порт под Windows. Вот его мы и будем ставить.

Предупреждаю сразу - никаких окошек типа "кликни сюда, потом сюда" Вы не увидите. Ну только одно, при установке. Всю настройку придется проводить, вручную редактируя файлы конфигурации. Настоящие сисадмины не любят пропахшие мышами интерфейсы ! (С) не помню кто :-)

Итак, сначала выкачиваем бинарники отсюда: http://ftp.isc.org/isc/bind/contrib/ntbind-9.3.2/BIND9.3.2.zip Распаковываем, видим кучу exe-шников и других файлов и... правильно, ни малейшего наменка на setup.exe :-) Но есть BINDInstall.exe. Вот его-то мы и запустим. Что мы видим ?

Группа Options:

Заполняем поля пароля, подтверждаем его в поле confirm... и давим Install. Процесс протекает быстро, должно появиться окошко типа completed successfully. Типа все OK :-) Если нет, значит, скорее всего - у вас нет прав администратора на этой машине.

Переходим в каталог, куда поставили BIND (проводник не рекомендуется, лучше Far или WIndows Commander). Видим два каталога bin и etc. В bin лежат exe файлы, а вот в etc файлы конфигурации. Точнее, должны лежать. Мы сейчас займемся их созданием. Дабы Вам не заниматься этим самостоятельно, я приготовил заготовки. Остались от предыдущей версии. Создаем в C:\WINDOWS\system32\dns еще один каталог - namedb. Там будут лежать наши "файлы зон" - базы данных с информацией о зонах. В etc - файлы конфигурации, говорящие BIND о там, как эти файлы зон использовать. Ну и вообще что делать и как. Главный файл - named.conf Вот его заготовка:

------------------------------------ cut here ---------------------------------------------------------

acl corpnets { 127.0.0.1; 192.168.1.0/24; };
options {
            directory "c:/windows/system32/dns/namedb"; // Working directory
            allow-query { corpnets; };
            pid-file "c:/windows/system32/dns/named.pid";
           forwarders { 194.8.160.90; 195.131.52.130; 81.222.160.251; };
};

key "rndc-key" {
            algorithm hmac-md5;
            secret "y6ENOS2cmUeO4yR8STYU9Q==";
};

controls {
            inet 127.0.0.1 port 953;
            allow { 127.0.0.1; } keys { "rndc-key"; };
};

// Provide a reverse mapping for the loopback address 127.0.0.1
zone "0.0.127.in-addr.arpa" {
             type master;
             file "localhost.rev";
             notify no;
};

zone "20.30.172.in-addr.arpa" {
             type master;
             file "172.20.30.rev";
             notify no;
};

zone "1.168.192.in-addr.arpa" {
            type master;
            file "192.168.1.rev";
           notify no;
};

zone "." {
           type hint;
           file "root.hints";
};

zone "voskova.net" {
          notify no;
          type master;
          file "voskova.net";
};
------------------------------------ cut here ---------------------------------------------------------

Небольшие пояснения, чтобы было легче разобраться в этой абракадабре ;-)

acl corpnets - прописываем IP адреса сетей, которым дозволено пользоваться нашим DNS сервером.

Опции (блок options):

Дальше идут описания зон.

zone "0.0.127.in-addr.arpa" - Обратная или reverse зона (для преобразования адреса в имя) для петлевого интерфейса (loopback) Как Вы можете видеть имя зоны состоит из IP адреса, записанного наоборот - это общепринятое правило.

zone "1.168.192.in-addr.arpa" - то же, но для локальной сети

zone "." - а вот это самое главное - то, ради чего весь сыр-бор :-) Кеш DNS сервера. Если Вы внимательно рассмотрели описания зон, то могли заметить, что все они имеют type master - т.е. Ваш DNS сервер является "мастером" для этих зон. Другими словами, он за них отвечает. Для этой же прописан тип "hint" - это и есть кеш.

zone "voskova.net" - Это описание моей домашней зоны. Это описание прямой зоны - для преобразования имен в IP адреса. В данном случае voskova.net Абсолютно необязательная вещь. В большинстве случаев достаточно обратной зоны и кеша. Здесь это только для примера.

Теперь займемся заполнением файлов зон.

Начнем по порядку, сначала localhost.rev Как Вы могли заметить - это тот самый loopback

------------------------------------ cut here ---------------------------------------------------------
$TTL 1D
@ IN SOA dmitry.voskova.net. admin.voskova.net. (
                   1 ; Serial
                   8H ; Refresh
                   2H ; Retry
                   1W ; Expire
                   1D) ; Minimum TTL

                   NS       dmitry.voskova.net.
1                PTR         localhost.
------------------------------------ cut here ---------------------------------------------------------

Пояснения:

Первая строка - $TTL 1D - время жизни зоны (в данном случае - 1 день). По истечечении времени жизни зона считается устарешей и BIND снова считывает данные из файла зоны.

Далее идут записи данных зоны. Самая интересная и сложная - SOA (Start of authority) - начало полномочий. Сюда надо прописать (вместо dmitry.voskova.net.) имя Вашего компьютера и домена. Если у Вас нет своего домена - можете прописать все, что душе угодно - лишь бы не "пересечься" с уже имеющимися. Все равно их никто кроме Вас не увидит - помните про acl corpnets ? Скажу сразу - домена voskova.net не существует ;-)

Обратите внимание: имя машины имеет на конце точку. Так надо делать всегда, если не хотите потом удивляться странным эффектам.

Вместо admin.voskova.net. поставьте Ваш e-mail адрес, заменив @ на точку, т.к. символ @ здесь недопустим.

А вот далее идут не совсем понятные числа - оставьте как есть - если надо будет - Яндекс Вам в помощь.

NS запись - имя DNS сервера, отвечающего за зону. Опять обратите внимание на точку в конце имени хоста !

Ну и последняя запись - для IP адреса 127.0.0.1 (Помните как записано имя зоны ? Если слева добавить 1, то как раз и получится перевернутый адрес 127.0.0.1). Ну и тип записи - PTR (Pointer)

С остальными файлами зон надеюсь, разберетесь сами. Вот они:

Это 192.168.1.rev
------------------------------------ cut here ---------------------------------------------------------
$TTL 1D
@ IN SOA dmitry.voskova.net. admin.voskova.net. (
                   5 ; Serial
                   8H ; Refresh
                   2H ; Retry
                   1W ; Expire
                   1D) ; Minimum TTL
                   NS dmitry.voskova.net.
1                PTR                 gw.voskova.net.
------------------------------------ cut here ---------------------------------------------------------
gw.voskova.net. -общепринятое название шлюза (gateway). Это мой ADSL модем.

А вот так выглядит прямая зона. Файл voskova.net
------------------------------------ cut here ---------------------------------------------------------
$TTL 1D
@ IN SOA ns.voskova.net. admin.voskova.net. (
                   5 ; serial
                   8H ; refresh, seconds
                   2H ; retry, seconds
                  1W ; expire, seconds
                  1D ) ; minimum, seconds
;
               NS ns ; Internet адрес сервера имен
               MX 10 mail.voskova.net. ; Основной почтовый сервер
;
localhost  A         127.0.0.1
ns         A         192.168.1.2
mail       A         192.168.1.2
dimka      A         192.168.1.2
------------------------------------ cut here ---------------------------------------------------------

Как Вы можете видеть, здесь имена хостов и IP адреса поменялись местами и тип записи другой - A И присутствует запись типа MX - Mail eXchanger - почтовый сервер. Число после MX - приоритет. Чем меньше - тем приоритетнее.

Да, в каталоге etc присутствуют еще 2 файла со странным содержимым. Это описание тех самых "секретных ключей" для управления BIND.

Вот они:
Файл rndc.conf
------------------------------------ cut here ---------------------------------------------------------

key "rndc-key" {
 algorithm hmac-md5;
 secret "y6ENOS2cmUeO4yR8STYU9Q==";
};

options {
 default-key "rndc-key";
 default-server 127.0.0.1;
 default-port 953;
};

------------------------------------ cut here ---------------------------------------------------------
Файл rndc.key
------------------------------------ cut here ---------------------------------------------------------
key "rndc-key" {
 algorithm hmac-md5;
 secret "CF6QioSLhWyaw13P3VYsOg==";
};
------------------------------------ cut here ---------------------------------------------------------

Пока создайте их так, как видите - позже разберетесь что к чему. Рекомендую прочесть файл readme1st.txt в каталоге bin - если с английским нет проблем. Там описано как создавать такие файлы.

И еще одна деталь. Как Вы могли заметить, я не стал описывать файл root.hints, а ведь без него Вы Интернет не увидите. Не увидите потому, что в этом файле описаны корневые DNS сервера. А не стал потому, что его можно скачать тут: ftp://ftp.internic.net/domain/named.root Его необходимо положить в каталог namedb под именем root.hints.

Не забывайте периодически обновлять его, так как IP адреса серверов могут меняться. Каждый день конечно не стоит, но раз в месяц не повредит.

Теперь настало время навести последний лоск - и в путь !

Здесь нас поджидает засада N1 - дядя Билли решил, что "нефик простым юзерам" видеть то, что им не положено и прикрыл доступ к некоторым "фичам". Откроем эти фишки. Проводник -> Меню "Сервис" -> Свойства папки -> Вид. Снимаем галку "Использовать простой общий доступ к файлам и папкам". Жмем OK. Далее проводником доберемся до папки, куды засунули BIND (помните ?). Свойства этой папки -> Вкладка "Безопасность". Жмем "Добавить", в поле ввода вписываем named - помните, у нас от него должен работать BIND? Жмем OK, даем named полный доступ к этой папке. Иначе BIND работать не будет.

Засада N2 - не обязательно, но желательно - пароль который пользователю named необходимо прописать в конфигурации нашего сервиса. Мой Компьютер -> Управление -> Службы и приложения -> Службы. Видим службу ISC BIND. Свойства. Вкладка "вход в систему". Здесь пишем пароль пользователя BIND. Если успели забыть (не мудрено - столько мучений ;-) Локальные пользователи и группы -> Пользователи, выбираем нашего named, правой кнопкой, задать пароль.

А теперь, как говорилось в известном анекдоте "мы постараемся со всей этой фигней взлететь". Пытаемся запустить службу ISC BIND, и... Как правило (или по закону подлости) с наскока запуск не удается. В таком случае ищите сообщения об ошибках в журнале событий. Ищите строчки, отмеченные красным крестом и в поле "Источник" будет написано named. Внимательно читем что пишут и исправляем ашипки и ачепятки. Если служба стартовала, все равно рекомендую заглянуть в журнал, должны появиться записи, извещающие нас о запуске службы, загрузке зон и тд.

Обсудить на форуме


[ Домой ] [ О себе ] [ Мое резюме ] [ Мои проекты ] [ Рассказки ] [ Форум ] [ Написать ]