====== Настройка BIND DNS сервера ====== dns DNS Server Documentation ====== Развертывание локального сервера DNS (BIND 9) ====== Полное руководство по настройке прямых и обратных зон для локальной инфраструктуры. ===== download 1. Установка и выдача прав ===== Установим основной пакет BIND и набор полезных утилит (например, ''%%nslookup%%'', ''%%dig%%'') из стандартных репозиториев: apt-get update && apt-get install -y bind bind-utils content_copy info **Сетевые привилегии (Linux Capabilities):** В современных дистрибутивах для прослушивания портов ниже 1024 требуются особые права. Чтобы служба DNS смогла привязаться к стандартному порту 53 без работы под root, включим специальную привилегию ''%%CAP_NET_BIND_SERVICE%%''. control bind-caps enabled content_copy ===== settings 2. Глобальные настройки (options.conf) ===== Перейдём в рабочую директорию BIND и приступим к редактированию главного файла настроек: cd /etc/bind/ vim options.conf content_copy Добавьте или измените следующие параметры, чтобы разрешить серверу обрабатывать запросы локальной сети и пересылать неизвестные адреса во внешнюю сеть (интернет): // Слушать запросы на всех интерфейсах маршрутизатора listen-on { any; }; // Разрешить отправку запросов от любых клиентов allow-query { any; }; // Если наш сервер не знает домен, переслать запрос вышестоящему серверу forward first; // IP-адрес вышестоящего DNS (например, публичный DNS-сервер или провайдер) forwarders { IP_адрес_пересылки; }; // Отключение строгой проверки подписей DNSSEC (может вызывать проблемы в закрытых сетях) dnssec-validation no; // Частота опроса новых сетевых интерфейсов (в минутах) interface-interval 1; // Отключение кэширования для ускорения обновления записей при отладке max-cache-ttl 0; max-ncache-ttl 0; max-cache-size 32k; content_copy ===== add_location_alt 3. Регистрация локальных зон ===== Теперь укажем серверу, за какие домены он отвечает. Откройте файл описания локальных зон: vim local.conf content_copy Добавьте **прямую зону** (преобразует имена в IP-адреса): zone "ваш_домен" { type master; file "ваш_домен"; }; content_copy Добавьте **обратную зону** (преобразует IP-адреса обратно в имена). Имя обратной зоны строится из первых трёх октетов вашей подсети, записанных задом наперед. Например, для сети ''%%192.168.1.0/24%%'' зона будет называться ''%%1.168.192.in-addr.arpa%%'': zone "ваша_подсеть_в_обратном_порядке.in-addr.arpa" { type master; file "ваш_домен.rev"; }; content_copy Создадим файлы самих зон, скопировав стандартные шаблоны: cp zone/localhost zone/ваш_домен cp zone/127.in-addr.arpa zone/ваш_домен.rev content_copy ===== list_alt 4. Заполнение записей прямой зоны ===== Откройте созданный файл прямой зоны (''%%vim zone/ваш_домен%%'') и приведите его к следующему виду: $TTL 1D ; Запись SOA содержит имя главного DNS сервера и email администратора (с точкой вместо @) @ IN SOA имя_днс_сервера.ваш_домен. root.ваш_домен. ( 2026010100 ; Serial (рекомендуется формат ГГГГММДДXX) 12H ; Refresh 1H ; Retry 1W ; Expire 1H ) ; ncache ; Указание Nameserver (NS) IN NS имя_днс_сервера.ваш_домен. ; A-запись для самого домена @ IN A IP_адрес_днс_сервера ; Обязательная запись для самого DNS-сервера имя_днс_сервера IN A IP_адрес_днс_сервера ; ПРИМЕР: Добавление произвольных узлов инфраструктуры web-server IN A 192.168.1.50 db-server IN A 192.168.1.51 content_copy ===== swap_horiz 5. Заполнение записей обратной зоны ===== Аналогично заполним обратную зону (''%%vim zone/ваш_домен.rev%%''). Здесь вместо A-записей используются PTR-записи (Pointer), которые указывают только последний октет IP-адреса: $TTL 1D @ IN SOA имя_днс_сервера.ваш_домен. root.ваш_домен. ( 2026010100 ; Serial 12H ; Refresh 1H ; Retry 1W ; Expire 1H ) ; ncache IN NS имя_днс_сервера.ваш_домен. ; Запись PTR для самого DNS-сервера (левая часть — последний октет IP) последний_октет_сервера IN PTR имя_днс_сервера.ваш_домен. ; ПРИМЕР: Добавление произвольных узлов инфраструктуры 50 IN PTR web-server.ваш_домен. 51 IN PTR db-server.ваш_домен. content_copy ===== play_circle 6. Права доступа и запуск ===== Вернитесь в корневую директорию пользователя. Необходимо выдать сервисному аккаунту ''%%named%%'' права на чтение файлов конфигурации, которые мы только что создали: cd ~ chown -R :named /var/lib/bind/* chmod -R 777 /var/lib/bind/* content_copy warning **Примечание безопасности:** Использование прав ''%%777%%'' является небезопасным для продакшен-систем, так как разрешает всем модифицировать файлы зон. В рамках данной конфигурации это используется исключительно для устранения проблем с доступом на этапе обучения/отладки. Включаем автозапуск и стартуем сервис BIND: systemctl enable --now bind content_copy ===== check_circle 7. Тестирование и клиенты ===== Сначала убедимся, что DNS отвечает локально на самом сервере: nslookup узел_1 127.0.0.1 content_copy Если всё успешно, переходите к настройке клиентских машин: * На всех узлах сети замените внешний DNS-сервер (например, ''%%8.8.8.8%%'') на IP-адрес вашего нового локального DNS-сервера (''%%IP_адрес_днс_сервера%%''). * Перезагрузите клиентские машины или перезапустите сетевые интерфейсы, чтобы сбросить старый DNS-кэш. Проверьте связность по доменному имени с любой клиентской машины: ping узел_1 content_copy