Установите пакет bind9.
apt update && apt install bind9
Перейдите в каталог /etc/bind
. Давайте разберемся с содержимым этого каталога.
bind.keys
- этот файл предназначен для ключей, используемых в dnssec. Для нас он пока неинтересенdb.{0,127,255,empty,local}
- эти файлы можно назвать служебной информацией. Они определяют доменную зону локалхоста и дефолтные реверсные зоныdb.root
- тут содержатся адреса корневых DNS-серверов.named.conf
- основной конфигурационный файл. При запуске сервис ищет именно его, если не указано иное. Для удобства файл разбит на несколько частей, которые добавляются в него с помощью инструкции include.named.conf.default-zones
- в этом файле подключаются дефолтные доменные зоны, описанные ранее.named.conf.local
- тут можно описать доменные зоны, которые мы заведем на нашем сервере. Сейчас он нам не нужен, хотя в ходе урока мы до него доберемся.named.conf.options
- тут описываются настройки самого сервера, а не доменных зон.rndc.key
- ключ для утилиты rndc, с помощью которой управляют DNS-сервером. Утилита может жить как на том же сервере, так и на любом другом компьютере. Главное описать параметры подключения к DNS-серверу.zones.rfc1918
- тут описываются обратные зоны для серых подсетей. По умолчанию для них для всех используется empty.db, но при необходимости всегда можно переопределить.Нас сейчас будет интересовать только файл named.conf.options
. Откроем его с помощью текстового редактора:
Некоторые из доступных опций:
listen-on
- позволяет указать интерфейсы на которых DNS-сервер будет слушать запросы. Для работы на всех интерфейсах не указывайте параметр или же задайте «any;» Это может выглдить так:listen-on {10.0.0.1; 192.168.1.10}
allow-query
- указывает, кому разрешено выполнять запросы. BIND9 по умолчанию разрешает только локальные запросы, поэтому добавьте необходимые IP-адреса или пропишите «any;», чтобы разрешить все запросы. Для удобства вы можете перед блоком options
создать acl
лист:acl "corpnets" {192.168.1.0/24};
options{
allow-query {"corpnets";};
}
forwarders
- cерверы пересылки содержат IP-адреса DNS-серверов, на которые перенаправляется запрос в случае, если наш сервер не содержит необходимых данных.Расскоментируйте блок forwarders
и добавьте адреса DNS серверов гугла.
forwarders {
8.8.8.8;
8.8.4.4;
};
Что бы сервер мог отвечать на запросы из любых сетей нужно добавить в блок optinos
запись:
allow-query { any;};
Для проверки конфигурации bind9 есть команда:
named-checkconf
Если она не чего не выводит то скорее всего все хорошо.
Перезагрузите dns сервер:
systemctl restart bind9
Для проверки работы DNS сервера можно сделать на него запрос с помощью утилиты nslookup
, чтобы обратиться к конретному DNS серверу, а не тому который у вас в настройках сетевого адаптера нужно указать ip DNS сревера после команды:
nslookup yandex.ru 81.163.26.69
Вывод будет подобный этому:
Откройте в любом редакторе файл named.conf.local
. Для добавления зоны существует следующий синтаксис:
zone "mpt.xuz"{
type master;
file "/etc/bind/master/mpt.xuz.zone";
allow-query {any;};
};
И так что у нас тут есть:
zone "mpt.xuz"
- собственно имя обслуживаемой зоны.type
- это тип зоны (в нашем случае первичная — значит master). Другие варианты — slave, stub, forward.file
- тут указываеться путь до файла с записями зоны.allow-query {any;};
аналогично подобной записи в named.conf.options.Что еще можно тут указать?
allow-transfer
- Список других DNS-серверов (вторичных) для передачи им зоны. Можно указывать подсети.allow-update
- Список хостов, с которых разрешено обновление записей в зоне (для DDNS). Можно указать подсети.И так давайте передем дальше. Создайте в каталоге /etc/bind
папку master
.
mkdir /etc/bind/master
Для конфигурирования зоны в директории /etc/bind
уже есть готовый шаблон:
Создайте на основе этого шаблона файл /etc/bind/master/mpt.xuz.zone
. Для этого можно использовать команду:
cp /etc/bind/db.local /etc/bind/master/mpt.xuz.zone
Теперь давайте изменим файл следующим образом:
;
; BIND data file for local loopback interface
;
$TTL 604800
mpt.xuz. IN SOA ns.mpt.xuz. root.localhost. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns.mpt.xuz.
@ IN NS localhost.
@ IN A 81.163.26.69
srv IN A 81.163.26.69
Что нужно знать:
$TTL 604800
- это время актуальности записей в секундах. Необходим, чтобы указать другим DNS-серверам, как долго стоит хранить запись у себя в кэше.SOA-запись
в данном примере эта запись идет сразу после параметра TTL. Ее стоит описать отдельно. Она хранит общие настройки для зоны.Точки в конце доменных имен являються обязательными и указывают на корневой домен. Подробнее можно узнать тут.
Что касаеться самой записи:
mpt.xuz. IN SOA ns.mpt.xuz. root.localhost.
В начале вы указываете название обслуживаемой зоны после запись типа ns.название_обслуживаемой_зоны а дальше пользователя который обслуживает зону можно оставить root
по умолчанию.
Как записываються записи которые обслуживает зона:
@; srv
- Собственно доменное имя хоста. Может записываться без домена (как в данном примере) — он будет дописан автоматически. Также может быть записан полностью с доменом — в таком случае необходимо поставить точку на конце, например, mail.test.local. Если не указывается или обозначается знаком собаки (@), запись создается для имени зоны (в данном случае, mpt.xuz.).класс
Всегда используется IN (Internet). Указывает на тип сети.Далее указываеться тип записи.
Ну и конце пишеться значение для записи обычно это: IP-адрес, имя узла или текстовая запись.
Давайте проверим обслуживает ли сервер созданную зону:
Ответ был получен согласно созданным записям.