Bind
- Демон (сервис) Bind называется named.
Настройка
- Добавляем DNS серверы в /etc/resolv.conf (для Debian 4 в /etc/resolvconf/resolv.conf.d/base):
search mynetwork.ru nameserver 127.0.0.1 nameserver 217.116.158.3 nameserver 10.0.0.85
- В Debian bind не чрутится, поэтому все пути задаём относительно корня системы, т.е. "/". В Alt Linux bind делает chroot, поэтому нужно учесть, что опции directory и include задаются относительно корневого каталога bind, т.е. /var/lib/bind/.
Опции демона named можно выделить в отдельный файл /etc/bind/named.conf.options и подключить его к основному named.conf.options. Нам нужно внести следующие изменения:
1) Создаём группу SVOY, чтобы к внутренней DNS зоне (local.net) имели доступ только пользователи нашей сети.
2) Журналы named очень плодовиты, поэтому будем писать их в отдельные файлы, при этом журнал безопастности будем вести отдельно. Для этого определяем два канала: по умолчанию и по безопасности. Нам хватит 4 файла для каждого журнала, и следующий будет заполняться, когда текущий достигнет 100 Kb. Если всё же хочется видеть записи в системном журнале, то уменьшить объём можно убрав определённые категории сообщений, определив параметр logging, например, так:
logging { category lame-servers { null; }; };
3) Перечисляем DNS сервера:
- 10.0.0.85 в нашей сети и обслуживает только локальную сеть, находится на Windows сервере;
- 217.116.129.9 и 217.116.158.3 - внешние DNS серверы.
После этих добавлений /etc/bind/named.conf.options будет выглядеть следующим образом:
options {
forwarders { #на какие серверы пересылать запрос, если наш сервер сам не в состоянии определить имя или IP-адрес запроса клиентов
8.8.8.8;
10.0.0.245;
10.0.0.251;
};
listen-on { # указывает на каких интерфейсах вести прослушивание 53 порта
10.0.254.45;
127.0.0.1;
};
allow-query { localhost; 127.0.0.1/8; 10.0.0.0/8; }; # разрешать запросы к серверу
allow-recursion { localhost; 127.0.0.1/8; 10.0.0.0/8; }; # разрешать реккурсивные запросы
directory "/var/cache/bind";
auth-nxdomain no; # conform to RFC1035
};
acl all { any;};
acl SVOY {
192.168.100.16/28;
10.0.0.0/24;
10.0.10.0/24;
10.0.20.0/24;
};
logging {
channel default_ch {
file "/var/log/named/named.log" versions 4 size 100k;
severity info;
print-time yes;
print-category yes;
};
channel security_ch {
file "/var/log/named/security.log" versions 4 size 100k;
severity info;
print-time yes;
print-category yes;
};
category default { default_ch; };
category security { security_ch; };
};
server 217.116.158.3 {
bogus yes;
transfers 3;
transfer-format one-answer;
};
server 217.116.129.9 {
bogus yes;
transfers 3;
transfer-format one-answer;
};
server 10.0.0.85{
bogus yes;
transfers 3;
transfer-format one-answer;
};
- Создаём директорию для журналов и для хранения зон:
# mkdir /var/log/named /etc/bind/zone
В случае если named чрутиться, создаём директорию для логов и делаем на неё ссылку:
# mkdir -p /var/lib/bind/var/log/named # ln -s /var/lib/bind/var/log/named /var/log/named
- Опишем поддерживаемые нами DNS зоны в конце файла /etc/bind/named.conf.local или local.conf. Создадим вторичные зоны для neighbour.ru и локальной сети local.net и основную зону для нашей новой сети teo.mynetwork.ru:
zone "neighbour.ru" {
type slave;
file "/etc/bind/zone/neighbour.ru.slave";
masters { 81.211.66.200; };
allow-query { any; };
};
zone "local.net" {
type slave;
file "/etc/bind/zone/local.net";
masters port 53 { 10.0.0.85; };
allow-transfer { none; };
allow-query { SVOY; };
};
// Zones for domain teo.mynetwork.ru
zone "teo.mynetwork.ru" {
type master;
file "/etc/bind/zone/teo.mynetwork.ru";
allow-transfer { any; };
allow-query { any; };
};
zone "100.168.192.in-addr.arpa" {
type master;
file "/etc/bind/zone/teo.reversed";
};
- Создаём указанные файлы описания зон.
Файл neighbour.ru.slave создастся сам при связи с masters. Файл /etc/bind/zone/teo.mynetwork.ru изменяем по усмотрению. Далее при любых изменениях в этом файле увеличиваем серийный номера, который, строго говоря, может быть просто счётчиком, как в Windows, либо, как принято в Bind будет отражать дату изменения зоны (у нас формат серийного номера: YYYYMMDDNN, где NN номер изменения зоны в указанный день, для случая когда мы меняем зону по несколько раз на дню):
$ORIGIN .
$TTL 86400 ; 1 day
teo.mynetwork.ru IN SOA teo.mynetwork.ru. postmaster.teo.mynetwork.ru. (
2004100506 ; serial
86400 ; refresh (1 day)
21600 ; retry (6 hours)
3600000 ; expire (5 weeks 6 days 16 hours)
3600 ; minimum (1 hour)
)
IN NS teo.mynetwork.ru.
IN NS neighbour.ru.
MX 10 teo.mynetwork.ru.
$ORIGIN teo.mynetwork.ru.
@ IN A 192.168.100.18
ns A 192.168.100.18
* MX 10 teo.mynetwork.ru.
- Файл /etc/bind/zone/my.reversed изменяем по усмотрению:
$ORIGIN .
$TTL 86400 ; 1 day
100.168.192.in-addr.arpa IN SOA teo.mynetwork.ru. postmaster.teo.mynetwork.ru. (
2004100504 ; serial
28800 ; refresh (8 hours)
14400 ; retry (4 hours)
3600000 ; expire (5 weeks 6 days 16 hours)
86400 ; minimum (1 day)
)
IN NS teo.mynetwork.ru.
IN NS neighbour.ru.
$ORIGIN 100.168.192.in-addr.arpa.
$TTL 3600 ; 1 hour
18 PTR teo.mynetwork.ru.
- В дальнейшем нужно будет не забыть создать почтовый ящик (или лучше алиас) postmaster для человека, ответственного за поддержание зоны. Перезапускаем bind:
# /etc/init.d/bind9 restart
- Теперь от клиента можно выходить в Интернет. Для этого указываем в настройках IP протокола на машине клиента в качестве шлюза и DNS сервера, локальный IP адрес нашего нового сервера, т.е. 10.0.0.2. Заодно проверим от клиента созданную зону. В командной строке введём:
ping teo.mynetwork.ru
- Чтобы проверить правильно ли создана обратная зона нужно с другого компьютера (*nix) выполнить:
host 192.168.100.18
- Чтобы можно было забирать зону с 10.0.0.85 дадим там на это разрешение (вспомним, что это Windows):
Пуск - Программы - Администрирование - DNS - Свойства (контекстное меню сервера) - Пересылка (закладка) - Добавить
- После того как убедились, что всё работает нормально, можно добавить демон в автозапуск.
Работа над ошибками
Не создаются файлы
Если при запуске DNS cервера не копируются slave зоны, а в журнале появляются записи:
May 03 16:33:23.403 general: dumping master file: tmp-XXXXvmmNBt: open: permission denied May 03 16:33:23.403 xfer-in: transfer of 'coke.com/IN' from 10.0.0.85#53: failed while receiving responses: permission denied
то нужно изменить владельца каталога zone на named.named:
# chown -R named.named /var/lib/bind/zone
а если ещё и не создаётся журнал, то изменить владельца var
# chown -R named.named /var/lib/bind/var
Ссылки
Руководство (мануал, справка) на русском языке:
man resolver
- DNS - ДОМЕННАЯ СЛУЖБА ИМЕН - хорошая обзорная статья с примерами от Маскима Мамаева
- Bog BOS: DNS сервер BIND - более подробная и не менее хорошая статья
- DNS-сервер — как это работает