Современные
информационные технологии/Вычислительная техника и программирование
Мясищев А.А.
Хмельницкий национальный
университет, Украина
Настройка сервера имен для Unix FreeBSD 7.3-RELEASE
В
крупных организациях, например в университетах, обычно устанавливают сервера
имен (DNS сервера). Сервера имён обычно
используются трех видов: авторитетный
сервер имён, вторичный и кэширующий сервера имён.
Авторитетный сервер имён
нужен, когда:
1.нужно предоставлять информацию о DNS
остальному миру, отвечая на запросы.
2. зарегистрированы домены такие как, как tup.km.ua
и
khnu.km.ua и в этих доменах требуется
поставить имена машин в соответствие с их адресами IP.
3. резервный (slave) или вторичный сервер имён должен
отвечать на запросы, копируя зону с авторитетного (первичного) сервера имен.
Вторичный сервер имен
используется, когда не досягаем первичный сервер имен. В этом случае с него копируется информация о зоне.
Кэширующий сервер имён нужен,
когда локальный сервер DNS может кэшировать информацию и
отвечать на запросы быстрее, чем это происходит при прямом опросе внешнего
сервера имён. Например, если кто-нибудь запрашивает информацию о www.lucky.net, то обычно резолвер обращается к серверу имён
провайдера, посылает запрос и ожидает ответа. С локальным кэширующим сервером DNS
запрос во внешний мир будет делаться всего один раз. Каждый дополнительный
запрос не будет посылаться за пределы локальной сети, потому что информация уже
будет иметься в кэше.
В работе
рассматривается создание авторитетного сервера имен для зон tup.km.ua и khnu.km.ua, которые являются зарегистрированными
на сервере зоны km.ua, кэширующего сервера имен, а также
сервера slave, обслуживающего локальную зону tup. Эти сервера имен работают в
Хмельницком национальном университете.
Рис.1
На
рис.1 представлена схема фрагмента сети, из которой понятно расположение DNS
серверов и их взаимодействие. Интерфейс 212.111.198.10 DNS сервера server1 подключен к Интернет провайдеру URAN. Сервера имен работают под управлением
Unix FreeBSD 7.3-RELEASE. По умолчанию в этой
операционной системе используется BIND ver.9.6. В качестве демона BIND выступает
программа named. В каталоге /etc/namedb будем располагать файлы
зон, которые содержат информацию о зоне DNS, за которую отвечает сервер имён. Конфигурационным файлом демона named является файл
/etc/namedb/ named.conf.
Сервер имен устанавливается по
умолчанию при установке операционной системы. Для его запуска необходимо в файл
/etc/rc.local поместить команду:
/usr/sbin/named -c
/etc/namedb/named.conf
Перед запуском необходимо создать конфигурационный
файл /etc/namedb/ named.conf и файлы
зон, которые обслуживает сервер имен.
Сформулируем задачу следующим образом:
1.запустить авторитетный сервер имен на узле
212.111.198.33 для зон tup.km.ua и khnu.km.ua
2. запустить
кэширующий сервер имен на 212.111.198.33
3. запустить
вторичный сервер имен на 212.111.198.33 для зоны tup и зоны 20.172.in-add.arpa. Авторитетным сервером для этих зон
является узел 172.20.0.149
4. разрешить
использовать DNS BIND только для следующих узлов и сетей:
127.0.0.1; 172.21.8.0/28;
172.20.0.149; 172.20.6.37; 172.20.4.200; 212.111.198.32/27; 212.111.198.10; 212.109.57.237; 192.168.15.126;
195.230.134.99
4. разрешить
опрашивать другие DNS с исходящим портом 53 по udp через произвольный
интерфейс
5. разрешить
прослушивание следующих интерфейсов 127.0.0.1;
212.111.198.33; 212.111.198.10 у созданного DNS сервера.
7.разрешить
передачу зон только следующим вторичным серверам - 78.152.160.5; 212.111.192.35;
172.20.0.149.
6. файл
корневых серверов должен иметь имя named.root
Для выполнения перечисленных выше условий конфигурационный
файл /etc/namedb/
named.conf будет иметь следующий вид:
acl ACCESS {
127.0.0.1;172.21.8.0/28;172.20.0.149; 172.20.6.37; 172.20.4.200; 212.111.198.32/27;212.111.198.10;212.109.57.237;192.168.15.126;195.230.134.99;
};
options {
query-source address * port 53;
directory "/etc/namedb";
allow-recursion { ACCESS; };
allow-transfer{78.152.160.5; 212.111.192.35;
172.20.0.149;};
pid-file
"/var/run/named/pid";
dump-file
"/var/run/named_dump.db";
statistics-file "/var/run/named.stats";
listen-on {
127.0.0.1; 212.111.198.33;212.111.198.10; };
};
zone "." { type hint; file
"/etc/namedb/named.root"; };
zone
"0.0.127.IN-ADDR.ARPA" {
type master;
file "db.127.0.0";
};
zone "tup.km.ua" {
type master;
file "db.tup.km.ua";
};
zone "khnu.km.ua" {
type master;
file "db.khnu.km.ua";
};
zone "20.172.in-addr.arpa"
{
type slave;
file "dbc.20.172";
masters {
172.20.0.149;
};
};
zone "tup" {
type slave;
file "dbc.tup";
masters {
172.20.0.149;
};
};
Здесь можно выделить следующие опции:
query-source address
* port 53; - означает, что
если BIND не будет знать ответа на запрос, то он будет опрашивать
другие DNS сервера с исходящим портом 53 по
udp через свой произвольный интерфейс (*);
acl ACCESS
{ 127.0.0.1;172.21.8.0/28;172.20.0.149; 172.20.6.37; 172.20.4.200;
212.111.198.32/27;212.111.198.10;212.109.57.237;192.168.15.126;195.230.134.99;
}; allow-recursion { ACCESS;
}; - правило, разрешающее использовать BIND только с определенных сетей,
хостов.
allow-transfer{78.152.160.5; 212.111.192.35;
172.20.0.149;}; - означает разрешение на передачу зоны всем перечисленным здесь
компьютерам (вторичным серверам DNS).
listen-on { 127.0.0.1;
212.111.198.33;212.111.198.10; }; - разрешение на прослушивание перечисленных в
директиве интерфейсов сервера DNS server1.
Для каждого
новой зоны, которую будет обслуживать сервер имён, в файл named.conf должна быть добавлена запись.
Например^
zone "khnu.km.ua" {
type master;
file "db.khnu.km.ua";
};
Эта запись означает, что зона
является первичной, что отражается в поле type (
master
)
, и информация о зоне хранится в файле /etc/namedb/master/db.khnu.km.ua, что
указывается в поле file
.
zone "tup" {
type slave;
file "dbc.tup";
masters {
172.20.0.149;
};
};
Здесь зона tup
является вторичной, что определяется тиром type slave.
Информация об этой зоны хранится в файле dbc.tup, который
копируется с основного сервера для этой зоны с адресом 172.20.0.149
(рис.1). Если и когда основной сервер
имён выходит и строя или недосягаем, то скачанная информация о зоне будет
находиться на вторичных серверах, и они смогут обслуживать эту зону.
zone "." { type hint; file
"/etc/namedb/named.root"; };
В этой записи настраивается работа кэширующего сервера
имен. В файле /etc/namedb/named.root хранятся сервера, которые отвечают за корневую зону.
Кэширующий сервер имён - это сервер имён, не отвечающий ни за какую зону. Он
просто выполняет запросы от своего имени и сохраняет результаты для последующего
использования.
Фрагменты файлов зон tup.km.ua и khnu.km.ua представлены ниже.
Зона tup.km.ua:
tup.km.ua. IN
SOA gamma.tup.km.ua.
alex.tup.km.ua. (2008020136 7200 1800 1209600 86400)
IN NS
gamma.tup.km.ua.
IN
NS ns.ic.km.ua.
IN NS
ns2.uran.net.ua.
;
tup.km.ua. IN
MX 10 mailhub
gamma IN A 212.111.198.33
hnu IN A 212.111.198.10
IN MX 10 mailhub
library IN A 212.111.198.46
cel IN A 212.111.198.45
ikc1 IN A 212.111.198.35
prk IN A 212.111.198.38
mailhub IN A 212.111.198.34
IN MX 10 mailhub
IN MX 30 ns.km.ua.
img IN A 212.111.198.39
sens IN A 212.111.198.40
msn IN A 212.111.198.50
IN MX 10 mailhub
www
IN CNAME ikc1
Зона khnu.km.ua:
khnu.km.ua.
IN SOA gamma.tup.km.ua. alex.tup.km.ua.
(2011041202 7200 1800 1209600 86400)
IN NS gamma.tup.km.ua.
IN NS ns.ic.km.ua.
;
rout
IN A 78.152.183.33
nat
IN A 78.152.183.34
ed
IN A 78.152.183.35
nu
IN A 78.152.183.36
prk
IN A 212.111.198.38
msn IN
A 212.111.198.50
isu1
IN A 212.111.198.58
library
IN A 212.111.198.46
www
IN CNAME nu
Из
файлов видно, что зоны имеют формат
recordname IN recordtype value
Наиболее
часто встречающиеся записи DNS имеют следующие
значения:
SOA
- начало зоны ответственности;
NS
- авторитетный сервер имен;
A
- адрес хоста;
CNAME -
каноническое имя для алиаса;
MX
- обмен почтой.
Самая
первая строка
khnu.km.ua. IN SOA
gamma.tup.km.ua.
alex.tup.km.ua. (2011041202 7200 1800 1209600 86400)
содержит
следующие записи:
khnu.km.ua. – имя домена;
gamma.tup.km.ua.
– основной (авторитетный) сервер имен для этой зоны;
alex.tup.km.ua. – человек, отвечающий за эту зону(его электронный
адрес alex@tup.km.ua);
2011041202 - последовательный номер файла. При каждом
изменении файла зоны это число должно увеличиваться. Обычно оно указывает дату
и номер последнего изменения зоны. Последовательный номер важен, так как он
служит для того, чтобы вторичные серверы узнавали об обновлении зоны.
7200
– интервал времени в секундах, после которого вторичный (slave)
сервер имен обратится к первичному серверу имен для того, чтобы перечитать
зону.
1800
– интервал времени для повторной попытки, если предыдущая операция не удалась.
1209600
– время, после которого вторичный сервер имен прекращает раздавание зоны после
выключения первичного сервера имен.
86400
– время кэширования ответов соответствия между ip адресом и доменным
именем.
zone "0.0.127.IN-ADDR.ARPA"
{
type master;
file
"db.127.0.0";
};
Здесь
описывается локальная зона. Файл db.127.0.0
имеет
вид:
@
IN SOA gamma.tup.km.ua. hostmaster.gamma.tup.km.ua.
(2 10800 3600 604800 86400)
IN NS gamma.tup.km.ua.
1.0.0.127.IN-ADDR.ARPA. IN
PTR localhost.
После запуска авторитетного (основного) сервера
имен Интернет провайдер на своем сервере имен ns.ic.km.ua
должен
поднять зону, например khnu.km.ua
как на вторичном севере. Для этого в файл named.conf
он должен
добавить:
zone "khnu.km.ua"
{
type slave;
file "/etc/namedb/slave/khnu.km.ua";
masters { 212.111.198.33; };
};
А
на сервере, который отвечает за зону km.ua
необходимо разрешить делегирование зоны khnu.km.ua:
; OK-UNTIL 20120105151916
khnu IN NS ns.ic.km.ua.
IN
NS gamma.tup.km.ua.
После выполненных представленных выше настроек и запуска
сервера DNS зоны будут видны с
любого компьютера сети Интернет.
Литература
1. Chern
Lee, Tom Rhodes, Daniel Gerzo.Руководство FreeBSD. Domain
Name System (DNS). http://www.freebsd.org/doc/ru/books/handbook/network-dns.html