====== 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