Сервер 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 сконфигурирован правильно.

Что и как делать можно также посмотреть здесь: