[Полноценный сервер — Часть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
и далее проверяем так все свои зоны.
На этом настройка сервера завершена.
Материалы, которые использовались для написания данного поста:
- http://sudouser.com/ustanovka-i-nastrojka-dns-servera-bind9-ubuntu-debian-howto.html
- http://habrahabr.ru/post/45921/
- http://aizaro.ru/services/bind/managed-keys.html
- http://xgu.ru/wiki/%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_DNS-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0_BIND
- http://www.howtoforge.com/two_in_one_dns_bind9_views
- http://veseloff.net/21.html
- http://flex-plex.ru/?p=45
- http://www.virtualmin.com/node/14904
- http://xpoint.ru/forums/computers/os/unix/thread/44539.xhtml
- http://www.cyberciti.biz/tips/linux-iptables-12-how-to-block-or-open-dnsbind-service-port-53.html
- http://forum.asplinux.ru/read.php?3,107131