Установим DNS сервер bind в Debian 11.
BIND (Berkeley Internet Name Domain) — это набор ПО для организации DNS-сервера.
BIND 9 — серия версий 9.x, первый выпуск которой состоялся в 2000 году. BIND 9 — это очень функциональное программное обеспечение DNS-сервера, оно не только может работать как кэширующий DNS-сервер, рекурсивно разрешать DNS-запросы, выступать в роли первичного и/или вторичного сервера для зон DNS, поддерживать DNSSEC, DDNS, хорошо поддерживает работу в режиме chroot и т. д., но также отлично конфигурируется и имеет множество расширенных возможностей и функций.
BIND 9 — не единственное программное обеспечение для DNS-сервера, но довольно популярное, имеет долгую историю и множество функций и возможностей.
Подготовка
У нас на тестовом сервере свежая система. Нужно её подготовить. Обновляем кэш репозиториев.
apt updateDNS работает на порту 53 UDP. Для простого DNS сервера достаточно разрешить входящие запросы на этот порт. У меня в системе стоит UFW.
ufw allow 53/udpЕсли не используется ufw, можно влезть в iptables:
iptables -I INPUT 1 -p udp --dport 53 -j ACCEPTСохранить правила можно с помощью iptables-persistent:
apt install iptables-persistent
netfilter-persistent saveУстановка
apt install bind9 dnsutilsПри установке пакета bind9 автоматически устанавливается пакет инструментов командной строки bind9utils. Среди этих инструментов пригодятся:
- named-checkconf — инструмент проверки синтаксиса файлов конфигурации
- named-checkzone — инструмент проверки файлов зон DNS
- rndc — инструмент управления службой DNS
В составе пакета dnsutils будут установлены дополнительные инструменты командной строки:
- dig — инструмент для опроса DNS-серверов и проверки их реакции
- nslookup — инструмент для проверки преобразования имен в IP-адреса (разрешение имён)
- nsupdate — инструмент для динамического обновления записей DNS
После установки сервис DNS уже работает, проверим:
nslookup internet-lab.ru 127.0.0.1Получим:
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
Name: internet-lab.ru
Address: 176.109.108.64Всё работает.
Начальная настройка
При установке BIND9 в каталоге /etc/bind автоматически создаются конфигурационные файлы:
- /etc/bind/named.conf — Основной файл конфигурации. Этот файл изменять не будем, он содержит в себе только ссылки на остальные конфигурационные файлы.
- /etc/bind/named.conf.option — Файл для глобальных настроек службы
- /etc/bind/named.conf.local — Файл для настроек зоны DNS
- /etc/bind/named.conf.default-zones — Файл конфигурации зон "по умолчанию". В частности, в этом файле содержатся ссылки на автоматически созданные файлы конфигурации зоны localhost /etc/bind/db.local и /etc/bind/127.db
Редактируем /etc/bind/named.conf.options. Добавляем строку в раздел options:
allow-query { any; };Тем самым мы разрешаем запросы для всех клиентов (внутренних и внешних). Вместо any можно прописать конкретные сети или IP-адреса:
allow-query { 10.10.10.0/24; };Если необходимо перенаправлять запросы на определенный сервер DNS, добавляем строку в раздел options:
forwarders { 1.1.1.1; 8.8.8.8; };Если DNS сервер не знает какой IP адрес у запрошенного домена, он переадресует запрос сначала к 1.1.1.1, потом к 8.8.8.8.
Перезагружаем службу:
systemctl restart bind9Начальная настройка завершена, DNS сервер может разрешать доменные имена. Установленная по умолчанию служба bind9 сразу настроена на выполнение роли кэширующего сервера.
