====== DNS сервер (BIND9) ======
==== Введение ====
Я так думаю, что Вы, мои предыдущие статьи про домашний сервер прочитали.
Поэтому, я не буду расписывать, как его устанавливать.
Просто, дам ссылки на эти первые статьи о домашнем сервере:
[[http://www.ubuntu.liski.su/index.php?page=77]]
[[http://www.ubuntu.liski.su/index.php?page=81]]
В данной конфигурации, использовались материалы следующей статьи:
[[http://...../]]
За что ее авторам огромная благодарность!
===== Шаг 1: Установка необходимых пакетов =====
Если, не активирован ROOT:
sudo su
sudo passwd root
Сделаем ссылочку на bash на sh:
ln -sf /bin/bash /bin/sh
Уберем apparmor (чего то, с ним пока не все ладится!)
/etc/init.d/apparmor stop
update-rc.d -f apparmor remove
Устанавливаем основные пакеты:
apt-get install ssh openssh-server
sudo apt-get install bind9
Что бы была возможность протестировать наш DNS сервер установим пакет:
sudo apt-get install dnsutils
===== Шаг 2: Конфигурируем Сеть =====
Редактируем файл **/etc/network/interfaces**, в моем примере, я буду использовать IP адрес 192.168.0.100:
gedit /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.0.100
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1
Перезапустим сеть:
/etc/init.d/networking restart
Теперь отредактируем файл **/etc/hosts**. Правим и проверяем (для примера используется домен- example.com имя сервера mailserver, т.е. полное имя носта, будет mailserver.example.com):
gedit /etc/hosts
127.0.0.1 example.com localhost.localdomain localhost
192.168.0.100 example.com mailserver
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
Выполним команду:
echo example.com > /etc/hostname
/etc/init.d/hostname.sh start
Проверим, запустив:
hostname
hostname -f
Ответ должен быть: **example.com**
===== Шаг 3: Конфигурируем DNS сервер для безопасной работы =====
Если ваш сервер доменных имен будет работать в сети Интернет, то рекомендуется произвести следующие подготовительные шаги, чтобы сделать его работу безопасной.
Остановим сервер:
/etc/init.d/bind9 stop
Теперь отредактируем файл /etc/default/bind9 , чтобы корневой директорией (chrooted) для сервера была папка: /var/lib/named. Заменим строку: OPTIONS="-u bind" строкой со следующим содержанием: OPTIONS="-u bind -t /var/lib/named":
gedit (vi,nano) /etc/default/bind9
После редактирования и сохранения, файл должен выглядеть так:
OPTIONS="-u bind -t /var/lib/named"
# Set RESOLVCONF=no to not run resolvconf
RESOLVCONF=yes
В папке /var/lib создаем следующие директории:
mkdir -p /var/lib/named/etc
mkdir /var/lib/named/dev
mkdir -p /var/lib/named/var/cache/bind
mkdir -p /var/lib/named/var/run/bind/run
Переносим папку с конфигурационными файлами сервера из папки /etc в папку: /var/lib/named/etc:
mv /etc/bind /var/lib/named/etc
Создаем ссылку на эту папку в разделе /etc, чтобы в будущем не было проблем с обновлениями:
ln -s /var/lib/named/etc/bind /etc/bind
Создаем null b random устройства, и присваиваем нужные права:
mknod /var/lib/named/dev/null c 1 3
mknod /var/lib/named/dev/random c 1 8
chmod 666 /var/lib/named/dev/null /var/lib/named/dev/random
chown -R bind:bind /var/lib/named/var/*
chown -R bind:bind /var/lib/named/etc/bind
Для правильной работы системных сообщений о работе сервера подправим строчку в файле: /etc/default/syslogd
gedit (vi,nano) /etc/default/syslogd
заменим строчку SYSLOGD="" на: SYSLOGD="-a /var/lib/named/dev/log":
Содержание файла syslogd должно выглятеть так:
#
# Top configuration file for syslogd
#
#
# Full documentation of possible arguments are found in the manpage
# syslogd(8).
#
#
# For remote UDP logging use SYSLOGD="-r"
#
SYSLOGD="-a /var/lib/named/dev/log"
Перестартуем logging демона:
/etc/init.d/sysklogd restart
Запустим сервер BIND, и проверим файл /var/log/syslog на возможные ошибкиs:
/etc/init.d/bind9 start
gedit /var/log/syslog
Если все нормально приступаем к конфигурированию самого сервера DNS/
===== Шаг 4: Конфигурируем DNS сервер =====
Немного пояснений:
Файлы конфигурации DNS сервера хранятся в каталоге: /etc/bind.
Основной конфигурационный файл /etc/bind/named.conf.
Строки этого файла сообщают DNS серверу, где искать файлы настроек.
Опции для правильной работы сервера находятся в файле: /etc/bind/named.conf.options.
При загрузке сервер обязательно, просматривает эти опции.
В файле /etc/bind/db.root находится описание имен корневых серверов DNS в сети Интернет.
Имена серверов могут менятся с течением времени, поэтому файл может менятся при обновлении пакета bind9.
На данный момент времени сохраняем его, как есть.
Для своей локальной сети вы можете настроить один и тот же сервер в качестве сервера кэширования имен (caching name server), первичного сервера имен (primary master) , и вторичного сервера имен
(secondary master). Или отдельно, как первичный или вторичный, в любом случае он может быть использован вами, как сервер кэширования имен для ваших хостов в локальной сети.
Настраиваем сервер кэширование имен.
По умолчанию, в файле конфигурации строки настроек сервера DNS, как кэширующего- закомментированы.
Все, что требуется, это просто добавить IP-адреса DNS-серверов вашего провайдера.
Просто раскомментируйте и отредактируйте следующие строки в файле: /etc/bind/named.conf.options:
gedit /etc/bind/named.conf.options
В качестве примера я приведу содержание моего файла, где записаны ближайшие DNS сервера моего провайдера:
forwarders {
80.82.32.9;
80.82.33.65;
};
замените IP адреса серверов DNS на свои и перезапустите свой сервер:
sudo /etc/init.d/bind9 restart
===== Шаг 4: Создаем первичный сервер (Primary Master) =====
Здесь, я буду использовать в качестве примера доменное имя example.com.
Вы можете заменить его на своё. Например, для домашней сети: home.net.
= Создаем Forward Zone File. =
Редактируем файл /etc/bind/named.conf.local
gedit /etc/bind/named.conf.local
добавляем туда строки:
zone "example.com" {
type master;
file "/etc/bind/db.example.com";
};
Создадим файл: /etc/bind/db.example.com, используя в качестве шаблона, уже имеющийся файл: /etc/bind/db.local:
sudo cp /etc/bind/db.local /etc/bind/db.example.com
Теперь подредактируем новый файл нашей зоны:
Заменим слово localhost на свое доменное имя, в нашем случае: example.com. Незабываем в конце поставить знак "." (точка)
Затем электронный адрес root@localhost на свой реальный, я напишу root@example.com и опять точку в конце ".".
Затем IP адрес 127.0.0.1 на свой, в моем случае 192.168.0.100.
вместо обычных имен символ "@", опять же оставляя "." в конце
А так же создаем A запись для ns.example.com.
;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA ns.example.com. root.example.com. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns.example.com.
@ IN A 127.0.0.1
@ IN AAAA ::1
ns IN A 192.168.0.100