Сервер DNS (Domain Name System) нужен для преобразования имен компьютера в IP адреса. Когда компьютеров было мало, обращения к компьютерам было по IP адресам. Но затем стало ясно, что намного удобнее обращаться по имени к компьютеру или сайту, чем запоминать IP адрес. Несложно запомнить несколько IP адресов, но когда их становится все больше и больше, то возникает необходимость переводить IP адреса в удобные имена. Именно для этих целей и служит DNS сервер, который занимается переводом имен компьютера в IP адреса и наоборот, переводом IP адресов компьютера в имена. Установка и настройка серевера DNS не занимает много времени, но требует внимательности и понимания конфигурационных файлов и указанных в них параметров. Одной из реализацией в Linux DNS серверов является BIND. Текущая реализация это BIND9. Все настроечные файлы находятся в каталоге /etc/bind/. Основной файл конфигурации - named.conf. Установим и настроим сервер DNS BIND9 на основе операционной системы Debian.
Для начала откроем терминал. Все действия по установке и настройке DNS сервера производятся с правами root или с помощью sudo.
Прописываем необходимые репозитории для обновления системы, а также установки нужных пакетов:
# nano /etc/apt/sources.list
# security updates
deb http://security.debian.org/ jessie/updates main contrib non-free
deb-src http://security.debian.org/ jessie/updates main contrib non-free
# binary and source packages
deb http://ftp.ru.debian.org/debian/ jessie main contrib non-free
deb-src http://ftp.ru.debian.org/debian/ jessie main contrib non-free
# jessie-updates
deb http://ftp.ru.debian.org/debian/ jessie-updates main contrib non-free
deb-src http://ftp.ru.debian.org/debian/ jessie-updates main contrib non-free
Для Debian 9 вместо jessie указываем stretch.
Сохраняем файл, далее выполняем следующие команды:
# apt-get update
# apt-get upgrade
Первая команда обновит информацию о пакетах, вторая команда приведет к обновлению нашей системы до актуального состояния.
Устанавливаем пакет bind9 (dns сервер):
# apt-get install bind9
Директория, в которой находятся настроечные файлы dns сервера - /etc/bind/. Основным настроечным файлом является named.conf.options. Настраиваем файл named.conf.options (находится в каталоге /etc/bind):
# cd /etc/bind
# nano named.conf.options
Прописываем в файле named.conf.options:
acl mynetwork { 192.168.91.0/24 ; 127.0.0.1; };
options {
directory "/var/cache/bind";
forwarders {
8.8.8.8;
};
listen-on {
192.168.91.10;
192.168.91.20;
};
dnssec-validation auto;
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { none; };
allow-query { mynetwork; };
Где:
allow-query { mynetwork; }; - список тех, кто имеет право запрашивать информацию, если хотите, чтобы принимать запросы ото всех, вместо mynetwork ставим any.
acl - ограничивает адреса, которые могут запрашивать зоны с сервера DNS.
forwarders { 8.8.8.8; }; - прописываем DNS сервера, у которого можно получить информацию, если информация о доменах неизвестна нашему серверу.
listen on { 192.168.91.10; 192.168.91.20; }; - прописываем DNS сервера, которые будут использованы для отображения IP адресов в имена и наоборот.
listen-on-v6 { none; }; - если IP 6 версии не используем.
auth-nxdomain no; - параметр для совместимости с RFC1035.
Проверяем:
# named-checkconf
Далее редактируем файл named.conf.local:
# nano /etc/bind/named.conf.local
В файле прописываем зону прямого и обратного просмотра для домена. Зона прямого просмотра - тип зоны, в котором в ответ на имя получают IP адрес. Соответственно ответственность зоны обратного просмотра состоит в том, чтобы получить по IP адресу имя компьютера:
zone "sigro.ru" {
type master;
file "/etc/bind/db.sigro.ru";
};
zone "91.168.192.in-addr.arpa" {
type master;
file "/etc/bind/91.168.192.in-addr.arpa.zone";
};
91.168.192.in-addr.arpa - обратная зона просмотра, берётся из IP адреса DNS сервера (в данном случае 192.168.91.10);
db.sigro.ru - прямая зона просмотра, домен в данном случае называется sigro.ru.
После каждого изменения конфигурационного файла желательно провести проверку синтаксиса файла, затем переходить к настройке других файлов. Делается это командой:
# named-checkconf
Далее начинаем прописывать зону прямого просмотра. Чтобы произвести настройку быстрее и по шаблону, копируем фал db.local и изменяем уже вновь созданный файл настройки зоны прямого просмотра (имена для файлов зоны прямого и обратного просмотра можно придумать любые, но принято, чтобы они были читабельны):
# cp db.local db.sigro.ru
# nano db.sigro.ru
;
; BIND data file for local loopback interface
;
$TTL 604800
$ORIGIN sigro.ru.
@ IN SOA nic1 admin (
2017060100 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS nic1.sigro.ru.
@ IN A 192.168.91.10
; @ IN AAAA ::1
nic1 IN A 192.168.91.10
nic2 IN A 192.168.91.20
cl1 IN A 192.168.91.101
; - после данного знака возможно делать комментарий
$TTL 604800 - time to live (время кэширования из вашей зоны)
$ORIGIN sigro.ru. - при использовании $ORIGIN к именам будет автоматически дописываться в данном случае sigro.ru. (не забываем в конце точку). Например, при считывании зоны прямого просмотра, вместо nic1 автоматически будет подставлено nic1.sigro.ru.
@ IN SOA nic1 admin - запись SOA (начало ответственности)
nic1 - имя первичного dns сервера
admin - почтовый адрес пользователя, отвечающего за эту зону
2017060100 - серийный номер зоны (десятизначное число)
604800 - период обновления
86400 - повтор каждые 86400 с
2419200 - время хранения информации
604800 - время хранения в кэше удаленных серверов негативных ответов
Прописываем зону обратного просмотра. Для этого создаём файл зоны обратного просмотра и производим изменения в вновь созданном файле:
# cp db.sigro.ru 91.168.192.in-addr.arpa.zone
# nano 91.168.192.in-addr.arpa.zone
;
; BIND data file for local loopback interface
;
$TTL 604800
$ORIGIN 91.168.192.in-addr.arpa.
@ IN SOA nic1.sigro.ru. admin.sigro.ru. (
2017060100 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
NS nic1.sigro.ru.
10 PTR nic1.sigro.ru.
20 PTR nic2.sigro.ru.
101 PTR cl1.sigro.ru.
Делаем так, чтобы сервер DNS работал с новой конфигурацией:
# /etc/init.d/bind9 reload
Производим проверки:
# named-checkconf
# named-checkconf -z
# named-checkzone 91.168.192.in-addr.arpa 91.168.192.in-addr.arpa.zone
# host 192.168.91.10
# nslookup sigro.ru
# nslookup 192.168.91.10
named-checkconf - проверка правильности синтаксиса конфигурационных файлов, рекомендуется делать после каждого изменения в конфигурационном файле.
named-checkconf -z - пытается произвести действия, такие же как bind при загрузке зон.
nslookup sigro.ru - должен быть показан адрес проверяемого сервера (т.е. в данном случае Address: 192.168.91.10).
nslookup 192.168.91.10 - должен быть показано имя проверяемого сервера (т.е. в данном случае name = nic1.sigro.ru).
Если ошибок нет, то сервер DNS сконфигурирован правильно.
Что и как делать можно также посмотреть здесь: