Установка DNS для Intranet фирмы

       В некоторой фирме локальная сеть состоит из 10 сеток подразделений (192.168.1.0 – 192.168.10.0) и общей сетки 192.168.99.0, в которой располагаются общие серверы. Написать конфигурационные файлы DNS для этой фирмы в предположении: - в каждом подразделении в настоящий момент имеется по 7 ПЭВМ, - общих серверов – 4, - выход в Internet по adsl, обеспечивается не для всех подразделений.

Установка DNS для Intranet фирмы 
   DNS-сервис является одним из важных сервисов для нормального функционирования Internet сети. Его
  основная задача состоит в определении соответствия между сетевыми адресами узлов сети и их удобочитабельными 
  названиями. Существует два варианта определения этого соответствия - прямое и реверсивное определение. 
  При прямом разрешении DNS-сервер по имени определяет и выдает сетевой адрес, а при реверсивном - по адресу 
  ищет соответствующее имя. Это необходимо учитывать при настройке DNS-сервиса, поскольку для осуществления данных 
  механизмов используются разные таблицы. В операционной системе Sun Solaris, как, в прочем, и в других UNIX-системах,
  в качестве DNS-сервера используется BIND-сервер версии 8.х и выше. Хотя, нужно заметить, в Solaris-е есть возможность
  использования и сервера версии 4.х. Система определяет какой версии DNS-сервер запускать по тому, какой конфигурационный 
  файл существует в каталоге /etc. Если используется файл - named.boot, то запускается старая версия сервиса, 
  а если - named.conf - то, соответственно, новая (в Solaris 9 старой версии уже нет). Лучше естественно использовать
  BIND 8.х и выше. Если у вас остались конфигурационные файлы named.boot и вы хотите перевести ваш DNS-сервер на новую версию, 
  то можно воспользоваться скриптом /usr/sbin/named-bootconf который конвертирует конфигурационный файл BIND 4.x в BIND 8.x.
  Конфигурирование BIND 8.x Конфигурирование BIND-сервера состоит из двух этапов - настройка конфигурационного
  файла /etc/named.conf и создания и заполнения таблиц доменных зон.
BIND 8.х позволяет создавать 4 типа доменных зон: 
master (раньше называлась - primary). Данный DNS-сервер является головным для данного домена.
slave (раньше называлась - secondary). Такие DNS-серверы хранят копии доменных зон, которые скачивают
 и периодически обновляют с master-сервера.
hint (раньше называлась - cache). Кэширующий сервер. Не хранит никаких таблиц зон, а просто собирает с
 объявленных root-серверов кэш резолвенных адресов.
Используется для повышения эффективности работы DNS-сервера. 
stub аналог slave зоны, но в отличие от нее таблиц зоны не хранит, только NS-записи,
 и просто перенаправляет запросы на объявленные DNS-сервера.
   Очевидно, что вы можете настроить так ваш BIND-сервер, что он одновременно может 
   обслуживать несколько разных доменных зон и для одних он может быть master-ом, для
   других - slave и тд. В любом случае, какие-бы типы зон вы не настраивали, две зоны 
   будут присутствовать у вас почти всегда - это зона hint и localhost (прямая и реверсивная). 
   Итак, начнем с просто кэширующего DNS-сервера. Создаем /etc/named.conf и прописываем там глобальные 
   параметры и те две "стандартные" зоны о которых я только что упоминал:
//Конфигурационный файл /etc/named.conf для кэширующего DNS-сервера

options { 
directory "/var/named";
listen-on { 192.168.6.1; localhost; };
version "Go away!";
allow-transfer { none; };
allow-query { 192.168.6.0/24,192.168.7.0/20; localhost; };
forward first;
forwarders { 192.168.1.1; };
};

zone "localhost" in {
type master;
file "/var/named/localhost.zone";
allow-update { none; };
};

zone "0.0.127.in-addr.arpa" in {
type master;
file "/var/named/127.0.0.zone";
allow-update { none; };
};

zone "." in {
type hint;
file "/var/named/root.hint";
};
   Синтаксис этого файла очень похож на С++. Структура options - описывает глобальные параметры для сервера,
   а структуры zone - описывают, соответственно, доменные зоны. 
directory - указывает каталог расположения таблиц зон
listen-on - позволяет указать на какие сетевые интерфейсы будет "вешаться" демон. Тут прописываем адрес локального
 интерфейса, у меня это 192.168.6.1, и не забываем указать и 127.0.0.1
version - строка, которая будет выдаваться на запрос определения версии DNS-сервера
allow-transfer - устанавливает возможность передачи зон для slave-серверов. В нашем случае трансфер запрещен.
allow-query - а этот параметр указывает кому разрешается подавать запросы к нашему серверу.
 Мы прописали нашу локальную сетку 192.168.6.0 и 192.168.7.0 и 127.0.0.1
forward - этот параметр позволяет указать каким образом сервер обрабатывает запрос клиента. Я указал first - это означает что сервер сначала 
перенаправит запрос выше и если не получит положительного результата, то посмотрит в своем кэше. Если указать only - то у себя смотреть не будет
forwarders - а тут вы и указываете куда перенаправлять запросы клиентов. Я указал, для примера, свой вышестоящий DNS-сервер 192.168.1.1 
type - тип зоны
file - имя файла таблицы зоны
allow-update - разрешить или нет, и кому если разрешить, возможность изменения(обновления) таблицы зоны
Теперь добавим записи для master-зон: //Конфигурационный файл /etc/named.conf для master DNS-сервера 
directory "/var/named";
listen-on { 192.168.6.1; localhost; };
version "Go away!";
allow-transfer { none; };
allow-query { 192.168.6.0/24,192.168.7.0/20; localhost; };
};

zone "localhost" in {
type master;
file "/var/named/localhost.zone";
allow-update { none; };
};

zone "0.0.127.in-addr.arpa" in {
type master;
file "/var/named/127.0.0.zone";
allow-update { none; };
};

zone "." in {
type hint;
file "/var/named/root.hint";
};

zone "sun.urix.ru" in {
type master;
file "/var/named/sun.urix.zone";
};

zone "san.urix.ru" in {
type master;
file "/var/named/san.urix.zone";
};


zone "6.168.192.in-addr.arpa" in {
type master;
file "/var/named/192.168.6.zone";
};
zone "7.168.192.in-addr.arpa" in {
type master;
file "/var/named/192.168.7.zone";
};
    Я добавил две структуры: "прямую" зону - sun.urix.ru и реверсивную - 6.168.192.in-addr.arpa. Удалил опции 
	определяющие форвард запросов и пока не разрешаю трансфер своих таблиц. Таким образом у меня получился мастер 
	DNS-сервер для моего домена sun.urix.ru. Теперь настроим наш BIND в случае когда у нас существуют и slave-серверы. 
	Сначала необходимо подправить на мастер-сервере возможность передачи таблиц зон. Для этого нужно только разрешить трансфер зон:
allow-transfer { 192.168.6.2; 192.168.6.3; };

Здесь 192.168.6.2 и 192.168.6.3 - мои slave-серверы. А теперь на slave-сервере делаем конфигурационный файл:
//Конфигурационный файл /etc/named.conf для slave DNS-сервера
options { 
directory "/var/named";
listen-on { 192.168.6.2; localhost; };
version "Go away!";
allow-transfer { none; };
allow-query { 192.168.6.0/24, 192.168.7.0/24; localhost; };
};

zone "localhost" in {
type master;
file "/var/named/localhost.zone";
allow-update { none; };
};

zone "0.0.127.in-addr.arpa" in {
type master;
file "/var/named/127.0.0.zone";
allow-update { none; };
};

zone "." in {
type hint;
file "/var/named/root.hint";
};

zone "sun.urix.ru" in {
type slave;
file "/var/named/sun.urix.zone";
masters { 192.168.6.1; };
};

zone "6.168.192.in-addr.arpa" in {
type slave;
file "/var/named/192.168.6.zone";
masters { 192.168.6.1; };
};
    Все, теперь когда демон на slave-сервере будет запускаться он прочитает адрес, прописанный в masters, 
	и скачает таблицу зоны, а в последствии будет ее и обновлять. Несколько слов о том, как запускать и 
	останавливать bind-демон и где читать логи:
#/usr/sbin/in.named - так запускается демон
#pkill in.named - а так его можно "убить"
/var/log/messages - файл логов куда и демон in.named пишет свои логи.

Таблицы зон 
Теперь приступаем к созданию таблиц зон. Понятно, что для slave-сервера большинство таблиц будут скачены 
с master-сервера. Первым делом пропишим таблицы для localhost и зоны hint. Мы объявили, что /var/named - каталог 
где помещаются таблицы - вот и идем туда и создаем необходимые таблицы. 
//Файл /var/named/localhost.zone

$ttl 38400
localhost. IN SOA localhost. root.localhost. (

2004071001 ;serial
108000 ;refresh
1800 ;retry
1209600 ;expiry
604800)

localhost.	 IN		NS		solaris.sun.urix.ru.

localhost.	 IN		NS		solaris.san.urix.ru.

localhost.	 IN		A		127.0.0.1
 

 

//Файл /var/named/127.0.0.zone

$ttl 38400
0.0.127.in-addr.arpa. IN SOA localhost. root.localhost. (

2004071001 ;serial
108000 ;refresh
1800 ;retry
1209600 ;expiry
604800)

0.0.127.in-addr.arpa. 		IN 	NS	solaris.sun.urix.ru.
1.0.0.127.in-addr.arpa.		PTR 	        localhost.
 

 
//Файл /var/named/root.hint

. 					3600000	IN	 NS	 A.ROOT-SERVERS.NET.
 
A.ROOT-SERVERS.NET.	3600000	 A 		 198.41.0.4
 
Разберемся теперь в формате этих таблиц. localhost.zone и 127.0.0.zone - это прямая и реверсивная таблицы 
loopback интерфейса, а файл root.hint - используется для кэширующего сервера. Эти три файла, как мы помним, 
присутствуют неизменно на любом DNS-сервере. Что касается файла root.hint, то его, как правило, берут у своего
 провайдера. Данные в нем периодически устаревают и меняются, поэтому выкачивать его у своего провайдера - это 
 самый оптимальный вариант. Но я хочу посоветовать вам упростить этот файл всего до одной-двух записей рутовых 
 серверов и указать их на DNS-серверы вашего провайдера. Что это даст? Дело в том, что ваш сервер при каждом 
 запуске и по истечении параметра TTL(time-to-live) будет обращаться ко всем серверам из этого файла и, таким 
 образом, создаст вам огромный трафик, хотя накопленной информации, хранящейся на сервере вашего провайдера,
 вполне для вас будет достаточно. В качестве примера я написал только один адрес А-root сервера, если вы хотите 
 добавить еще сервера, то создайте B,C,D... и т.д. Расшифровка полей файлов зон: 
2004071001 ;serial - серийный номер версии таблицы. Самый лучший формат - ГГГГММДДNN, где NN - номер изменения 
таблицы за текущий день
108000 ;refresh - время в секундах, указывающее как часто необходимо проверять таблицу мастер-сервера на 
необходимость update-а
1800 ;retry - время в секундах, которое сервер ожидает при ошибочном сеансе refresh-а чтобы начать его заново
1209600 ;expiry - максимальный предел в секундах времени хранения таблицы, по его истечении таблица считается 
устаревшей и скачивается заново.
604800 ;ttl - параметр time-to-live. Время в секундах, которое указывает серверу сколько хранить в кэше данные 
таблицы. По его истечении срвер перечитывает таблицу заново.
//Файл /var/named/sun.urix.zone

$ttl 38400
sun.urix.ru. IN SOA solaris.sun.urix.ru. root.solaris.sun.urix.ru. (

2004071001 ;serial
108000 ;refresh
1800 ;retry
1209600 ;expiry
604800) 

sun.urix.ru.	        IN	NS	        solaris.sun.urix.ru.
 
sun.urix.ru.	        IN	MX10	        solaris.sun.urix.ru.
 
solaris			IN	A		192.168.6.1
  
class			IN	A		192.168.6.10

slave			IN 	A		192.168.6.2

www 			IN	CNAME		solaris

 
//Файл /var/named/192.168.6.zone 

$ttl 38400
6.168.192.in-addr.arpa. IN SOA solaris.sun.urix.ru. root.solaris.sun.urix.ru. (

2004012001 ;serial
108000 ;refresh
1800 ;retry
1209600 ;expiry
604800)

6.168.192.in-addr.arpa.                         IN 	         NS 	        solaris.sun.urix.ru.
 
1						IN              PTR		solaris.sun.urix.ru.
 
2						IN		PTR		slave.sun.urix.ru.
 
10						IN		PTR		class.sun.urix.ru.
 




NS - указывает name-серверы для данной зоны


MX - указывает на почтовые серверы домена, очередность - 0,10,20,


A  -"прямая" запись ресурса (имя-адрес)


PTR - "реверсивная" запись (адрес-имя)


CNAME - псевдоним


//Файл /var/named/san.urix.zone

$ttl 38400
san.urix.ru. IN SOA solaris.san.urix.ru. root.solaris.san.urix.ru. (

2008061601 ;serial
108000 ;refresh
1800 ;retry
1209600 ;expiry
604800) 

san.urix.ru.	       IN	 NS	       solaris.san.urix.ru.
 
sun.urix.ru.	        IN	MX10	       solaris.san.urix.ru.
 
solaris			IN	A		192.168.7.1
  
class			IN	A		192.168.6.10

slave			IN 	A		192.168.6.2

www 			IN	CNAME		solaris





//Файл /var/named/192.168.7.zone 
$ttl 38400
7.168.192.in-addr.arpa. IN SOA solaris.san.urix.ru.  root.solaris.san.urix.ru. (

2008051501 ;serial
108000 ;refresh
1800 ;retry
1209600 ;expiry
604800)

7.168.192.in-addr.arpa.                         IN 	         NS 	        solaris.sun.urix.ru.
 
1						IN              PTR	        solaris.san.urix.ru.
 
2						IN		PTR		slave.sun.urix.ru.
 
10						IN		PTR		class.sun.urix.ru.

Точка в конце некоторых названий означает, что не нужно дописывать название доменной зоны. 
Если ее не ставить, то сервер автоматически допишет название домена для которого данная таблица 
и составляется. Не забывайте про это. Вот и все, если таблицы готовы, то теперь можно и запускать
 ваш сервер. Как это делать мы уже рассмотрели выше.
Hosted by uCoz