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-сервер — как это работает