[Полноценный сервер — Часть6] Установка BIND9 на Ubuntu server 10.10 – 11.04

 В данной статье я расскажу, как настроить DNS сервер и зоны для вашего сайта. Так же тут будет приведен пример подключения «почты для домена», которые предоставляет и google и yandex.

 DNS (англ. Domain Name System — система доменных имён) — компьютерная распределенная система для получения информации о доменах. Чаще всего используется для получения IP-адреса по имени хоста (компьютера или устройства), получения информации о маршрутизации почты, обслуживающих узлах для протоколов в домене (SRV-запись).

 BIND (Berkeley Internet Name Domain, до этого: Berkeley Internet Name Daemon) — открытая и наиболее распространённая реализация DNS-сервера, обеспечивающая выполнение преобразования DNS-имени в IP-адрес и наоборот.

 Google Apps — это среда, которая предоставляет следующие средства совместной работы: уже ставший популярным почтовый сервис GMail, клиент обмена мгновенными сообщениями Google Talk (фактически сервис полностью пригоден для общения с любым jabber-пользователем), календарь Google Calendar, средства для работы с документами и электронными таблицами Google Docs & Spreadsheets, «центральную страницу» — место для удобного размещения той информации, которая будет общей для всех пользователей, редактор страниц от Google, который позволяет быстро создать и опубликовать нужную информацию.

 Яндекс.Почта для домена — это бесплатный сервис, который даёт возможность иметь адрес вида [email protected] (где name — любое выбранное вами имя, а yourdomain.ru — имя вашего домена), используя при этом удобный веб-интерфейс и другие преимущества Яндекс.Почты (фильтрация спама, автоматическая проверка писем на вирусы и др.).

С теорией покончили. Приступим к установке.

sudo apt-get install bind9

Теперь останавливаем bind9:

sudo /etc/init.d/bind9 stop

Из соображений безопасности лучше запускать Bind в chroot среде. Для этого мы отредактируем файл /etc/default/bind9 (добавляем строку о среде chroot которая будет находится  в /var/lib/named)…

sudo vim /etc/default/bind9

приводим файл к виду:

OPTIONS="-u bind -t /var/lib/named"
# Set RESOLVCONF=no to not run resolvconf
RESOLVCONF=yes

Далее создаем все необходимые директории для корректной работы

sudo mkdir -p /var/lib/named/etc
sudo mkdir /var/lib/named/dev
sudo mkdir -p /var/lib/named/var/cache/bind
sudo mkdir -p /var/lib/named/var/run/bind/run

Переместим директорию с конфигурацией bind9 из /etc в /var/lib/named/etc

sudo mv /etc/bind /var/lib/named/etc

Создадим символическую ссылку на новую директорию с конфигами bind, чтобы мы могли обновляться без проблем.

sudo ln -s /var/lib/named/etc/bind /etc/bind

Теперь создаем null и random девайсы и выставим правильные права на директории:

sudo mknod /var/lib/named/dev/null c 1 3
sudo mknod /var/lib/named/dev/random c 1 8
sudo chmod 666 /var/lib/named/dev/null /var/lib/named/dev/random
sudo chown -R bind:bind /var/lib/named/var/*
sudo chown -R bind:bind /var/lib/named/etc/bind

Для старых версий LINUX, где используется sysklogd изменяем стартовый скрипт демона sysklogd, для того чтобы сообщения от bind попадали в syslog. Для этого редактируем файл:

sudo vim /etc/init.d/sysklogd

Изменим там строчку SYSLOGD=”-u syslog” на SYSLOGD=”-u syslog -a /var/lib/named/dev/log”

SYSLOGD="-u syslog -a /var/lib/named/dev/log"

и перезагрузим демон sysklogd

sudo /etc/init.d/sysklogd restart

На этом настройка BIND9 окончена. Запускаем и смотрим нет ли ошибок:

sudo /etc/init.d/bind9 start

Если возникнет ошибка Bind: loading from master file managed-keys.bind failed, необходимо создать файл managed-keys.bind

touch /etc/namedb/managed-keys.bind

Если возникнет ошибка named[9410]: network unreachable resolving ‘NS1.SITE.RU/A/IN’: 2001:7fe::53#53, необходимо добавить строчку OPTIONS=»-4″ в файл /etc/init.d/bind9

sudo vim /etc/init.d/bind9

Если BIND9 вовсе не запускается, а в логе есть ошибка open: /etc/bind/named.conf: permission denied, необходимо убрать apparmor из автозагрузки…

sudo /etc/init.d/apparmor stop
sudo update-rc.d -f apparmor remove

Если все запустилось, то приступаем к настройке зон. Допустим у нас есть 2 домена (site.ru и site2.ru). Для начала создадим файл конфигурации для наших будущих зон:

sudo touch /var/lib/named/etc/bind/sites-zones.conf  
chown bind:bind /var/lib/named/etc/bind/sites-zones.conf

В файле конфигурации зон укажем путь до файла зон…

vim /var/lib/named/etc/bind/named.conf

приведя файл к следующему виду:

include "/etc/bind/named.conf.local";
include "/etc/bind/sites-zones.conf";

Теперь открываем файл наших зон:

sudo vim /var/lib/named/etc/bind/named.conf.local

и приводим к следующему виду (не забываем, у нас 2 домена):

zone "example.com" {
     type master;
     file "site1.ru";
};
zone "example.com" {
     type master;
     file "site2.ru";
};

теперь создадим директорию и файл с нашими зонами:

sudo mkdir/var/lib/named/etc/bind/sites-zones/
sudo touch /var/lib/named/etc/bind/sites-zones/site1.ru
sudo touch /var/lib/named/etc/bind/sites-zones/site2.ru
sudo chown bind:bind /var/lib/named/etc/bind/sites-zones/example.com

Далее отредактируем зоны для домена site1.ru:

sudo vim /var/lib/named/etc/bind/sites-zones/site1.ru

И приведем его к следующему виду, с примером подключенного сервиса pdd.yandex.ru:

$ORIGIN site1.ru.
$TTL 86400 ; 1 day
@ IN SOA site1.ru. master.site1.ru. (
     2008291104 ; serial
     10800 ; refresh (3 hours)
     3600 ; retry (15 minutes)
     3600000 ; expire (1 week)
     86400 ; minimum (1 day)
)
@      IN   NS      ns1.site1.ru.
@      IN   NS      ns2.site1.ru.
ns1    IN    A      172.16.0.1
ns     IN    A      172.16.0.2
@      IN    A      10.10.10.110
www    IN    A      10.10.10.110
*      IN    A      10.10.10.110
forum  IN    A      10.10.10.112
site1.ru. IN MX 10 mx.yandex.ru.
@ IN TXT "v=spf1 redirect=_spf.yandex.ru"
yamail-всякиесимвылы IN CNAME mail.yandex.ru.
mail IN CNAME domain.mail.yandex.net.
_xmpp-client._tcp  IN   SRV    20   0   5222   site1-xmpp.ya.ru.
_xmpp-server._tcp  IN   SRV    20   0   5269   site1-xmpp.ya.ru.

Теперь отредактируем зону для site2.ru, с использованием сервиса Google Apps:

$ORIGIN site2.ru.
$TTL 86400 ; 1 day
@ IN SOA site2.ru. master.site2.ru. (
     2008291104 ; serial
     10800 ; refresh (3 hours)
     3600 ; retry (15 minutes)
     3600000 ; expire (1 week)
     86400 ; minimum (1 day)
)
@      IN   NS      ns1.site1.ru.
@      IN   NS      ns2.site1.ru.
ns1    IN    A      172.16.0.1
ns     IN    A      172.16.0.2
@      IN    A      10.10.10.111
www    IN    A      10.10.10.111
*      IN    A      10.10.10.111
forum  IN    A      10.10.10.114
site2.ru. IN  TXT "v=spf1 a mx a:site2.ru ip4:216.38.22.109 include:aspmx.googlemail.com ~all"
site2.ru. IN MX 1 aspmx.l.google.com.
site2.ru. IN MX 5 alt1.aspmx.l.google.com.
site2.ru. IN MX 5 alt2.aspmx.l.google.com.
site2.ru. IN MX 10 aspmx2.googlemail.com.
site2.ru. IN MX 10 aspmx3.googlemail.com.
siyte2.ru. IN MX 10 aspmx4.googlemail.com.
site2.ru. IN MX 10 aspmx5.googlemail.com.
mail.site2.ru. IN CNAME ghs.google.com.
calendar.site2.ru. IN CNAME ghs.google.com.
docs.site2.ru. IN CNAME ghs.google.com.
start.site2.ru. IN CNAME ghs.google.com.
(Конфиг взял в инете, так как данный сервис не испольую, могут быть косяки)

Далее обновляем конфигурацию

rndc reload

и проверяем

nslookup   site1.ru   127.0.0.1

Должен выдать в ответ:

Server: 127.0.0.1
Address: 127.0.0.1#53
Name: site1.ru
Address: 10.10.10.111

Проверим другую зону:

nslookup forum.site1.ru 127.0.0.1

должен выдать в ответ:

Server: 127.0.0.1
Address: 127.0.0.1#53
Name: site1.ru
Address: 10.10.10.114

Проверим еще одну зону:

nslookup   site2.ru   127.0.0.1

должен выдать в ответ:

Server: 127.0.0.1
Address: 127.0.0.1#53
Name: site1.ru
Address: 10.10.10.111

и далее проверяем так все свои зоны.

На этом настройка сервера завершена.

Материалы, которые использовались для написания данного поста: