Настройка DNS для Debian 10

Обновлено: 21.11.2024

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

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

Запросы обрабатываются рекурсивными DNS-серверами на основе информации в их кеше в сочетании с данными рекурсивного сервера имен, указанными в файле /etc/resolv.conf. Система доменных имен — это важнейший элемент архитектуры Интернета, необходимый для объединения компьютеров в сеть, которую мы сегодня называем «Интернетом».

Параметры конфигурации DNS можно редактировать с помощью инструмента «копать» или напрямую редактировать файлы зоны. Редактировать файлы зон не рекомендуется, так как ошибка может привести к недоступности веб-сайта, хотя это бывает редко. Если вы не уверены в том, что делаете, по возможности используйте вместо этого dig. Некоторые пакеты BIND или Berkeley Internet Name Domain поставляются с «dnsutils» и «host», которые используются для запроса DNS-серверов и вывода результатов. В большинстве систем UNIX также есть утилита nslookup, которую можно использовать для аналогичных целей. Однако «копать» обычно надежнее, чем оба этих инструмента.

Как работает DNS?

Примечание. По возможности настраивайте разные серверы имен для каждого поддомена, поскольку для каждого из них требуются отдельные процедуры обслуживания и администрирования. На самом деле именно так DNS была спроектирована в самом начале, когда протоколы TCP/IP были выпущены в 1983 году до изобретения системы доменных имен. Это было сделано позже, после создания службы регистрации InterNIC в 1992 году. Субдомены были введены как расширение протокола DNS и предназначались только для административных целей.

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

Весь этот процесс многократно повторяется до тех пор, пока:

  1. Неавторизованный сервер имен отвечает на запрос IN, говоря, что ему неизвестна запрошенная информация.
  2. Сервер имен находит то, что он считает авторитетным ответом на запрос, и отправляет его обратно на клиентский компьютер.
  3. Количество итераций, предварительно настроенное в кэше имен преобразователя, истекает.

В этом руководстве вы узнаете, как настроить собственный внутренний DNS-сервер в Debian. Для этого мы используем программное обеспечение сервера имен BIND (BIND9).

Что такое BIND9?

BIND (Berkeley Internet Name Domain) — это реализация протокола DNS. В BIND 9 было внесено несколько важных улучшений, включая поддержку IPv6, гораздо более гибкую настройку и управление, улучшенную производительность кэширования, поддержку EDNS0 для более крупных ответов UDP и улучшенное управление динамически назначаемыми IP-адресами.

BIND — наиболее широко используемое программное обеспечение сервера имен в Интернете. Он поддерживает ряд различных протоколов службы доменных имен, включая BIND4 (исходный домен имен Интернета Беркли, версия 4), BIND8 (исторический преемник BIND4) и службы DNS для IPv6 посредством двух отдельных реализаций: одна основана на демоне, и еще один, называемый lwres (облегченный преобразователь).

BIND 9.5 — это текущая стабильная версия BIND, которую можно загрузить как в исходном, так и в бинарном виде с Internet Software Consortium.

Предпосылки

Прежде чем мы начнем процесс установки DNS-сервера в Debian, вы должны спросить себя: «Действительно ли мне нужен DNS-сервер?»

Эта статья посвящена только IPv4, поэтому, если вы заинтересованы в использовании DNS для IPv6, необходимо проделать дополнительную работу. Это руководство больше не поможет вам в таких темах, как добавление записей AAAA вручную и т. д.

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

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

В вашей системе уже должны быть настроены пользователь sudo и брандмауэр.

Начало работы

Обновление вашей системы

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

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

Команда apt-get update обновит списки пакетов сервера. С помощью команды apt-get upgrade все установленные на нем пакеты будут обновлены.

Это займет некоторое время в зависимости от скорости вашего сетевого подключения и количества устанавливаемых обновлений.

Пример вывода:

Установка BIND9

Теперь, когда ваша система обновлена, вы можете приступить к установке DNS-сервера — BIND. Это будет сделано путем установки нескольких новых пакетов:

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

BIND9 — это программное обеспечение DNS-сервера.

bind9utils — это утилиты для управления конфигурацией BIND, названные в честь команды, используемой для управления BIND из командной строки.

Примечание: bind9-doc — это пакет документации для программного обеспечения BIND.

Пример вывода:

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

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

Приведенная выше команда покажет установленную версию BIND и ее зависимости.

Пример вывода:

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

Приведенная выше команда даст вам более подробное представление о функциях BIND на вашем сервере, таких как активное время, количество зон и т. д.

Вы получите что-то вроде следующего:

Пример вывода:


Если вы когда-нибудь захотите запустить, остановить или перезапустить BIND, просто выполните следующие команды:

запуск службы sudo bind9

остановка службы sudo bind9

перезагрузка службы sudo bind9

Сервер BIND будет работать как пользователь и группа привязки по умолчанию. Это делает его достаточно безопасным, поскольку любые изменения в файлах зоны разрешены только для этого пользователя. Сервер BIND по умолчанию прослушивает порт 53 для DNS-запросов. Вы можете изменить этот порт в файле named.conf, если хотите. Выполните следующую команду, чтобы узнать, какой порт прослушивает ваш сервер BIND:

Пример вывода:

Приведенная выше команда показывает, что демон named в настоящее время запущен и прослушивает порт 53 UDP. Используйте эту информацию, чтобы проверить, используете ли вы правильный номер порта.

Если ваш сервер не использует порт 53, это можно исправить, отредактировав /etc/bind/named.conf.local и изменив номер порта на любой другой. Вы также можете изменить имя файла журнала сервера, отредактировав /etc/bind/named.conf.default-zones и добавив операторы ведения журнала в директиву options.

Настройка BIND9

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

Каталог конфигурации для BIND находится в /etc/bind. В этом каталоге есть несколько важных файлов:

Файл с именем «named.conf» является основным файлом конфигурации, в котором есть много комментариев для разъяснения каждого раздела.

Следующий файл конфигурации, который мы будем редактировать, находится в /etc/bind/named.conf.local. Этот файл содержит всю вашу сетевую информацию о сервере и зонах, которые вы хотите разрешить локально (от серверов имен).

Зона named.conf.default-zones находится в /etc/bind/named.conf.default-zones. Этот файл содержит информацию о сервере для зон, используемых BIND, когда явно не указано использовать другую зону. Другими словами, зоны, которые включены.

Итак, давайте начнем с базовой настройки.

Пример вывода:

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

Что произойдет, если вы попытаетесь получить доступ к веб-сайту, размещенному, например, на IP-адресе «154.54.55.56»? Ответ прост: все запросы останутся без ответа, потому что не указана конфигурация для адреса «154.54.55.56" IP-адрес в BIND9, а демон "named" отказался обслуживать любые DNS-запросы из-за пределов своего сетевого интерфейса.

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

Давайте сделаем это, отредактировав файл конфигурации named.conf.options:

sudo nano named.conf.options

Заменим прослушивание;

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

Теперь мы включили BIND9 для прослушивания на всех интерфейсах.

Пример вывода:

Создание зон прямого просмотра (домен -> IP)

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

Примечание. Если вы планируете разрешать внешние домены из своей сети, на вашем сервере должен быть установлен действительный доступный в Интернете IP-адрес.

Теперь мы отредактируем файл «/etc/bind/named.conf.local», чтобы объявить зону прямого просмотра:

Добавьте в конец файла следующее:

// разрешить передачу < xxx.xxx.xxx.xxx; >; // Дополнительный DNS-сервер хостера

В этом контексте:

Введите «мастер». Это файл основной доменной зоны. Для параметра type можно установить значение «slave», если вы размещаете прямую или обратную зону, предназначенную только для уполномоченных, и не хотите разрешать динамические обновления.

разрешить передачу . Требуется разрешить перенос зоны на вторичный DNS-сервер хостера, потому что, если ваш хостинг-провайдер не позволяет вам это сделать, вы не можете обновить его онлайн с помощью команды «rndc reload» на локальном хосте. ххх.ххх.ххх.ххх; IP-адрес вторичного DNS-сервера (серверов имен), размещенного у вашего хостинг-провайдера.

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

Пример вывода:


Теперь мы собираемся создать файл для каждой зоны, объявленной выше:

Заполните файл следующим:

<р>; Файл данных BIND для локального петлевого интерфейса

@ В SOA ns1.linuxhint.local. root.linuxhint.local. (

604800 ) ; Отрицательный срок жизни кэша

<р>; Комментарий ниже трех строк

<р>; @ В локальном хосте NS.

;Информация о сервере имен

@ В NS ns1.linuxhint.local.

;IP-адрес сервера имен

ns1 В 192.168.0.10

linuxhint.local. В MX 10 mail.linuxhint.local.

;A — записать имя хоста в IP-адрес

www в 192.168.0.100

почта IN A 192.168.0.150

В этом файле замените значения linuxhint на имя вашего домена, за которым следует точка (.). Это необходимо и НЕ является ошибкой.

Замените «192.168.0» на ваш общедоступный IP-адрес, а затем точку (.). Это необходимо, чтобы сервер был доступен из Интернета.

Не забудьте сохранить и закрыть файл, когда закончите.

Создание зон обратного просмотра (IP -> домен)

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

Большую часть настройки сети можно выполнить с помощью файла конфигурации interfaces в /etc/network/interfaces. Здесь вы можете дать вашей сетевой карте IP-адрес (или использовать DHCP), настроить информацию о маршрутизации, настроить маскировку IP-адресов, установить маршруты по умолчанию и многое другое.

Не забудьте добавить интерфейсы, которые вы хотите вызывать во время загрузки, в строку "auto".

Дополнительные параметры см. в разделе man-интерфейсы.

Запуск и остановка интерфейсов

Интерфейсы, настроенные с помощью /etc/network/interfaces, можно активировать и деактивировать с помощью команд ifup и ifdown.

Некоторые устаревшие руководства предписывают перезапустить сетевую службу, чтобы применить изменения к /etc/network/interfaces, однако это устарело, поскольку возможен перезапуск не всех интерфейсов. Вместо этого используйте ifup и ifdown, чтобы применить изменения к каждому интерфейсу, например, к интерфейсу с именем enp7s0:

Повторно инициализировать новую настройку сети

Если вы вносите более фундаментальные изменения в сеть, например. добавив новые виртуальные интерфейсы (например, мост) в /etc/network/interfaces, вы можете повторно инициализировать конфигурацию сети, перезапустив демон networking:

Имена сетевых интерфейсов

См. раздел Имена сетевых интерфейсов. Начиная с Stretch новые системы по умолчанию больше не используют имена интерфейсов в старом стиле, такие как eth0, eth1, wlan0, wlan1.В новой системе используются имена, основанные на расположении оборудования, например eno0, enp0s31f6, wlp1s7 (или, в случае USB-ключей, MAC-адрес: enx2c56ac39ec0d).

Вы можете перечислить интерфейсы с помощью: ls /sys/class/net

В различных приведенных ниже примерах по-прежнему используется "eth0" в качестве имени интерфейса по умолчанию, даже несмотря на то, что оно вряд ли существует в современной системе.

Обновление и имена сетевых интерфейсов

Использование DHCP для автоматической настройки интерфейса

Если вы просто используете DHCP, все, что вам нужно, это что-то вроде:

Для DHCPv6 (используется для IPv6) добавьте также следующий раздел iface

Кроме того, IPv6 можно настроить автоматически, используя автоконфигурацию адресов без сохранения состояния или SLAAC, который указывается с помощью auto вместо dhcp в inet6 строфа:

Настройка интерфейса вручную

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

Если вы также хотите добавить адрес IPv6, добавьте что-то вроде:

Дополнительные параметры см. в разделе man-интерфейсы.

Обязательно отключите все службы DHCP, например dhcpcd.

Также возможно сочетание ручной и автоматической настройки, например. для использования IPv6 SLAAC для подключения к Интернету и статических адресов в сети:

Настройка скорости и дуплекса

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

Если одна из этих команд успешно установила вашу сетевую карту, вы можете поместить ее в /etc/network/interfaces, чтобы она запускалась при включении интерфейса (например, во время загрузки). Однако прежде чем вы это сделаете, вы должны понимать, что некоторые драйверы и устройства ведут себя не так, как другие. Когда модуль драйвера загружен, сетевая карта может начать автосогласование без возможности остановить его (особенно с драйверами, которые не принимают параметры). Настройки из interfaces применяются в какой-то момент после этого, что может быть прямо в середине согласования. Таким образом, некоторые люди считают необходимым отложить команду ethtool или mii-tool на несколько секунд. Таким образом:

Открытие интерфейса без IP-адреса

Чтобы создать сетевой интерфейс вообще без IP-адреса, используйте ручной метод и используйте команды pre-up и post-down для включения и выключения интерфейса.

Если интерфейс является интерфейсом VLAN, команды up/down должны выполняться до/после перехвата vlan. (Вы также должны установить пакет vlan.)

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

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

В самых сложных ситуациях лучше всего использовать resolvconf, хотя в более простых конфигурациях это, вероятно, излишне.

Файл конфигурации resolv.conf

Файл конфигурации resolv.conf в /etc/resolv.conf содержит информацию, которая позволяет компьютеру, подключенному к сети, преобразовывать имена в адреса. (Примечание. Не путайте этот файл конфигурации с программой resolvconf, у которой, к сожалению, почти такое же имя.)

Файл resolv.conf обычно содержит IP-адреса серверов имен (преобразователей имен DNS), которые будут пытаться преобразовать имена в адреса для любого узла, доступного в сети. Там будет строка или строки, которые выглядят следующим образом:

В этом примере система использует серверы имен с IP-адресами 12.34.56.78 и 12.34.56.79. Просто отредактируйте файл и введите IP-адреса серверов имен, которые необходимо использовать после каждого сервера имен. Добавьте больше строк nameserver, если у вас больше серверов имен. Не используйте этот метод, если у вас установлена ​​программа resolvconf.

В файле конфигурации resolv.conf есть много других опций для определения того, как преобразователь ищет имена. Подробнее см. в man resolv.conf.

Программа resolvconf

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

Файл конфигурации resolv.conf содержит информацию о серверах имен, которые будут использоваться системой. Однако, когда нескольким программам необходимо динамически изменять файл конфигурации resolv.conf, они могут наступать друг на друга, и файл может рассинхронизироваться. Программа resolvconf решает эту проблему. Он действует как посредник между программами, предоставляющими информацию о сервере имен (например, клиентами DHCP), и программами, использующими информацию о сервере имен (например, распознаватель).

Если resolvconf правильно установлен, файл конфигурации resolv.conf в /etc/resolv.conf заменяется символической ссылкой на /etc/resolvconf/run/resolv.conf, а преобразователь вместо этого использует файл конфигурации, который динамически генерируется resolvconf в /etc/resolvconf/run/resolv .conf.

Программа resolvconf обычно необходима только тогда, когда в системе есть несколько программ, которым необходимо динамически изменять информацию о сервере имен. В простой системе, где серверы имен не меняются часто или меняются только одной программой, достаточно файла конфигурации resolv.conf.

Если установлена ​​программа resolvconf, не следует вручную редактировать файл конфигурации resolv.conf, так как он будет динамически изменяться программами в системе. Если вам нужно вручную определить серверы имен (как в случае со статическим интерфейсом), добавьте в файл конфигурации interfaces в /etc/network/interfaces примерно следующую строку:

Поместите строку с отступом в строфе iface, например, сразу после строки gateway. Введите IP-адреса серверов имен, которые необходимо использовать после dns-nameservers. Поместите их все в одну строку, разделенную пробелами. Не забудьте "s" в конце dns-nameservers.

Программа resolvconf — относительно новое дополнение к Debian, и многие старые программы нуждаются в обновлении или перенастройке для правильной работы с ней. Если у вас возникли проблемы, см. /usr/share/doc/resolvconf/README. В нем содержится много информации о том, как заставить другие программы работать с resolvconf.

Конфигурация DNS для NetworkManager

NetworkManager переопределит настройки DHCP, перезаписав resolv.conf, даже если вы настроили DNS в /etc/dhcp/dhclient.conf, например заставляя DNS сначала искать локальный домен, который может истечь по времени, прежде чем разрешение DNS продолжится, что приведет к длительному времени разрешения DNS. Вы можете получить представление о том, какими, по мнению NetworkManager, должны быть настройки, выполнив команду nm-tool в командной строке.

  1. Выберите подключение (на вкладке "Проводное" или "Беспроводное") и нажмите "Изменить".
  2. Перейдите на вкладку "Настройки IPv4".
  3. Выберите «Только автоматические (DHCP) адреса» вместо «Автоматически (DHCP)».
  4. Введите DNS-серверы в поле «DNS-серверы», разделенные пробелами (например, 208.67.222.222 для OpenDNS).
  5. Нажмите "Применить".

NetworkManager сохраняет эти настройки в /etc/NetworkManager/system-connections/name-of-connection. Пример /etc/NetworkManager/system-connections/Проводное подключение 1 :

Повторный запуск nm-tool должен показать, что NetworkManager теперь имеет правильное представление о том, как следует разрешать ваш DNS.

Конфигурация DHCP-клиента

Настройка дополнительных DNS-серверов

Пример: dhclient3 использует /etc/dhcp/dhclient.conf. Нужная вам настройка

Настройка дополнительных поисковых доменов

добавление поисковых доменов для VPN или локальных виртуальных сетей:

Обратите внимание на начальный пробел, поскольку строка буквально добавляется к домену поиска, предоставленному другими конфигурациями.

Подробности см. на странице руководства dhclient.conf(5).

Пример: подключите сервер к 2 коммутаторам (через eth0 и eth1), определив мост 0 и назначив серверу IP-адрес в этой подсети:

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

Пример: настройка моста без настройки IP-адреса (используйте «ручной» вместо «статический») для «перенаправления» интерфейса на гостевую ВМ. (Конфигурация статического моста содержит только 1 физический интерфейс. Виртуальный интерфейс будет добавлен к мосту при запуске ВМ.)

Примечание. Мост Linux поддерживает только STP, но не RSTP (Rapid Spanning Tree). Поэтому он поддерживает только старые затраты STP, а не новые затраты RSTP (см. Spanning_Tree_Protocol). Обычно это нормально для коммутаторов Cisco, но, например. Коммутаторы Juniper используют затраты RSTP, поэтому это может привести к различным вычислениям связующего дерева и проблемам с петлями. Это можно исправить, настроив стоимость вручную либо на коммутаторе, либо на сервере.Установка стоимости на коммутаторе предпочтительнее, так как Linux переключается обратно на стоимость по умолчанию всякий раз, когда интерфейс отключается/включается.

Соединение без переключения

По умолчанию мост Linux действует как коммутатор. Это означает, что он запоминает MAC-адреса за портом коммутатора и, если MAC-адрес получателя известен, пересылает пакеты данных или только на соответствующий порт — в противном случае пакеты будут транслироваться.

В некоторых случаях это плохо. Например, если мост соединяет 2 магистральных интерфейса и одинаковые MAC-адреса могут быть видны с обоих интерфейсов, в зависимости от VLAN. Поскольку мост Linux не поддерживает VLAN (выделенные таблицы MAC-адресов для каждой VLAN), в таких настройках необходимо отключить изучение MAC-адресов и перевести мост в режим реального «моста» с помощью:

Ручная настройка

Настройка сценария инициализации сети

В /etc/modules добавьте строку:

В /etc/network/interfaces в раздел iface добавьте параметр:

Именем интерфейса должно быть необработанное имя интерфейса (такое же, как указано в vlan-raw-device), затем точка, затем идентификатор VLAN, например eth0.100. Вместо этого это может быть «vlan», а затем идентификатор VLAN, например, vlan100. В любом случае идентификатор VLAN находится в конце, и это единственное место, где он настраивается.

Примечание. Если вы называете свои интерфейсы VLAN ethX.YYY, то нет необходимости указывать vlan-raw-device, так как исходное устройство можно получить по имени интерфейса.

Мосты и виртуальные локальные сети

Если вы создаете интерфейсы VLAN только для того, чтобы поместить их в мост, нет необходимости определять интерфейсы VLAN вручную. Просто настройте мост, и интерфейс VLAN будет создан автоматически при создании моста, например:

Предупреждения при использовании моста и vlan

Если вы используете мостовую настройку VLAN, которая, вероятно, полезна для работы в сети в средах виртуализации, позаботьтесь о том, чтобы подключить мостовое устройство или устройства VLAN только к базовому физическому устройству, как показано выше. Присоединение физического интерфейса (eth0) к мосту (например, bri1) при использовании одного и того же физического интерфейса в явно разных VLAN приведет к тому, что все пакеты останутся помеченными. (Ядро новее 2.6.37 и старше 3.2).

Как настроить один из вышеперечисленных серверов с активным резервным копированием соединения 3 vlan Сеть Debian без SPOF без собственного vlan.

Конфигурация сети

Пример конфигурации интерфейса коммутатора Cisco

связывание с активной резервной копией

Создайте файл /etc/modprobe.d/bonding.conf, содержащий:

/etc/сеть/интерфейсы

Как установить MTU (максимальная единица передачи / размер пакета) с VLANS через связанный интерфейс

MTU необходимо настроить на связующем интерфейсе и подчиненных интерфейсах после того, как сброс конфигурации был применен к связующим интерфейсам. Это делается с помощью линии post-up в конфигурации интерфейса склеивания.

Устаревший метод

Этот текст /etc/network/interfaces назначает три IP-адреса для eth0.

Псевдоним интерфейса не должен иметь "шлюз" или "dns-nameservers"; допустимо динамическое назначение IP-адресов.

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

Сейчас ifupdown использует утилиту ip из пакета iproute2 вместо ifconfig. Более новая утилита ip не использует ту же концепцию псевдонимов или виртуальных интерфейсов. Однако он поддерживает присвоение интерфейсам произвольных имен (они называются метками). ifupdown использует эту функцию для поддержки псевдонимов интерфейсов при использовании ip.

метод iproute2

Кроме того, ifupdown поддерживает указание нескольких интерфейсов путем повторения разделов iface с одинаковым именем интерфейса. Основное отличие от описанного выше метода заключается в том, что ifupdown обрабатывает все такие разделы как один интерфейс, поэтому пользователь не может добавлять или удалять их по отдельности. Однако команды up/down, а также сценарии вызываются для каждого раздела, как это было раньше.

Обратите внимание, однако, что этот метод опасен! Определенные комбинации драйвера/оборудования иногда могут не установить соединение, если псевдонимам интерфейсов не присвоены метки. (Видел это в Debian Wheezy и Jessie с контроллером Gigabit Ethernet RTL8111/8168/8411 PCI Express (версия 01) с автоматическим согласованием до 10/полный. Аналогичное предупреждение от другого человека есть в истории этой страницы.)

Настройка 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.

В этом руководстве показано, как настроить и запустить собственный авторитетный сервер имен в 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. Как всегда, если вы нашли этот пост полезным, подпишитесь на нашу бесплатную рассылку новостей, чтобы получать больше советов и рекомендаций. Будьте осторожны 🙂

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