мета-данные страницы
  •  

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
bind_guide [2026/06/16 22:13] – [Развертывание локального сервера DNS (BIND 9)] kim1rbind_guide [2026/06/16 23:36] (текущий) – [Развертывание локального сервера DNS (BIND 9)] kim1r
Строка 1: Строка 1:
 ====== Настройка BIND DNS сервера ====== ====== Настройка BIND DNS сервера ======
  
-1. Установка пакетов 
-Установите сам DNS-сервер и утилиты для диагностики сети (например, `dig` или `nslookup`): 
-```bash 
-apt-get update && apt-get install -y dnsmasq bind-utils 
-``` 
 ====== Развертывание локального сервера DNS (BIND 9) ====== ====== Развертывание локального сервера DNS (BIND 9) ======
  
 Полное руководство по настройке прямых и обратных зон для локальной инфраструктуры. Полное руководство по настройке прямых и обратных зон для локальной инфраструктуры.
  
-1. Установка пакетов+**1. Установка пакетов** 
 Установите сам DNS-сервер и утилиты для диагностики сети (например, dig или nslookup): Установите сам DNS-сервер и утилиты для диагностики сети (например, dig или nslookup):
  
Строка 16: Строка 12:
 apt-get update && apt-get install -y dnsmasq bind-utils apt-get update && apt-get install -y dnsmasq bind-utils
 </code> </code>
 +**2. Глобальные настройки DNS (/etc/dnsmasq.conf.d/99-dns.conf)**
  
- +Создайте файл конфигурации для основных параметров DNS. Здесь отключается кэширование и задается внешний вышестоящий DNS-сервер:
-===== settings 2. Глобальные настройки (options.conf) ===== +
- +
-Перейдём в рабочую директорию BIND и приступим к редактированию главного файла настроек:+
  
 <code> <code>
-cd /etc/bind/ +# Игнорировать системный /etc/resolv.conf, чтобы избежать зацикливания 
-vim options.conf +no-resolv
-</code>+
  
 +# Вышестоящий (upstream) DNS-сервер для внешних запросов 
 +server=<любой по желанию ДНС>
  
-Добавьте или измените следующие параметры, чтобы разрешить серверу обрабатывать запросы локальной сети и пересылать неизвестные адреса во внешнюю сеть (интернет):+# Слушать запросы на всех доступных сетевых интерфейсах 
 +interface=*
  
-<code> +# Полное отключение кэширования записей (опциональноесли нужно по заданию) 
-// Слушать запросы на всех интерфейсах маршрутизатора +max-ttl=
-listen-on { any; }; +max-cache-ttl=
- +cache-size=0
-// Разрешить отправку запросов от любых клиентов +
-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;+
 </code> </code>
  
 +**3. Отключение конфликтов с системным resolvconf**
  
 +Чтобы системный менеджер сетевых настроек не затирал конфигурацию dnsmasq, очистите его настройки и удалите дефолтный хук:
  
- +1.Очистите содержимое конфигурационного файла /etc/resolvconf.conf, оставив параметр пустым:
-===== add_location_alt 3Регистрация локальных зон ===== +
- +
-Теперь укажем серверу, за какие домены он отвечает. Откройте файл описания локальных зон:+
  
 <code> <code>
-vim local.conf+dnsmasq_conf=
 </code> </code>
  
  
-Добавьте **прямую зону** (преобразует имена в IP-адреса):+Удалите сгенерированный автоматически конфиг и обновите состояние:
  
 <code> <code>
-zone "ваш_домен" { +rm -f /etc/dnsmasq.conf.d/60-resolvconf 
-    type master; +resolvconf -u
-    file "ваш_домен"; +
-};+
 </code> </code>
  
 +**4. РАЗВЕТВЛЕНИЕ: Планируется ли Samba Active Directory DC?**
 +На этом шаге вам нужно определиться, будет ли в вашей сети развернута Samba DC (Контроллер домена). От этого зависит, как dnsmasq будет обрабатывать локальные имена. Выбирай один из двух вариантов ниже:
  
-Добавьте **обратную зону** (преобразует IP-адреса обратно в имена). Имя обратной зоны строится из первых трёх октетов вашей подсетизаписанных задом напередНапример, для сети ''%%192.168.1.0/24%%'' зона будет называться ''%%1.168.192.in-addr.arpa%%'': +ВАРИАНТ 1: Samba DC не планируется(Простой DNS на базе локального файла) 
 +Если контроллера домена не будет, dnsmasq сам создаст и PTR записи на основе системного файла /etc/hosts. 
 +Открой /etc/hosts и жестко пропиши туда все машины сети:
 <code> <code>
-zone "ваша_подсеть_в_обратном_порядке.in-addr.arpa"+<IP_роутера_1>       <имя_роутера_1>.<ваш_домен> 
-    type master; +<IP_сервера_1>       <имя_сервера_1>.<ваш_домен> 
-    file "ваш_домен.rev"; +<IP_клиента_1>       <имя_клиента_1>.<ваш_домен>
-};+
 </code> </code>
  
- +ВАРИАНТ 2: Samba AD DC планируется (Форвардинг зоны на контроллер домена) 
-Создадим файлы самих зон, скопировав стандартные шаблоны: +Если в сети разворачивается контроллер домена, `dnsmasq` не должен сам управлять этой зоной через `/etc/hosts`так как для работы Active Directory необходимы динамические записи и SRV-службы, создаваемые Самбой. Настраивается перенаправление запросов.
 <code> <code>
-cp zone/localhost zone/ваш_домен +Откройте основной конфиг `/etc/dnsmasq.conf` и укажите перенаправление локальной зоны и обратной зоны на IP-адрес сервера, где поднимается Samba DC: 
-cp zone/127.in-addr.arpa zone/ваш_домен.rev +   dnsmasq.conf 
-</code>+Перенаправлять запросы к доменной зоне на контроллер домена 
 +   server=/<ваш_локальный_домен>/<IP_сервера_Samba_DC>
  
- +Перенаправлять запросы обратной зоны (PTR) для вашей подсети (пример для 192.168.0.0/16) 
- +   server=/<обратная_зона_сети.in-addr.arpa>/<IP_сервера_Samba_DC>
- +
-===== list_alt 4. Заполнение записей прямой зоны ===== +
- +
-Откройте созданный файл прямой зоны (''%%vim zone/ваш_домен%%'') и приведите его к следующему виду: +
- +
-<code> +
-$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+
 </code> </code>
  
- +Применение настроек и запуск 
- +Включите службу в автозагрузку и перезапустите её для применения всех изменений:
- +
-===== swap_horiz 5. Заполнение записей обратной зоны ===== +
- +
-Аналогично заполним обратную зону (''%%vim zone/ваш_домен.rev%%''). Здесь вместо A-записей используются PTR-записи (Pointer), которые указывают только последний октет IP-адреса: +
 <code> <code>
-$TTL    1D +systemctl enable dnsmasq 
-@       IN      SOA     имя_днс_сервера.ваш_домен. root.ваш_домен. ( +systemctl restart dnsmasq
-        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.ваш_домен.+
 </code> </code>
  
- +Настройка клиентов и проверка 
- +1. На всех остальных машинах инфраструктуры (клиенты, другие серверы, роутеры) измените IP-адрес DNS-сервера со внешнего на локальный IP-адрес только что настроенного сервера `dnsmasq`: `<IP_вашего_DNS_сервера>`
- +2. Перезагрузите машины для гарантированного обновления сетевых параметров: 
-===== play_circle 6. Права доступа и запуск ===== +  <code> 
- +   reboot 
-Вернитесь в корневую директорию пользователя. Необходимо выдать сервисному аккаунту ''%%named%%'' права на чтение файлов конфигурации, которые мы только что создали+  </code> 
- +5. После перезагрузки проверьте корректность разрешения имен (прямой и обратный просмотр) с помощью утилит `host``dig` или `nslookup`: 
-<code> +   <code> 
-cd ~ +   host <имя_сервера>.<ваш_домен
-chown -R :named /var/lib/bind/+   host <IP_адрес_любой_машины> 
-chmod -R 777 /var/lib/bind/+  </code>
-</code> +
- +
- +
-warning +
-**Примечание безопасности:** Использование прав ''%%777%%'' является небезопасным для продакшенистем, так как разрешает всем модифицировать файлы зон. В рамках данной конфигурации это используется исключительно для устранения проблем с доступом на этапе обучения/отладки+
- +
- +
-Включаем автозапуск и стартуем сервис BIND: +
- +
-<code> +
-systemctl enable --now bind +
-</code> +
- +
- +
- +
- +
- +
-===== check_circle 7. Тестирование и клиенты ===== +
- +
-Сначала убедимся, что DNS отвечает локально на самом сервере+
- +
-<code> +
-nslookup узел_1 127.0.0.1 +
-</code> +
- +
- +
-Если всё успешно, переходите к настройке клиентских машин: +
- +
-  * На всех узлах сети замените внешний DNS-сервер (например, ''%%8.8.8.8%%'') на IP-адрес вашего нового локального DNS-сервера (''%%IP_адрес_днс_сервера%%''). +
-  * Перезагрузите клиентские машины или перезапустите сетевые интерфейсычтобы сбросить старый DNS-кэш. +
- +
-Проверьте связность по доменному имени с любой клиентской машины+
- +
-<code+
-ping узел_1 +
-</code> +
- +