Многим из нас знакома ситуация, когда 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. Вот его-то мы и запустим. Что мы видим ?
Заполняем поля пароля, подтверждаем его в поле 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. Внимательно читем что пишут и исправляем ашипки и ачепятки. Если служба стартовала, все равно рекомендую заглянуть в журнал, должны появиться записи, извещающие нас о запуске службы, загрузке зон и тд.