Конфигурация bind9 Debian 10

Обновлено: 21.11.2024

Важная часть управления конфигурацией сервера и инфраструктурой включает поддержку простого способа поиска сетевых интерфейсов и IP-адресов по имени путем настройки надлежащей системы доменных имен (DNS). Использование полных доменных имен (FQDN) вместо IP-адресов для указания сетевых адресов упрощает настройку служб и приложений и повышает удобство сопровождения файлов конфигурации. Настройка собственного DNS для вашей частной сети — отличный способ улучшить управление вашими серверами.

В этом руководстве мы рассмотрим, как настроить внутренний DNS-сервер с помощью программного обеспечения сервера имен BIND (BIND9) в Debian 9, который может использоваться вашими серверами для разрешения частных имен хостов и частных IP-адресов. Это обеспечивает централизованный способ управления вашими внутренними именами хостов и частными IP-адресами, что необходимо, когда ваша среда расширяется до нескольких хостов.

Предпосылки

Для выполнения этого руководства вам потребуется следующая инфраструктура. Создайте каждый сервер в одном центре обработки данных с включенной частной сетью:

  • Новый сервер Debian 9 для использования в качестве основного DNS-сервера, ns1
  • (Рекомендуется) Второй сервер Debian 9 для использования в качестве вторичного DNS-сервера, ns2
  • Дополнительные серверы в том же центре обработки данных, которые будут использовать ваши DNS-серверы.

На каждом из этих серверов настройте административный доступ через пользователя sudo и брандмауэр, следуя нашему руководству по первоначальной настройке сервера Debian 9.

Если вы не знакомы с понятиями DNS, рекомендуется прочитать хотя бы первые три части нашего руководства «Введение в управление DNS».

Пример инфраструктуры и целей

Для целей этой статьи мы предполагаем следующее:

Существующая настройка будет отличаться, но примеры имен и IP-адресов будут использоваться для демонстрации того, как настроить DNS-сервер для обеспечения функционирующей внутренней DNS. Вы сможете легко адаптировать эту настройку к своей среде, заменив имена хостов и частные IP-адреса своими собственными. Нет необходимости использовать название региона центра обработки данных в вашей схеме именования, но мы используем его здесь, чтобы обозначить, что эти хосты принадлежат к частной сети определенного центра обработки данных. Если вы используете несколько центров обработки данных, вы можете настроить внутренний DNS в каждом соответствующем центре обработки данных.

К концу этого руководства у нас будет основной DNS-сервер ns1 и, при необходимости, дополнительный DNS-сервер ns2, который будет служить в качестве резервного.

Давайте начнем с установки нашего основного DNS-сервера ns1.

Установка BIND на DNS-серверах

На обоих DNS-серверах, ns1 и ns2, обновите кэш пакетов apt, введя:

Теперь установите BIND:

Настройка привязки к режиму IPv4

Прежде чем продолжить, давайте установим для BIND режим IPv4, поскольку наша частная сеть использует исключительно IPv4. На обоих серверах отредактируйте файл настроек по умолчанию bind9, набрав:

Добавьте «-4» в конец параметра OPTIONS. Это должно выглядеть следующим образом:

Сохраните и закройте файл, когда закончите.

Перезапустите BIND, чтобы изменения вступили в силу:

Теперь, когда BIND установлен, давайте настроим основной DNS-сервер.

Настройка основного DNS-сервера

Конфигурация BIND состоит из нескольких файлов, которые включены в основной файл конфигурации named.conf . Эти имена файлов начинаются с named, потому что это имя процесса, который запускает BIND (сокращение от «демона доменных имен»). Мы начнем с настройки файла параметров.

Настройка файла параметров

На ns1 откройте файл named.conf.options для редактирования:

Над существующим блоком параметров создайте новый блок ACL (список управления доступом) с именем «доверенный». Здесь мы определим список клиентов, от которых мы разрешим рекурсивные DNS-запросы (т. е. ваши серверы, которые находятся в том же центре обработки данных, что и ns1). Используя наш пример частных IP-адресов, мы добавим ns1, ns2, host1 и host2 в наш список доверенных клиентов:

Теперь, когда у нас есть список доверенных DNS-клиентов, нам нужно отредактировать блок опций. На данный момент начало блока выглядит следующим образом:

Под директивой directory добавьте выделенные строки конфигурации (и замените их правильным IP-адресом ns1), чтобы это выглядело примерно так:

По завершении сохраните и закройте файл named.conf.options. Приведенная выше конфигурация указывает, что только ваши собственные серверы («доверенные») смогут запрашивать у вашего DNS-сервера внешние домены.

Далее мы настроим локальный файл, чтобы указать наши зоны DNS.

Настройка локального файла

На ns1 откройте файл named.conf.local для редактирования:

Добавьте зону пересылки со следующими строками, заменив имя зоны своим собственным и частным IP-адресом вторичного DNS-сервера в директиве allow-transfer:

Предполагая, что наша частная подсеть — 10.128.0.0/16, добавьте обратную зону с помощью следующих строк (обратите внимание, что имя нашей обратной зоны начинается с «128.10», что является обратным октетом «10.128»):

Если ваши серверы охватывают несколько частных подсетей, но находятся в одном центре обработки данных, обязательно укажите дополнительную зону и файл зоны для каждой отдельной подсети. Когда вы закончите добавлять все нужные вам зоны, сохраните и закройте файл named.conf.local.

Теперь, когда наши зоны указаны в BIND, нам нужно создать соответствующие файлы прямой и обратной зон.

Создание файла прямой зоны

Давайте создадим каталог, в котором будут находиться файлы нашей зоны. Согласно нашей конфигурации named.conf.local, это место должно быть /etc/bind/zones :

Мы будем основывать наш файл зоны прямой передачи на образце файла зоны db.local. Скопируйте его в нужное место с помощью следующих команд:

Теперь давайте отредактируем наш файл прямой зоны:

Изначально это будет выглядеть примерно так:

Далее удалите три записи в конце файла (после записи SOA). Если вы не знаете, какие строки удалить, они помечены комментарием «удалить эту строку» выше.

В конце файла добавьте записи сервера имен со следующими строками (замените имена своими). Обратите внимание, что во втором столбце указано, что это записи «NS»:

Наш последний пример файла прямой зоны выглядит следующим образом:

Теперь давайте перейдем к файлу(ам) обратной зоны.

Создание файлов обратной зоны

На ns1 для каждой обратной зоны, указанной в файле named.conf.local, создайте файл обратной зоны. Мы будем основывать наши файлы обратной зоны на образце файла зоны db.127. Скопируйте его в нужное место с помощью следующих команд (заменив имя файла назначения, чтобы оно соответствовало вашему определению обратной зоны):

Отредактируйте файл зоны обратного хода, который соответствует зоне(ам) обратного хода, определенной в named.conf.local :

Изначально это будет выглядеть примерно так:

Точно так же, как и в случае с файлом прямой зоны, вам потребуется отредактировать запись SOA и увеличить серийное значение. Это должно выглядеть примерно так:

Теперь удалите две записи в конце файла (после записи SOA). Если вы не знаете, какие строки удалить, они помечены комментарием «удалить эту строку» выше.

В конце файла добавьте записи сервера имен со следующими строками (замените имена своими). Обратите внимание, что во втором столбце указано, что это записи «NS»:

Затем добавьте записи PTR для всех ваших серверов, чьи IP-адреса находятся в подсети файла зоны, который вы редактируете. В нашем примере это включает в себя все наши хосты, потому что все они находятся в подсети 10.128.0.0/16. Обратите внимание, что первый столбец состоит из двух последних октетов частных IP-адресов ваших серверов в обратном порядке. Обязательно подставьте имена и частные IP-адреса в соответствии с вашими серверами:

Сохраните и закройте файл обратной зоны (повторите этот раздел, если вам нужно добавить другие файлы обратной зоны).

Наш последний пример файла обратной зоны выглядит следующим образом:

Мы закончили редактирование наших файлов, теперь мы можем проверить наши файлы на наличие ошибок.

Проверка синтаксиса конфигурации BIND

Выполните следующую команду, чтобы проверить синтаксис файлов named.conf*:

Если в ваших именованных файлах конфигурации нет синтаксических ошибок, вы вернетесь к командной строке и не увидите никаких сообщений об ошибках. Если есть проблемы с вашими файлами конфигурации, просмотрите сообщение об ошибке и раздел «Настройка основного DNS-сервера», а затем повторите попытку named-checkconf.

Команду named-checkzone можно использовать для проверки правильности ваших файлов зон. Его первый аргумент указывает имя зоны, а второй аргумент указывает соответствующий файл зоны, оба из которых определены в named.conf.local .

Чтобы проверить конфигурацию обратной зоны «128.10 .in-addr.arpa», выполните следующую команду (измените числа в соответствии с вашей обратной зоной и файлом):

Когда все ваши файлы конфигурации и зоны не содержат ошибок, вы должны быть готовы перезапустить службу BIND.

Перезапуск BIND

Если у вас настроен брандмауэр UFW, откройте доступ к BIND, набрав:

Теперь ваш основной DNS-сервер настроен и готов отвечать на DNS-запросы. Перейдем к созданию вторичного DNS-сервера.

Настройка вторичного DNS-сервера

В большинстве сред рекомендуется настроить дополнительный DNS-сервер, который будет отвечать на запросы, если основной станет недоступен. К счастью, дополнительный DNS-сервер настроить намного проще.

На ns2 отредактируйте файл named.conf.options:

Вверху файла добавьте ACL с частными IP-адресами всех ваших доверенных серверов:

Под директивой каталога добавьте следующие строки:

Сохраните и закройте файл named.conf.options.Этот файл должен выглядеть точно так же, как файл named.conf.options ns1, за исключением того, что он должен быть настроен для прослушивания частного IP-адреса ns2.

Теперь отредактируйте файл named.conf.local:

Сохраните и закройте файл named.conf.local.

Выполните следующую команду, чтобы проверить правильность файлов конфигурации:

После проверки перезапустите BIND:

Разрешить DNS-подключения к серверу, изменив правила брандмауэра UFW:

Теперь у вас есть первичный и вторичный DNS-серверы для разрешения имени частной сети и IP-адреса. Теперь вы должны настроить клиентские серверы для использования ваших частных DNS-серверов.

Настройка DNS-клиентов

Прежде чем все ваши серверы в «доверенном» ACL-списке смогут запрашивать ваши DNS-серверы, вы должны настроить каждый из них на использование ns1 и ns2 в качестве серверов имен. Этот процесс зависит от ОС, но для большинства дистрибутивов Linux он включает добавление серверов имен в файл /etc/resolv.conf.

Клиенты Ubuntu 18.04

В Ubuntu 18.04 сеть настраивается с помощью Netplan, абстракции, которая позволяет писать стандартизированную конфигурацию сети и применять ее к несовместимому серверному сетевому программному обеспечению. Чтобы настроить DNS, нам нужно написать файл конфигурации Netplan.

Сначала найдите устройство, связанное с вашей частной сетью, запросив частную подсеть с помощью команды ip address:

В этом примере приватным интерфейсом является eth1 .

Далее создайте новый файл в /etc/netplan с именем 00-private-nameservers.yaml :

Внутри вставьте следующее содержимое. Вам нужно будет изменить интерфейс частной сети, адреса ваших DNS-серверов ns1 и ns2 и зону DNS:

Примечание: Netplan использует формат сериализации данных YAML для своих файлов конфигурации. Поскольку YAML использует отступы и пробелы для определения своей структуры данных, убедитесь, что ваше определение использует согласованные отступы, чтобы избежать ошибок.

Сохраните и закройте файл, когда закончите.

Затем скажите Netplan попытаться использовать новый файл конфигурации с помощью команды netplan try . Если есть проблемы, вызывающие потерю сети, Netplan автоматически откатит изменения по истечении времени ожидания:

Если обратный отсчет внизу обновляется правильно, новая конфигурация по крайней мере достаточно функциональна, чтобы не разорвать ваше SSH-соединение. Нажмите ENTER, чтобы принять новую конфигурацию.

Теперь проверьте, чтобы системный преобразователь DNS определил, была ли применена ваша конфигурация DNS:

Пролистайте вниз, пока не увидите раздел, посвященный вашему частному сетевому интерфейсу. Сначала вы должны увидеть частные IP-адреса для ваших DNS-серверов, а затем несколько резервных значений. Ваш домен должен находиться в «Домене DNS»:

Теперь ваш клиент должен быть настроен на использование ваших внутренних DNS-серверов.

Клиенты Ubuntu 16.04 и Debian

На серверах Ubuntu 16.04 и Debian Linux вы можете редактировать файл /etc/network/interfaces:

Сохраните и закройте файл, когда закончите.

Убедитесь, что в вашей системе установлен пакет resolvconf:

Теперь перезапустите сетевые службы, применив новые изменения с помощью следующих команд. Убедитесь, что вы заменили eth0 именем вашего сетевого интерфейса:

Это должно перезапустить вашу сеть без разрыва текущего подключения. Если все сработало правильно, вы должны увидеть что-то вроде этого:

Дважды проверьте, были ли применены ваши настройки, набрав:

Вы должны увидеть свои DNS-серверы в файле /etc/resolv.conf, а также домен поиска:

Теперь ваш клиент настроен на использование ваших DNS-серверов.

Клиенты CentOS

В CentOS, RedHat и Fedora Linux отредактируйте файл /etc/sysconfig/network-scripts/ifcfg-eth0. Возможно, вам придется заменить eth0 на имя вашего основного сетевого интерфейса:

Сохраните и закройте файл, когда закончите.

Теперь перезапустите сетевую службу, введя:

Команда может зависнуть на несколько секунд, но вскоре вы вернетесь к приглашению.

Убедитесь, что ваши изменения были применены, введя:

Вы должны увидеть свои серверы имен и поисковый домен в списке:

Теперь ваш клиент должен иметь возможность подключаться к вашим DNS-серверам и использовать их.

Тестирование клиентов

Используйте nslookup, чтобы проверить, могут ли ваши клиенты запрашивать ваши серверы имен. Вы должны иметь возможность сделать это на всех клиентах, которые вы настроили и которые находятся в «доверенном» ACL.

Для клиентов CentOS может потребоваться установить утилиту с помощью:

Для клиентов Debian можно установить с помощью:

Мы можем начать с прямого поиска.

Поиск вперед

Далее мы можем проверить обратный поиск.

Обратный поиск

Чтобы проверить обратный поиск, запросите DNS-сервер с частным IP-адресом host1:

Вы должны увидеть вывод, который выглядит следующим образом:

Поздравляем! Теперь ваши внутренние DNS-серверы настроены правильно! Теперь мы рассмотрим ведение записей вашей зоны.

Ведение записей DNS

Теперь, когда у вас есть работающий внутренний DNS, вам необходимо поддерживать записи DNS, чтобы они точно отражали среду вашего сервера.

Добавление хоста в DNS

Каждый раз, когда вы добавляете хост в свою среду (в том же центре обработки данных), вы захотите добавить его в DNS. Вот список шагов, которые вам необходимо предпринять:

Основной сервер имен

  • Файл зоны переадресации: добавьте запись «A» для нового хоста, увеличьте значение «Serial»
  • Файл обратной зоны: добавьте запись «PTR» для нового хоста, увеличьте значение «Serial»
  • Добавьте частный IP-адрес вашего нового хоста в «доверенный» список управления доступом ( named.conf.options )

Проверьте файлы конфигурации:

Затем перезагрузите BIND:

Теперь ваш основной сервер должен быть настроен для нового хоста.

Дополнительный сервер имен

  • Добавьте частный IP-адрес вашего нового хоста в «доверенный» список управления доступом ( named.conf.options )

Проверьте синтаксис конфигурации:

Затем перезагрузите BIND:

Ваш дополнительный сервер теперь будет принимать соединения с нового хоста.

Настройте новый хост для использования вашего DNS

  • Настройте файл /etc/resolv.conf для использования ваших DNS-серверов
  • Протестируйте с помощью nslookup

Удаление хоста из DNS

Если вы удаляете хост из своей среды или хотите просто вывести его из DNS, просто удалите все, что было добавлено при добавлении сервера в DNS (т. е. в обратном порядке).

Заключение

Теперь вы можете ссылаться на частные сетевые интерфейсы ваших серверов по имени, а не по IP-адресу. Это упрощает настройку служб и приложений, поскольку вам больше не нужно запоминать частные IP-адреса, а файлы будут легче читать и понимать. Кроме того, теперь вы можете изменить свои конфигурации, чтобы они указывали на новые серверы в одном месте, ваш основной DNS-сервер, вместо того, чтобы редактировать множество распределенных файлов конфигурации, что упрощает обслуживание.

После того как вы настроили свой внутренний DNS и ваши файлы конфигурации используют частные полные доменные имена для указания сетевых подключений, очень важно правильно обслуживать ваши DNS-серверы. Если они оба станут недоступны, ваши службы и приложения, которые полагаются на них, перестанут работать должным образом. Вот почему рекомендуется настроить DNS как минимум с одним вторичным сервером и поддерживать работающие резервные копии всех из них.

Хотите узнать больше? Присоединяйтесь к сообществу DigitalOcean!

Присоединяйтесь к нашему сообществу DigitalOcean, насчитывающему более миллиона разработчиков, бесплатно! Получайте помощь и делитесь знаниями в нашем разделе "Вопросы и ответы", находите руководства и инструменты, которые помогут вам расти как разработчику и масштабировать свой проект или бизнес, а также подписывайтесь на интересующие вас темы.

В этом руководстве показано, как настроить и запустить собственный авторитетный сервер имен в Debian 10 Buster с широко используемым программным обеспечением BIND 9.

Примечание. В этом руководстве показан метод командной строки. Если вы хотите редактировать записи DNS из графического веб-интерфейса, я рекомендую настроить авторитетные DNS-серверы с помощью Webmin, бесплатной панели управления сервером с открытым исходным кодом.

Что такое авторитетный DNS-сервер?

Если вы являетесь владельцем доменного имени и хотите, чтобы ваш собственный DNS-сервер обрабатывал разрешение имен для вашего доменного имени, а не использовал DNS-сервер вашего регистратора доменов, вам необходимо настроить полномочный DNS-сервер.

Авторитетный DNS-сервер используется владельцами доменных имен для хранения DNS-записей. Он предоставляет авторитетные ответы для преобразователей DNS (например, 8.8.8.8 или 1.1.1.1), которые запрашивают записи DNS от имени конечных пользователей на ПК, смартфоне или планшете.

О привязке

BIND (Berkeley Internet Name Domain) — это гибкое и полнофункциональное программное обеспечение DNS с открытым исходным кодом, широко используемое в Unix/Linux благодаря своей стабильности и высокому качеству. Первоначально он был разработан Калифорнийским университетом в Беркли, а позже, в 1994 году, его разработка была передана в Internet Systems Consortium, Inc (ISC).

BIND может одновременно выступать в качестве авторитетного DNS-сервера для зоны и преобразователя DNS. Преобразователь DNS также можно назвать рекурсивным сервером имен, поскольку он выполняет рекурсивный поиск DNS для конечных пользователей. Однако играть две роли одновременно невыгодно. Рекомендуется разделить две роли на двух разных машинах.

В предыдущей статье я объяснил шаги по настройке локального преобразователя DNS в Debian 10 Buster. В этом руководстве показано, как настроить BIND9 в Debian 10 Buster в качестве авторитетного DNS-сервера с отключенной рекурсией.

Предпосылки

Чтобы следовать этому руководству, вы уже должны были купить доменное имя. Я зарегистрировал свое доменное имя в NameCheap, потому что цена низкая, и они предоставляют защиту конфиденциальности whois бесплатно на всю жизнь.

Вам также понадобятся два сервера. Один сервер предназначен для главного DNS-сервера, а другой — для подчиненного DNS-сервера.В идеале два сервера должны находиться в разных физических местах. Если один DNS-сервер отключен, другой DNS-сервер по-прежнему может отвечать на DNS-запросы для вашего доменного имени.

Каждому серверу требуется всего 512 МБ ОЗУ, и я рекомендую хостинг-провайдеров. Я использовал их все.

  • Vultr: от 2,5 долларов США в месяц. Требуется кредитная карта. Вы можете создать учетную запись на Vultr по моей реферальной ссылке, чтобы получить бесплатный кредит в размере 50 долларов США.
  • DigitalOcean: от 5 долларов в месяц. Кредитная карта не требуется. Вы можете использовать Paypal. Вы можете создать учетную запись в DigitalOcean по моей реферальной ссылке, чтобы получить бесплатный кредит в размере 50 долларов США.

Купив два сервера, установите на них Debian 10 и следуйте приведенным ниже инструкциям.

Обратите внимание, что при установке программного обеспечения в Debian вам необходимы привилегии root. Вы можете добавить sudo в начале команды или использовать команду su, чтобы переключиться на пользователя root.

Настройка авторитетного DNS-сервера в Debian 10 Buster с помощью BIND9

В этом разделе необходимо выполнить команды на обоих серверах.

Войдите на два сервера через SSH и выполните следующие команды, чтобы установить BIND 9 на сервер Debian 10 из репозитория по умолчанию. BIND 9 — текущая версия, а BIND 10 — мертвый проект.

Проверьте номер версии.

Чтобы проверить номер версии и параметры сборки, запустите

По умолчанию BIND автоматически запускается после установки. Вы можете проверить его статус с помощью:

Подсказка: если приведенная выше команда не завершается немедленно, нажмите Q.

Если он не запущен, запустите его с помощью:

И включите автозапуск при загрузке:

Сервер BIND будет работать от имени пользователя привязки, созданного во время установки, и будет прослушивать TCP- и UDP-порт 53, что можно увидеть, выполнив следующую команду:

Демон BIND называется named. (Демон — это часть программного обеспечения, работающего в фоновом режиме.) Именованный двоичный файл устанавливается пакетом bind9, и есть еще один важный двоичный файл: rndc, удаленный контроллер демона имен, который устанавливается пакетом bind9utils. Двоичный файл rndc используется для перезагрузки/остановки и управления другими аспектами демона BIND. Связь осуществляется через TCP-порт 953.

Например, мы можем проверить состояние сервера имен BIND.

Основной файл конфигурации BIND /etc/bind/named.conf получает настройки из трех других файлов.

  • /etc/bind/named.conf.options
  • /etc/bind/named.conf.local
  • /etc/bind/named.conf.default-zones

По умолчанию сервер BIND9 в Debian предоставляет рекурсивную службу для локальных клиентов и клиентов в локальной сети. Поскольку мы настраиваем авторитетный DNS-сервер, нам нужно отключить рекурсию. Отредактируйте файл /etc/bind/named.conf.options.

Добавьте следующие строки в предложение options.

С технической точки зрения вам нужно только добавить рекурсию no; чтобы отключить рекурсию, но рекомендуется добавить остальные 3 директивы. Сохраните и закройте файл. Затем перезапустите BIND.

Основная конфигурация DNS-сервера

Главный DNS-сервер содержит главную копию файла зоны. На этом сервере производятся изменения DNS-записей. Домен может иметь одну или несколько зон DNS. Каждая зона DNS имеет файл зоны, который содержит все записи DNS в этой зоне. Для простоты в этой статье предполагается, что вы хотите использовать одну зону DNS для управления всеми записями DNS для вашего доменного имени.

Файл /etc/bind/named.conf.default-zones определяет корневую зону и зону localhost. Чтобы добавить зону для вашего доменного имени, отредактируйте файл /etc/bind/named.conf.local.

Вместо создания файла зоны с нуля мы можем использовать файл шаблона зоны. Скопируйте содержимое db.empty в новый файл.

Файл зоны может содержать 3 типа записей:

  • Комментарии: начинайте с точки с запятой (;)
  • Директивы: начинайте со знака доллара ($)
  • Записи ресурсов: записи DNS.

Файл зоны обычно состоит из следующих типов записей DNS.

  • Запись SOA (Начало полномочий): определяет ключевые характеристики зоны. Это первая запись DNS в файле зоны, и она является обязательной.
  • Запись NS (сервер имен): указывает, какие серверы используются для хранения записей DNS и ответов на запросы DNS для доменного имени. В файле зоны должно быть не менее двух NS-записей.
  • Запись MX (почтовый обменник): указывает, какие хосты отвечают за доставку электронной почты для доменного имени.
  • Запись A (адрес): преобразует имена DNS в адреса IPv4.
  • Запись AAAA (Quad A): преобразует имена DNS в адреса IPv6.
  • Запись CNAME (каноническое имя): используется для создания псевдонима для DNS-имени.
  • Запись TXT: SPF, DKIM, DMARC и т. д.

Теперь давайте отредактируем файл зоны.

По умолчанию это выглядит так:

Вместо этого вы можете изменить его на это.

  • Директива $TTL определяет значение Time to Live по умолчанию для зоны, которое представляет собой время, в течение которого запись DNS может быть кэширована на преобразователе DNS. Эта директива является обязательной. Время указывается в секундах.
  • Директива $ORIGIN определяет базовый домен.
  • Доменные имена должны заканчиваться точкой (.), которая является корневым доменом. Когда имя домена заканчивается точкой, это полное доменное имя (FQDN).
  • Символ @ указывает на базовый домен.
  • IN — это класс DNS. Это означает Интернет. Существуют и другие классы DNS, но они редко используются.

Первая запись в файле зоны — это запись SOA (начало полномочий). Эта запись содержит следующую информацию:

Записи TXT обычно заключаются в двойные кавычки. Если вы добавляете запись DKIM, вам также необходимо заключить значение в круглые скобки.

Сохраните и закройте файл. Затем выполните следующую команду, чтобы проверить наличие синтаксических ошибок в основном файле конфигурации. Тихий вывод означает, что ошибок не обнаружено.

Затем проверьте синтаксис файлов зон.

Если в файле зоны есть синтаксические ошибки, вам необходимо их исправить, иначе эта зона не будет загружена. Следующее сообщение указывает на отсутствие синтаксических ошибок.

Затем перезапустите BIND9.

Если вы используете простой брандмауэр (UFW), откройте порт TCP и UDP 53.

Если вы используете брандмауэр iptables напрямую, выполните следующую команду.

Конфигурация подчиненного DNS-сервера

Сначала отредактируйте файл named.conf.local.

Добавьте зону, как показано ниже. Замените 12.34.56.78 на IP-адрес главного DNS-сервера.

Сохраните и закройте файл. Затем выполните следующую команду, чтобы проверить наличие синтаксических ошибок в основном файле конфигурации.

Если ошибок не обнаружено, перезапустите BIND9.

Файл зоны на подчиненном DNS-сервере загружается из зоны передачи, которая используется для синхронизации изменений записей DNS с главного DNS-сервера на подчиненный DNS-сервер. После перезапуска BIND9 передача зоны начнется немедленно. Проверьте журнал BIND9 с помощью следующей команды.

Вы можете увидеть сообщения, как показано ниже, что означает, что передача зоны прошла успешно.

Если вы используете простой брандмауэр (UFW), откройте порт TCP и UDP 53.

Если вы используете брандмауэр iptables напрямую, выполните следующую команду.

Подробнее о переносе зоны

Подчиненный DNS-сервер снова свяжется с главным сервером, когда истечет время обновления в записи SOA, и если серийный номер на главном сервере больше, чем на подчиненном, будет инициирована передача зоны. Существует два типа переноса зон:

  • Передача полной зоны (AXFR): передается полная копия файла зоны.
  • Инкрементальный перенос зоны (IXFR): переносятся только измененные записи DNS.

Оба типа передачи зоны используют порт TCP 53. По умолчанию BIND на подчиненном DNS-сервере запрашивает добавочную передачу зоны, а BIND на главном DNS-сервере разрешает добавочную передачу зоны только в том случае, если зона является динамической.

Интервал передачи зоны является основным фактором, влияющим на скорость распространения изменений записей DNS. Вместо того, чтобы ждать, пока ведомый DNS-сервер установит контакт, мастер BIND будет уведомлять ведомый сервер, когда в зону вносятся изменения. Это может значительно сократить время распространения изменений зоны в Интернете.

Обратная зона

Обратная зона содержит запись PTR, которая сопоставляет IP-адрес с DNS-именем. Это аналог записи DNS A. Запись PTR часто необходима почтовым серверам для прохождения спам-фильтров. Эта запись не принадлежит домену. Вам необходимо создать запись PTR в панели управления вашего хостинг-провайдера или обратиться к своему интернет-провайдеру, поэтому я не буду описывать создание обратных зон в BIND.

Изменить запись NS и создать связующую запись

Я покажу вам, как это сделать в NameCheap.

Если вы купили доменное имя в NameCheap, войдите в свою учетную запись NameCheap. Выберите меню «Список доменов» на левой боковой панели, затем нажмите кнопку «Управление» справа.

Выберите Расширенный DNS.

После добавления двух серверов имен нажмите кнопку поиска, чтобы проверить, успешно ли они добавлены. Если это так, записи склеивания появятся внизу этой страницы.

Теперь перейдите на вкладку "Домен" и используйте собственный DNS-сервер.

После того как связующая запись и запись NS будут распространены в Интернете, ваши DNS-серверы будут отвечать на DNS-запросы для вашего доменного имени. Вы можете проверить журнал запросов с помощью:

Вы также можете использовать утилиту dig для проверки записи NS вашего доменного имени.

Если запись NS и запись склеивания были распространены в Интернете, вы должны увидеть свои серверы имен в разделе ответов. Если вы видите ошибку SERVFAIL, возможно, это связано с тем, что вы не открыли UDP-порт 53 на своих серверах имен.

Что нужно знать

  • Термин главный DNS-сервер подразумевает только то, что на этом сервере хранится главная копия файла зоны. У него нет более высокого приоритета, когда речь идет о разрешении DNS.
  • Всегда обновляйте серийный номер SOA при внесении изменений в файл зоны.

Включение преобразователя

BIND может одновременно выступать в качестве авторитетного DNS-сервера для зоны и преобразователя DNS. Хорошей практикой является разделение двух ролей на двух разных машинах, и в этой статье мы отключили преобразователь в BIND. Если вы действительно хотите включить преобразователь, следуйте приведенным ниже инструкциям.

Отредактируйте файл конфигурации BIND.

Найдите следующие строки.

Измените их на следующие, чтобы только доверенные IP-адреса могли отправлять рекурсивные запросы к вашему преобразователю DNS, и ваш сервер не был бы открытым преобразователем.

Замените 12.34.56.78 своим IP-адресом. Сохраните и закройте файл. Убедитесь, что в определении зоны в файле /etc/bind/named.conf.local указан следующий параметр, чтобы Интернет мог запрашивать записи DNS в вашей зоне.

Затем перезапустите BIND.

Подведение итогов

Вот оно! Я надеюсь, что это руководство помогло вам настроить авторитетный DNS-сервер в Debian 10 Buster с помощью BIND9. Как всегда, если вы нашли этот пост полезным, подпишитесь на нашу бесплатную рассылку новостей, чтобы получать больше советов и рекомендаций. Будьте осторожны 🙂

Теперь представьте, что наш сетевой администратор по той или иной причине решает перенести почтовый сервер на машину 192.168.0.11. Единственное, что нужно изменить, это файл конфигурации DNS-сервера. Вы всегда можете пойти и изменить конфигурацию хоста для всех пользователей, но это займет много времени и будет неудобно.

Установка

Для установки будет использоваться пакет bind9.

и затем, если вы хотите также установить документацию (очень полезно):

Конфигурация

После установки вам может понадобиться ознакомиться с некоторыми файлами конфигурации. Они находятся в каталоге /etc/bind/

Подпись TSIG

Отпечаток, связанный с ключом, равен 53334. Мы получаем два файла, один с ключом расширения, а другой с закрытым расширением. Это заменяет ключ в файле ns-example-com_rndc-key ключом в одном из этих двух файлов.

Файл ns-example-com_rndc-key не должен быть доступен для чтения всем по соображениям безопасности. Это должно быть вставлено в конфигурацию привязки с помощью включения, потому что сама конфигурация привязки доступна для чтения всем. Кроме того, рекомендуется удалить созданные ранее файлы ключей и личные файлы.

Файл /etc/bind/named.conf

Этот файл является основным файлом конфигурации для файла DNS.

Примечание: в Debian Jessie 'зона "." <. >' находится внутри файла "named.conf.default-zones". Вам не нужно добавлять его в файл "named.conf".

Файл /etc/bind/named.conf.default-zones

Примечание: начиная с Debian 7 "Wheezy" bind9 поставляется с файлом, содержащим зоны прямой, обратной и широковещательной передачи по умолчанию.

Файл /etc/bind/named.conf.options

Этот файл содержит все параметры конфигурации DNS-сервера

М. Раш написал интересную статью об этом и о том, как произвольно форсировать исходный порт через iptables: Смягчение атак с отравлением кеша DNS с помощью iptables

чтобы получить таймаут 10 секунд.

Файл /etc/bind/named.conf.local

Этот файл содержит конфигурацию локального DNS-сервера, и здесь вы объявляете зоны, связанные с доменом(ами) этого сервера.

ПРИМЕЧАНИЕ: если вы создаете локальное не-FQDN и называете его .local, оно конфликтует с некоторыми другими пакетами (какими?). Отредактируйте /etc/nsswitch.conf и переместите dns сразу после того, как файлы в строке хоста заставят работать домены .local.

Файл /etc/bind/named.conf.log

В Debian Jessie вам нужно создать этот файл в /etc/bind

Здесь мы определяем разные методы регистрации для разных категорий. Первая категория, как указывает ее название, является категорией по умолчанию, которая обычно назначается системному журналу. Все не упомянутые категории аналогичны категории по умолчанию. Список различных категорий см. в справочном руководстве администратора bind9. Что касается блейд-серверов, то он игнорирует все связанные с ними логи. Возможно, позже потребуется создать /var/log в chroot.

Записи ресурсов (RR)

Файлы в /var/lib/bind/

Некоторые пояснения:

Класс в ассоциации определяет интернет-класс. Доступны другие классы (CH и HS). Для получения дополнительной информации обратитесь к rfc1035

Файл /etc/resolv.conf

Это не сложнее!

Debian Wheezy и более ранние версии

По умолчанию демон named запускается с использованием связанного пользователя.

Этот параметр находится в файле конфигурации службы привязки /etc/default/bind9

Сценарий запуска привязки /etc/init.d/bind9 считывает этот файл конфигурации при запуске службы.

Запуск bind от имени пользователя без полномочий root является хорошей практикой, но для запуска демона в среде chroot нам также необходимо указать каталог chroot. Это делается с помощью той же переменной OPTIONS в /etc/default/bind9.

Для начала остановите службу привязки:

Затем отредактируйте /etc/default/bind9:

Если привязка отказывается запускаться с такими сообщениями об ошибках, как "network unreachable resolving: ", за которыми следует хост и IPv6-адрес, вы можете добавить аргумент "-4", чтобы заставить привязку всегда использовать IPv4 вместо IPv6:

Создайте необходимые специальные файлы устройства и установите правильные разрешения:

Переместите текущий каталог конфигурации в новый каталог chroot:

Теперь создайте символическую ссылку в /etc для совместимости:

Если вы хотите использовать местный часовой пояс в chroot (например, для системного журнала):

Измените переменную PIDFILE в /etc/init.d/bind9, указав правильный путь:

Наконец скажите rsyslog прослушивать журналы привязки в правильном месте:

Перезапустите rsyslog и запустите привязку:

Debian Jessie и более поздние версии

По умолчанию демон named запускается с использованием связанного пользователя.

Создайте файл /etc/systemd/system/bind9.service с параметрами "-t /var/bind9/chroot":

Однако, по крайней мере, в Debian 9 stretch можно было использовать версию файла модуля systemd, созданную сопровождающим пакета, и добавить переопределения chroot в: /etc/systemd/system/bind9.service.d/bind9.conf (или соответствующим образом установив свой chroot-каталог), например:

Однако, по крайней мере, начиная с Debian 10 buster, вероятно, лучше удалить такой файл /etc/systemd/system/bind9.service.d/bind9.conf (поскольку способ, которым systemd теперь запускает bind9 named, изменено и обычно будет конфликтовать с переопределением, выполненным, как указано выше), и теперь лучше всего иметь переопределения в /etc/default/bind9, например:

и systemd теперь будет включать ОПЦИИ из /etc/default/bind9 и использовать их (по крайней мере, также sysvinit).

Обновите символическую ссылку на файл модуля с помощью:-

Также рекомендуется запустить:

для систем systemd (по умолчанию) для получения любых изменений в файлах конфигурации systemd.

Создайте необходимые специальные файлы устройства и установите правильные разрешения:

Переместите текущий каталог конфигурации в новый каталог chroot:

Теперь создайте символическую ссылку в /etc для совместимости:

Если вы хотите использовать местный часовой пояс в chroot (например, для системного журнала):

Начиная с Buster, AppArmor включен по умолчанию в Debian, для чего необходимо добавить следующие 4 строки в /etc/apparmor.d/local/usr.sbin.named:

Без этого изменения привязка завершалась бы немедленно при запуске с сообщением об ошибке "open: /etc/bind/named.conf: разрешение отклонено". Чтобы эти изменения AppArmor вступили в силу:

Кроме того, для Debian 10 Buster дополнительно требуется /usr/share/dns в chroot.

Наконец скажите rsyslog прослушивать журналы привязки в правильном месте:

Перезапустите rsyslog и запустите привязку:

Кроме того, альтернативный подход chroot к копированию многих файлов и т. д. и более совместимый для взаимодействия утилит и т. д. вне chroot. Можно переместить какой-либо каталог (/и), создать несколько каталогов/файлов по мере необходимости и использовать привязку монтирования, например: включенную в /etc/fstab:

и тогда мы также имеем:

на самом деле можно настроить конфигурацию, которая не только работает внутри chroot, но и работает без использования chroot — только изменение того, как вызывается bind9/named, и ничего больше, а между символическими ссылками и монтированием привязок, утилитами вне chroot также будет нормально взаимодействовать с bind, «как если бы» он был вне chroot — поскольку они находят необходимые компоненты связывания логически в одном и том же месте, даже несмотря на то, что большинство из них физически находятся в структуре chroot (а некоторые, через монтирование связывания, находятся снаружи). chroot и одинаково доступны внутри и вне chroot).

Как я упоминал в начале, назначение IP-адресов в локальной сети выполняется DHCP-сервером. Таким образом, чтобы настроить наш DNS-сервер для разных клиентов, необходимо добавить в файл конфигурации DHCP следующие две строки:

опциональное доменное имя "example.com"

Должно быть добавлено в файл (я так думаю) области, для которых DHCP должен автоматически выполнять обновления.

Синтаксис (все, что после "=>" - мои комментарии):

основной 127.0.0.1; => основной DNS-сервер находится на том же компьютере, что и DHCP

Примеры [название.зоны.] (с "." в конце):

- 0.168.192.in-addr.arpa. : для обратной зоны этой статьи.

Дополнительную информацию о реализации динамического обновления записей DNS через DHCP можно найти здесь

Настройка DNS-сервера в Debian 10

Система доменных имен (сокращенно DNS) — это интернет-служба, которая используется для преобразования доменного имени в IP-адрес и наоборот.

BIND (Berkeley Internet Name Domain) обеспечивает функциональность преобразования имени в IP-адрес.

Этот пост поможет вам настроить DNS-сервер в Debian 10 / Debian 9.

Окружающая среда

Имя домена: itzgeek.local
ns1.itzgeek.local 192.168 .0.10 Главный DNS-сервер

Предпосылки

Обновите индекс репозитория.

Убедитесь, что DNS-сервер имеет статический IP-адрес.

Установить DNS-сервер

Имя пакета DNS-сервера в Debian — bind9, и он доступен в базовом репозитории. Вы можете использовать команду apt для установки пакета bind9.

Настроить DNS-сервер

Каталог /etc/bind/ — это каталог конфигурации bind9, содержащий файлы конфигурации и файлы поиска зон. Глобальный файл конфигурации — /etc/bind/named.conf .

Создать зоны

Давайте начнем с создания зоны переадресации для вашего домена.

Не следует использовать файл глобальной конфигурации для локальной зоны DNS, вместо этого можно использовать файл /etc/bind/named.conf.local.

Передняя зона

Ниже приведена запись прямой зоны для домена itzgeek.local в файле named.conf.local.

Обратная зона

Следующее относится к обратной зоне в файле named.conf.local.

Создать файл поиска зоны

После создания зон вы можете приступить к созданию файлов данных зон для прямой и обратной зон.

Передняя зона

Скопируйте примеры записей в файл зоны с именем forward.itzgeek.local.db для зоны пересылки в каталоге /etc/bind.

Типы записей в файле зоны,

SOA — начало полномочий
NS — сервер имен
A — запись A
MX — почта для Exchange
CN — каноническое имя

Имена доменов должны заканчиваться точкой (.).

Обновите содержимое, как показано ниже.

Каждый раз, когда вы изменяете какие-либо записи в файле поиска, убедитесь, что вы обновили серийный номер до некоторого случайного числа, большего, чем текущее.

Обратная зона

Скопируйте образцы записей в файл зоны с именем reverse.itzgeek.local.db для обратной зоны в каталоге /etc/bind и создайте обратные указатели для вышеуказанных записей прямой зоны.

PTR — указатель
SOA — начало полномочий

Редактировать файл обратной зоны.

Обновите содержимое, как показано ниже.

Каждый раз, когда вы изменяете какие-либо записи в файле поиска, убедитесь, что вы обновили серийный номер до некоторого случайного числа, большего, чем текущее.

Проверьте синтаксис конфигурации BIND

Используйте команду named-checkconf, чтобы проверить синтаксис файлов named.conf* на наличие ошибок.

Команда вернется в оболочку, если ошибок нет.

Кроме того, вы можете использовать named-checkzone для проверки синтаксических ошибок в файлах зон.

Передняя зона

Вывод:

Обратная зона

Вывод:

Перезапустите службу привязки.

Проверьте состояние службы bind9.

Подтвердить DNS

Перейдите на любой клиентский компьютер и добавьте IP-адрес нашего нового DNS-сервера в файл /etc/resolv.conf.

Сделайте запись, как показано ниже.

ИЛИ

Прочитайте приведенное ниже руководство, чтобы установить IP-адрес DNS-сервера в Linux.

Вы можете использовать команду nslookup или dig для проверки DNS-сервера.

Используйте команду dig для проверки прямого поиска.

Если команда не найдена, установите bind-utils для производных продуктов Red Hat или dnsutils для производных пакетов Debian.

Вывод:

Подтвердите обратный поиск командой dig.

Вывод:

Этот результат подтверждает, что поиск прямой и обратной зоны работает нормально.

Заключение

Это все. Вы успешно установили DNS-сервер в Debian 10 / Debian 9. В нашей следующей статье мы настроим подчиненный DNS-сервер в Debian 10 / Debian 9.

Узнайте, как шаг за шагом настроить частный DNS-сервер в Debian 10 Linux. Bind — это служба DNS, которая присваивает вашему IP-адресу уникальное имя, которое на самом деле называется доменным именем. Это упрощает определение IP-адреса в Интернете или даже в локальной сети (LAN). В сети может быть только одно доменное имя. Когда доменное имя преобразуется в его IP-адрес, эта операция идентифицируется как прямая зона, а когда IP-адрес ссылается на его имя, она называется обратной зоной. В этой статье мы попытаемся научить вас, как настроить частный DNS-сервер в Debian 10. Вы можете посетить различные пакеты в Eldernode, чтобы купить VPS-сервер.

Оглавление

Настройка частного DNS-сервера в Debian 10

Bind расшифровывается как Домен имен Интернета Беркли, известный как служба DNS в Linux. Bind — одна из самых популярных служб доменных имен, которую мы установим в этой статье. В этом руководстве мы сначала установим Bind, а затем на втором этапе создадим зону во внутренней сети. Оставайтесь с нами.

Учебное пособие по настройке частного DNS-сервера в Debian 10

Как установить и настроить Bind в Debian 10 Linux

<р>1. Сначала настройте хост Debian 10.

<р>2. Затем введите следующую команду, чтобы установить на Debian последние обновления:

<р>3. После полного обновления перезагрузите систему один раз.

Как установить Bind в Debian Stretch

<р>1. Введите следующую команду, чтобы установить службу и пакет Bind:

<р>2. После установки запустите службу привязки с помощью следующей команды:

Узнайте, как установить Bind в Debian 10 и собрать Zone

<р>1. Откройте файл etc/bind/named.conf в редакторе:

Введите следующие операторы, чтобы настроить файлы хранилища Bind и то, как они работают:

На данный момент вы знакомы с установкой и настройкой Bind. Теперь построим Зону для внутренней сети.

<р>2. Откройте файл etc/bind.named.conf.internal-zones в редакторе.

Это тот же файл, который был добавлен в параметре Bind. Если вы изменили его имя, вы должны добавить такое же имя в этом разделе:

<р>3. Затем скопируйте и вставьте следующие операторы, чтобы создать и настроить зону:

Примечание. Обратите внимание, что в приведенных выше утверждениях в полях, которые становятся красными, вы должны ввести свое доменное имя, диапазон IP-адресов и имя обратной зоны.

Как определить диапазон ответа привязки (частный DNS-сервер в Debian 10)

Теперь, если вам нужно установить диапазон ответа сервера Bind, вы должны сделать следующее.

<р>1. Откройте файл etc/bind/named.conf.options/ в редакторе.

<р>2. Затем введите следующие команды, чтобы ограничить Bind ответом на определенный диапазон IP-адресов:

На этом установка и настройка Bind и построение Zone во внутренней сети завершены.

После добавления или редактирования каждой зоны и файлов, упомянутых с помощью следующей команды, необходимо один раз перезапустить службу Bind:

Примечание. Служба DNS будет работать с портом 53 и протоколами TCP и UDP, поэтому откройте этот порт для обоих протоколов в системном брандмауэре.

Заключение

Возможно, основная цель DNS – облегчить выполнение сетевых запросов. Всегда очень легко запомнить имя, и именно поэтому мы присваиваем имя IP-адресу в каждой сети. В этой статье мы попытались научить вас, как настроить частный DNS-сервер в Debian 10. Если вас также интересует дистрибутив Ubuntu, вы можете обратиться к статье Как настроить частный DNS-сервер в Ubuntu 20.04.

Читайте также: