Bind

From SysadminWiki.ru
Jump to: navigation, search
  • Демон (сервис) Bind называется named.

Настройка

Для Debian 4 потребуется установленный пакет resolvconf.
  • Добавляем 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