Skip to content

Задание №10: Инфраструктура службы доменных имён (DNS BIND) ​

В данном задании на сервере главного офиса (HQ-SRV) развёртывается корпоративный DNS-сервер BIND 9 (named).

Сервер обеспечивает сопоставление доменных имён в IP-адреса (прямая зона) и IP-адресов в доменные имена (обратная зона PTR) для зоны .au-team.irpo, а также перенаправляет внешние запросы в Интернет через серверы пересылки (Forwarders).

Место выполнения

Все действия выполняются под пользователем root на сервере HQ-SRV (hq-srv.au-team.irpo).


1. Внимание: порядок действий и потеря Интернета ​

Осторожно: не меняйте DNS до установки пакетов!

Если вы переключите DNS в файле resolv.conf на 127.0.0.1 до того, как установите пакеты и запустите службу BIND, на сервере полностью пропадёт доступ в Интернет по доменным именам. В результате команда apt-get не сможет подключиться к репозиториям ALT Linux.

Строго соблюдайте порядок: сначала устанавливаем bind bind-utils nano, и только затем переключаем системный резолвер на локальный адрес 127.0.0.1!


2. Теоретическая справка: структура BIND в ALT Linux ​

1. Как устроены зоны в файле options.conf? ​

  • Прямая зона (zone "au-team.irpo"): сопоставляет читаемые имена компьютеров (hq-rtr, br-srv) с их IPv4-адресами (записи типа A).
  • Обратная зона (zone "168.192.in-addr.arpa"): сопоставляет IP-адрес с именем (записи типа PTR). В обратных зонах октеты сети записываются в обратном порядке. Для сетей 192.168.x.x идентификатором зоны является 168.192.in-addr.arpa.
  • Пересылка (forwarders { 77.88.8.7; 77.88.8.3; };): если клиент запрашивает внешний сайт (например, ya.ru), BIND перенаправляет этот запрос на общедоступные DNS-серверы Яндекса.
  • dnssec-validation no;: отключает проверку DNSSEC. Так как наша зона .au-team.irpo локальная и не подписана в мировом корневом дереве DNS, включенный DNSSEC привёл бы к ошибкам разрешения имён (SERVFAIL).

2. Зачем менять права chown :named? ​

В целях безопасности демон BIND в ALT Linux запускается от имени системного непривилегированного пользователя и группы named. Если файлы созданы пользователем root, демон не сможет их прочитать. Поэтому группе named обязательно передаются права на файлы зон.


Шаг 1. Установка пакетов и генерация ключа RNDC ​

Сначала скачиваем и устанавливаем службу и утилиты диагностики:

bash
# 1. Устанавливаем BIND, утилиты запросов (dig, host, nslookup) и редактор nano:
apt-get update && apt-get install bind bind-utils nano -y

# 2. Перенаправляем резолвер сервера на самого себя:
echo $'search au-team.irpo\nnameserver 127.0.0.1' > /etc/net/ifaces/enp7s1/resolv.conf

# 3. Генерируем ключ управления сервером RNDC:
rndc-confgen -a -c /etc/bind/rndc.key

Шаг 2. Настройка конфигурации BIND (options.conf) ​

Открываем конфигурационный файл службы:

bash
nano /etc/bind/options.conf

Полностью очищаем файл и вставляем следующую конфигурацию:

text
options {
    listen-on { 127.0.0.1; 192.168.100.2; };
    forwarders { 77.88.8.7; 77.88.8.3; };
    recursion yes;
    allow-recursion { any; };
    allow-query { any; };
    dnssec-validation no;
    directory "/etc/bind/zone";
    dump-file "/var/run/named/named_dump.db";
    statistics-file "/var/run/named/named.stats";
    pid-file "/var/run/named/named.pid";
};

logging {
    category default { default_syslog; };
};

zone "au-team.irpo" {
    type master;
    file "au-team.irpo";
};

zone "168.192.in-addr.arpa" {
    type master;
    file "168.192.in-addr.arpa";
};

Шаг 3. Настройка файла прямой зоны (au-team.irpo) ​

В качестве основы копируем стандартный шаблон локальной зоны:

bash
cp -r /etc/bind/zone/127.in-addr.arpa /etc/bind/zone/au-team.irpo
nano /etc/bind/zone/au-team.irpo

Приводим файл к следующему виду:

text
$TTL 1D
@ IN SOA au-team.irpo. root.au-team.irpo. (
    2025020600
    12H
    1H
    1W
    1H
)
@       IN NS    hq-srv.au-team.irpo.

hq-rtr  IN A     192.168.100.1
hq-srv  IN A     192.168.100.2
hq-cli  IN A     192.168.200.2
br-rtr  IN A     192.168.0.1
br-srv  IN A     192.168.0.2
docker  IN A     172.16.1.1
web     IN A     172.16.2.1

Обратите внимание на точки в конце имён!

В файлах зон BIND точка в конце имени (например, hq-srv.au-team.irpo.) означает абсолютное доменное имя. Если не поставить точку, BIND автоматически припишет к нему имя текущей зоны (hq-srv.au-team.irpo.au-team.irpo.), что приведёт к ошибке!


Шаг 4. Настройка файла обратной зоны (168.192.in-addr.arpa) ​

Создаём файл обратного разрешения IP-адресов в имена:

bash
cp -r /etc/bind/zone/127.in-addr.arpa /etc/bind/zone/168.192.in-addr.arpa
nano /etc/bind/zone/168.192.in-addr.arpa

Заполняем записями PTR:

text
$TTL 1D
@ IN SOA au-team.irpo. root.au-team.irpo. (
    2025020600
    12H
    1H
    1W
    1H
)
@       IN NS    au-team.irpo.

1.100   IN PTR   hq-rtr.au-team.irpo.
2.100   IN PTR   hq-srv.au-team.irpo.
2.200   IN PTR   hq-cli.au-team.irpo.

Как читать запись 1.100?

Зона называется 168.192.in-addr.arpa. Запись 1.100 вместе с именем зоны образует полный обратный адрес 1.100.168.192.in-addr.arpa, что соответствует нормальному IP-адресу 192.168.100.1 (шлюз HQ-RTR).


Шаг 5. Назначение прав и запуск службы BIND ​

bash
# 1. Передаем права владения файлами зон системной группе named:
chown :named /etc/bind/zone/au-team.irpo /etc/bind/zone/168.192.in-addr.arpa

# 2. Включаем автозапуск и стартуем службу BIND:
systemctl enable --now bind

# 3. Перезапускаем сеть, чтобы обновился системный /etc/resolv.conf:
service network restart

# 4. Перезапускаем сервис BIND для применения свежих зон:
systemctl restart bind.service

Шаг 6. Проверка работоспособности (Верификация) ​

Выполните тестовые запросы утилитой host:

1. Проверка разрешения внутреннего имени (прямая зона): ​

bash
host br-rtr

Ожидаемый ответ:

text
br-rtr.au-team.irpo has address 192.168.0.1

2. Проверка обратного разрешения IP в имя (обратная зона): ​

bash
host -t PTR 192.168.100.2

Ожидаемый ответ:

text
2.100.168.192.in-addr.arpa domain name pointer hq-srv.au-team.irpo.

3. Проверка внешнего Интернета через серверы пересылки (Forwarders): ​

bash
host ya.ru

Ожидаемый ответ: успешный вывод IP-адресов Яндекса, подтверждающий работу рекурсии и директивы forwarders.

Работает на VitePress • Быстрый и удобный движок для документации