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

Обновлено: 03.07.2024

На моем рабочем месте мы используем Linux в качестве DNS-сервера. Он работает исключительно хорошо. В этом разделе рассматривается настройка таблиц DNS для этих служб с помощью пакета BIND 8.x, который входит в стандартную комплектацию дистрибутива Red Hat.

Настройка служб DNS в Linux включает следующие шаги:

Чтобы включить службы DNS, файл ``/etc/host.conf'' должен выглядеть следующим образом:

Дополнительное обнаружение спуфинга немного снижает производительность при поиске в DNS (хотя и незначительно), поэтому, если вас это не слишком беспокоит, вы можете отключить записи "nospool" и "alert".

Настройте файл ``/etc/hosts'' по мере необходимости. Как правило, здесь не должно быть много, но для повышения производительности вы можете добавить любые хосты, к которым вы часто обращаетесь (например, локальные серверы), чтобы не выполнять на них поиск DNS.

Файл `` /etc/named.conf '' должен быть настроен так, чтобы он указывал на ваши таблицы DNS, как показано в примере ниже.

Примечание: (Примечание: показанные IP-адреса приведены только в качестве примера и должны быть заменены вашими собственными адресами класса!):

options < // Таблицы DNS расположены в каталоге /var/named directory "/var/named"; // Пересылать любые неразрешенные запросы на сервер имен нашего интернет-провайдера // (это только пример IP-адреса — не использовать!) forwarders < 123.12.40.17; >; /* * Если между вами и серверами имен, с которыми вы хотите * общаться, есть брандмауэр, вам может потребоваться раскомментировать * директиву query-source ниже. Предыдущие версии BIND всегда задавали * вопросы, используя порт 53, но BIND 8.1 по умолчанию использует непривилегированный * порт. */ // адрес источника запроса * port 53; >; // Включить кэширование и загрузить информационную зону корневого сервера "named.root" < type hint; файл ""; >; // Вся наша информация о DNS хранится в /var/named/mydomain_name.db // (например, если mydomain.name = foobar.com, используйте foobar_com.db) zone "mydomain.name" < type master; файл "mydomain_name.db"; разрешить передачу < 123.12.41.40; >; >; // Обратный поиск для 123.12.41.*, .42.*, .43.*, .44.* класса C // (это только примеры класса C - не используйте!) zone "12.123.IN-ADDR .ARPA" < мастер типа; файл "123_12.рев"; разрешить передачу < 123.12.41.40; >; >; // Обратный поиск для 126.27.18.*, .19.*, .20.* класса C // (это только примеры класса C - не используйте!) zone "27.126.IN-ADDR.ARPA" < type владелец; файл "126_27.рев"; разрешить передачу < 123.12.41.40; >; >;

Совет: Совет: обратите внимание на приведенные выше параметры разрешения передачи, которые ограничивают передачу зоны DNS на заданный IP-адрес. В нашем примере мы разрешаем хосту с адресом 123.12.41.40 (вероятно, подчиненный DNS-сервер в нашем домене) запрашивать передачу зоны. Если вы опустите этот параметр, любой человек в Интернете сможет запросить такие переводы. Поскольку предоставленная информация часто используется спамерами и мошенниками IP-адресов, я настоятельно рекомендую вам ограничить передачу зон, за исключением подчиненных DNS-серверов, или использовать вместо этого петлевой адрес `` 127.0.0.1 ''.

< /цитата>

Теперь вы можете настроить свои DNS-таблицы в каталоге `` var/named/ '' в соответствии с настройками в файле `` /etc/named.conf '' на третьем шаге. Настройка файлов базы данных DNS в первый раз является серьезной задачей и выходит за рамки этого документа. Есть несколько руководств, онлайн и в печатной форме, на которые следует ссылаться. Однако ниже приведены несколько примеров.

Примеры записей в файле прямого поиска `` /var/named/mydomain_name.db '':

Примеры записей в файле обратного поиска `` /var/named/123_12.rev '':

Можно создать любые другие файлы обратного просмотра, необходимые для отображения адресов в другом классе B (например, 126.27.*), и они будут выглядеть почти так же, как приведенный выше пример файла обратного просмотра.

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

BIND расшифровывается как Berkley Internet Naming Daemon.

BIND — это наиболее распространенная программа, используемая для поддержки сервера имен в Linux.

В этом руководстве мы объясним, как установить и настроить DNS-сервер.

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

1. Информация о сети

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

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

Мы установим DNS-сервер на «10.42.0.83».

Установить DNS в Linux

2. Установить привязку

Установите пакет bind9, используя соответствующие утилиты управления пакетами для ваших дистрибутивов Linux.

В разновидностях Debian/Ubuntu выполните следующие действия:

В версиях Redhat/CentOS/Fedora выполните следующие действия:

Все конфигурации DNS хранятся в каталоге /etc/bind. Основная конфигурация — это /etc/bind/named.conf, которая будет включать в себя другие необходимые файлы. Файл с именем /etc/bind/db.root описывает корневые серверы имен в мире.

3. Настройка сервера имен кэша

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

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

Все, что нам нужно сделать, чтобы настроить Cache NameServer, — это добавить DNS-сервер вашего интернет-провайдера (интернет-провайдера) или любой сервер OpenDNS в файл /etc/bind/named.conf.options. Например, мы будем использовать общедоступные DNS-серверы Google, 8.8.8.8 и 8.8.4.4.

Раскомментируйте и отредактируйте следующую строку, как показано ниже в файле /etc/bind/named.conf.options.

После указанного выше изменения перезапустите DNS-сервер.

4. Проверка сервера имен кэша

Команду dig можно использовать для тестирования служб DNS. Примеры команд DIG объясняют, как выполнять поиск DNS.

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

5. Настройка основного/главного сервера имен

В качестве первого шага в настройке нашего основного/главного сервера имен мы должны добавить прямое и обратное разрешение в bind9.

Чтобы добавить прямое и обратное разрешение DNS для bind9, отредактируйте файл /etc/bind9/named.conf.local.

6. Создайте прямое разрешение для основного/главного сервера имен

Затем определите запись A и запись MX для домена. Запись — это запись, которая сопоставляет имя хоста с IP-адресом, а запись MX сообщает почтовому серверу, что использовать для этого домена.

6. Создайте обратное разрешение для основного/главного сервера имен

Мы добавим детали, необходимые для обратного разрешения, в файл /etc/bind/db.10. Скопируйте файл /etc/bind/db.127 в /etc/bind/db.10

Глобус в пикселях

В предыдущей статье этой серии, состоящей из двух частей, "Введение в DNS (систему доменных имен)" я описал, как устроена база данных DNS и как настроить службы имен на клиенте. Я также перечислил и описал некоторые из наиболее распространенных записей DNS, с которыми вы, вероятно, столкнетесь при создании сервера имен или просто пытаетесь интерпретировать результаты команды dig.

В этой статье я покажу вам, как создать собственный сервер имен с помощью BIND (домен имен в Интернете Беркли). Это не так сложно, как вы думаете, особенно потому, что вы можете сделать это в два этапа.

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

Настройка DNS-сервера с помощью BIND

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

Установка сервера имен на любом имеющемся у вас компьютере GNU/Linux технически возможна, поскольку он не будет мешать другим хостам в сети или их работе. Однако вам, вероятно, не следует делать это на компьютере, которым вы не владеете или на который не имеете права модифицировать, если у вас нет на это явного разрешения.

Мои настройки

Вам нужен только один компьютер для выполнения всех задач, кроме одной, в этом лабораторном проекте. Я использую эту настройку на своем гораздо более мощном ThinkPad, потому что серверы имен, предоставляемые DHCP (протокол динамической конфигурации хоста), когда я подключаюсь к не домашним сетям с использованием проводных или беспроводных подключений, иногда могут быть ненадежными. Чтобы показать, что почти любой хост может хорошо работать в качестве сервера имен, я протестировал этот проект на старом нетбуке ASUS EeePC 900.

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

Файл hosts

Во-первых, давайте взглянем на файл /etc/hosts. В состоянии по умолчанию в файле hosts должно быть только две строки, первые две строки показаны в листинге 1 ниже.

Листинг 1. Вы можете поддерживать простой файл hosts для выполнения функции преобразователя в небольших сетях.

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

Подготовка

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

Сначала сделайте резервные копии файлов /etc/hosts, /etc/named.conf, resolv.conf и /etc/sysconfig/iptables.

Если они еще не установлены, используйте диспетчер пакетов вашего дистрибутива, чтобы установить следующие RPM-пакеты BIND: bind, bind-chroot и bind-utils. Чтобы ваш лабораторный хост мог использовать кэширующий сервер имен, вы должны добавить строку сервера имен, указывающую на ваш собственный хост, в /etc/resolv.conf. Например, если IP-адрес вашего тестового хоста — 192.168.0.203, как и мой epc, добавьте следующую строку в начало списка серверов имен в /etc/resolv.conf:

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

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

Эти изменения вступят в силу немедленно и не требуют перезагрузки или перезапуска службы. Теперь попробуйте пропинговать общий общедоступный хост, который не блокирует пакеты ICMP (Internet Control Message Protocol); не стесняйтесь использовать мой брандмауэр, которым является Raspberry Pi.

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

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

Настройка кеширующего сервера имен

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

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

Для первоначальной настройки кэширующего сервера имен необходимо внести пару изменений в файл по умолчанию /etc/named.conf, поэтому отредактируйте этот файл в своем любимом редакторе. Сначала добавьте IP-адрес вашего локального тестового хоста в строку «прослушивание порта 53», как показано в листинге 2 ниже. Это позволяет named прослушивать внешний IP-адрес вашего хоста, чтобы другие компьютеры также могли использовать его в качестве сервера имен.

По умолчанию BIND обращается к корневым серверам имен в Интернете, чтобы найти полномочные серверы имен для домена. Можно указать другие серверы, называемые «переадресаторами», на которые локальный экземпляр BIND будет отправлять запросы вместо корневых серверов. Это увеличивает вероятность перехвата DNS.

Добавьте строку "экспедиторы", как показано ниже. Это сообщает вашему кэширующему DNS-серверу, где получить IP-адреса, если они еще не кэшированы локально. IP-адреса в приведенном ниже списке предназначены для общедоступных DNS-серверов Google. Вы можете использовать своего местного интернет-провайдера, OpenDNS или какой-либо другой общедоступный сервер имен в качестве переадресации. Нет необходимости определять какие-либо серверы пересылки, и в этом случае BIND будет использовать корневые серверы Интернета, как определено в файле /var/named/named.ca, для поиска полномочных серверов имен для доменов, если серверы пересылки не определены. Но для этого упражнения определите серверы пересылки, как показано в листинге 2.

Закомментируйте строку IPV6, поскольку мы не используем IPV6 в тестовой среде. Обратите внимание, что две косые черты "//" обозначают комментарии в файле named.conf.

Листинг 2. Файл /etc/named.conf содержит простую конфигурацию, необходимую для настройки кэширующего сервера имен. Строки, которые необходимо добавить или изменить, выделены жирным шрифтом.

Добавьте локальный сетевой адрес 192.168.0.0/24 в строку allow-query. В этой строке указываются сети, из которых DNS-запросы будут приниматься этим DNS-сервером.

Запустить службу имен

Теперь запустите названную службу и настройте ее так, чтобы она запускалась при каждой загрузке. Я использую команду systemctl на моем хосте Fedora, но команда может отличаться на вашем хосте, в зависимости от используемого вами дистрибутива. Обратите внимание, что имя службы распознавателя BIND называется name.

На этом этапе ваш кеширующий сервер имен будет правильно разрешать хосты в Интернете, потому что эти DNS-запросы для общедоступных хостов перенаправляются на общедоступные серверы имен Google — см. строку «forwarders» в named.conf. Однако вы по-прежнему зависите от файла /etc/hosts для внутренних служб имен. Создание первичного сервера имен может решить эту проблему.

Создание основного сервера имен

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

Два новых файла, которые вы создадите, — это файлы прямой и обратной зон, которые вы поместите в каталог /var/named. Это расположение задается директивой "directory" в файле конфигурации named.conf.

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

Файл прямой зоны содержит записи "A", которые связывают имена хостов в зоне, также называемых доменами, с их соответствующими IP-адресами. Он также может содержать записи CNAME, являющиеся псевдонимами реальных имен хостов в записях A, и записи MX для почтовых серверов.

Первая строка без комментариев в листинге 3 — это спецификатор Time to Live, который в данном случае равен одному дню для всех записей, не указанных иначе. Д означает день. Спецификаторы в строке SOA (Start of Authority) столь же очевидны. Детали параметров в записи SOA подробно описаны здесь.

Запись NS должна иметь полное доменное имя (полное доменное имя) хоста, на котором вы выполняете этот лабораторный проект. Также в файле должна быть запись A с действительным IP-адресом хоста. В этом случае вы должны использовать IP-адрес локального хоста 127.0.0.1.

Записи, показанные выше, дадут вам несколько имен хостов, с которыми можно поэкспериментировать.

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

Добавить файлы зоны переадресации в named.conf

Однако, прежде чем ваш DNS-сервер заработает, вам необходимо создать запись в /etc/named.conf, которая будет указывать на ваш новый файл зоны. Добавьте следующие строки под записью для зоны подсказок верхнего уровня, но перед строками «включить».

Теперь перезапустите named, чтобы изменения вступили в силу. Протестируйте свой сервер имен, используя команды dig и nslookup, чтобы получить IP-адреса для хостов, которые вы настроили в файле зоны переадресации. Обратите внимание, что хост не обязательно должен существовать в сети, чтобы команды dig и nslookup возвращали IP-адрес.

Использование корневых серверов имен

Когда я сделал это, первый вызов для разрешения внешнего адреса для Amazon занял 3857 мс, пока данные были найдены и возвращены. Последующие результаты выполнения того же запроса составили 1 мс, что показывает преимущество локального кэширования результатов преобразователя. Обратите внимание на числа 1800, 300 и 60 в строках раздела ответов и 1831 в строках раздела полномочий — это TTL (время жизни) в секундах. Если вы выполните поиск несколько раз, эти числа изменятся, показывая количество времени, которое осталось для записи в локальном кэше.

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

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

Вы также можете назвать файл обратной зоны /var/named/25.168.192.in-addr.arpa, что соответствует старым соглашениям. На самом деле вы можете назвать его как угодно, потому что вы явно укажете на него в файле named.conf, но использование одного из двух соглашений облегчит другим следить за вашей работой.

Добавить обратную зону в named.conf:

Листинг 7. Добавление этого раздела в файл named.conf включает обратный поиск.

Добавьте раздел из листинга 7 в файл /etc/named.conf, чтобы указать на новую обратную зону. Теперь перезагрузите named и протестируйте свою обратную зону, используя команды из листинга 8. Ваши результаты должны выглядеть примерно так, как показано ниже.

Листинг 8. После перезапуска named вы должны увидеть результаты, подобные этим, при обратном просмотре IP-адреса в обратной зоне.

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

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

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

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

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

Возможно, брандмауэр на тестовом хосте блокирует доступ к вашему хосту для службы имен. IPTables должны быть настроены так, чтобы пропускать входящие пакеты UDP (протокол пользовательских дейтаграмм) на ваш сервер имен, чтобы другие хосты могли использовать его для разрешения имен. Используйте следующие команды, чтобы добавить необходимые записи и сохранить их.

Добавьте правило в свой брандмауэр с помощью firewalld или IPTables, которое разрешает входящие пакеты через порт 53 (домен) для UDP, и сохраните новый набор правил. Не забудьте вставить новое правило после строки -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT, поэтому для этого вам придется подсчитать количество строк INPUT в таблице фильтров. Число 7 в следующей команде означает, что это правило будет вставлено в позицию номер 7 в существующих правилах INPUT.

Вы можете сохранить новые правила брандмауэра, если хотите, и вы бы сделали это, если бы это была постоянная установка, а не лабораторный проект. Затем проверьте это на одном из других ваших хостов, используя команду из листинга 9 ниже. Аргумент @epc указывает команде dig использовать указанный сервер имен с именем хоста epc. Вы должны заменить либо IP-адрес только что созданного DNS-сервера, либо разрешимое имя хоста в вашей сети, указывающее на ваш новый сервер имен. Конечно, вы всегда можете добавить это имя хоста с его IP-адресом в файл /etc/hosts хоста, который вы используете для удаленного тестирования.

Листинг 9. Тестирование преобразователя имен, созданного вами на другом хосте в той же сети.

Очистка

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

  1. Восстановите исходный файл /etc/hosts.
  2. Остановите имя на узле распознавателя, используемом для этого экспериментального проекта.
  3. Отключить указанную службу.
  4. Удалите файлы зоны.
  5. Восстановите исходный файл named.conf.
  6. Восстановите исходный файл resolv.conf.

Заключительные мысли

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

Обратите внимание, что хотя мой маленький EeePC работает со 100% загрузкой ЦП для Seti@Home, он очень быстро отвечает на запросы преобразователя. Вы должны иметь возможность попробовать этот проект на любом доступном хосте Linux с незначительным эффектом. Я надеюсь, что многие из вас попытаются настроить свой собственный сервер имен и поэкспериментировать с ним. Особенности установки вашего сервера имен будут зависеть от деталей вашего хоста и сети.

Служба доменных имен (DNS) — это интернет-служба, которая сопоставляет IP-адреса и полные доменные имена (FQDN) друг с другом. Таким образом, DNS избавляет от необходимости запоминать IP-адреса. Компьютеры, на которых работает DNS, называются серверами имен. Ubuntu поставляется с BIND (Berkley Internet Naming Daemon), наиболее распространенной программой, используемой для поддержки сервера имен в Linux.

В командной строке терминала введите следующую команду для установки DNS:

Очень полезным пакетом для тестирования и устранения проблем с DNS является пакет dnsutils. Очень часто эти инструменты уже установлены, но для проверки и/или установки dnsutils введите следующее:

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

При настройке в качестве кэширующего сервера имен BIND9 найдет ответ на запрос имени и запомнит ответ при повторном запросе домена.

В качестве основного сервера BIND9 считывает данные для зоны из файла на своем хосте и является авторитетным для этой зоны.

В качестве вторичного сервера BIND9 получает данные зоны от другого сервера имен, уполномоченного для зоны.

Обзор

Файлы конфигурации DNS хранятся в каталоге /etc/bind. Основной файл конфигурации — /etc/bind/named.conf , который в макете, предоставляемом пакетом, включает только эти файлы.

  • /etc/bind/named.conf.options: глобальные параметры DNS
  • /etc/bind/named.conf.local: для ваших зон
  • /etc/bind/named.conf.default-zones: зоны по умолчанию, такие как localhost, его реверс и корневые ссылки

Раньше корневые серверы имен описывались в файле /etc/bind/db.root .Теперь это предоставляется файлом /usr/share/dns/root.hints, поставляемым с пакетом dns-root-data, и упоминается в файле конфигурации named.conf.default-zones выше.

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

Кэширующий сервер имен

Конфигурация по умолчанию действует как сервер кэширования. Просто раскомментируйте и отредактируйте /etc/bind/named.conf.options, чтобы установить IP-адреса DNS-серверов вашего провайдера:

Примечание

Замените 1.2.3.4 и 5.6.7.8 IP-адресами фактических серверов имен.

Чтобы включить новую конфигурацию, перезапустите DNS-сервер. Из командной строки терминала:

Информацию о тестировании кэширующего DNS-сервера см. в разделе dig.

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

Файл зоны пересылки

Чтобы добавить зону DNS в BIND9, превратив BIND9 в основной сервер, сначала отредактируйте файл /etc/bind/named.conf.local:

Вы должны увеличивать серийный номер каждый раз, когда вносите изменения в файл зоны. Если вы вносите несколько изменений перед перезапуском BIND9, просто увеличьте серийный номер один раз.

Теперь вы можете добавить записи DNS в конец файла зоны. Дополнительные сведения см. в разделе Общие типы записей.

Примечание

Многие администраторы предпочитают использовать дату последнего редактирования в качестве серийного номера зоны, например 2020012100, что соответствует ггггммддсс. (где ss — серийный номер)

После внесения изменений в файл зоны необходимо перезапустить BIND9, чтобы изменения вступили в силу:

Файл обратной зоны

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

Отредактируйте /etc/bind/named.conf.local и добавьте следующее:

Примечание

Замените 1.168.192 первыми тремя октетами сети, которую вы используете. Также назовите файл зоны /etc/bind/db.192 соответствующим образом. Он должен соответствовать первому октету вашей сети.

Теперь создайте файл /etc/bind/db.192:

После создания файла обратной зоны перезапустите BIND9:

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

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

Во-первых, на основном сервере необходимо разрешить передачу зоны. Добавьте параметр «разрешить передачу» в примеры определений прямой и обратной зон в файле /etc/bind/named.conf.local:

Примечание

Замените 192.168.1.11 на IP-адрес вашего вторичного сервера имен.

Перезапустите BIND9 на основном сервере:

Затем на вторичном сервере установите пакет bind9 так же, как и на первичном. Затем отредактируйте /etc/bind/named.conf.local и добавьте следующие объявления для зон Forward и Reverse:

Примечание

Замените 192.168.1.10 на IP-адрес вашего основного сервера имен.

Перезапустите BIND9 на вторичном сервере:

В /var/log/syslog вы должны увидеть что-то похожее на следующее (некоторые строки были разделены, чтобы соответствовать формату этого документа):

Примечание

Примечание. Зона передается только в том случае, если Серийный номер на основной зоне больше, чем на дополнительной. Если вы хотите, чтобы ваш основной DNS-сервер уведомлял другие вторичные DNS-серверы об изменениях зоны, вы можете добавить также-notify < ipaddress; >; в /etc/bind/named.conf.local, как показано в примере ниже:

Примечание

Каталог по умолчанию для файлов неавторизованных зон — /var/cache/bind/ . Этот каталог также настроен в AppArmor, чтобы позволить демону named писать в него. Дополнительную информацию о AppArmor см. в разделе Безопасность — AppArmor.

В этом разделе рассматривается диагностика проблем с конфигурациями DNS и BIND9.

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

resolv.conf

Первым шагом в тестировании BIND9 является добавление IP-адреса сервера имен в преобразователь хостов. Первичный сервер имен должен быть настроен так же, как и другой хост для двойной проверки. Подробную информацию о добавлении адресов серверов имен к сетевым клиентам см. в разделе Конфигурация DNS-клиентов. В конце строка вашего сервера имен в /etc/resolv.conf должна указывать на 127.0.0.53, и у вас должен быть параметр поиска для вашего домена. Что-то вроде этого:

Чтобы проверить, какой DNS-сервер использует ваш локальный преобразователь, выполните:

Примечание

Вам также следует добавить IP-адрес вторичного сервера имен в конфигурацию клиента на случай, если основной станет недоступен.

Если вы установили пакет dnsutils, вы можете проверить свои настройки с помощью утилиты поиска DNS: dig:

После установки BIND9 используйте команду dig для интерфейса loopback, чтобы убедиться, что он прослушивает порт 53. В командной строке терминала:

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

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

Обратите внимание на время запроса в конце вывода команды:

После второго раскопа должно быть улучшение:

Теперь, чтобы продемонстрировать, как приложения используют DNS для разрешения имени хоста, используйте утилиту ping для отправки эхо-запроса ICMP:

именная контрольная зона

Отличный способ проверить файлы зон — использовать утилиту named-checkzone, установленную вместе с пакетом bind9. Эта утилита позволяет убедиться в правильности конфигурации перед перезапуском BIND9 и внесением изменений.

Чтобы проверить наш пример файла зоны пересылки, введите в командной строке следующее:

Если все настроено правильно, вы должны увидеть примерно такой результат:

Аналогично, чтобы проверить файл зоны Reverse, введите следующее:

Вывод должен быть похож на:

Примечание

Серийный номер вашего файла зоны, вероятно, будет другим.

Быстрая регистрация временных запросов

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

Чтобы включить ведение журнала запросов включить, выполните:

Точно так же, чтобы отключить его, запустите:

Журналы будут отправляться в syslog и по умолчанию отображаться в /var/log/syslog:

Примечание

Количество журналов, создаваемых при включении журнала запросов, может быть огромным!

Ведение журнала

BIND9 имеет множество доступных параметров настройки ведения журналов, но два основных – это канал и категория, которые определяют, куда направляются журналы и какая информация регистрируется. соответственно.

Если никакие параметры ведения журнала не настроены, конфигурация по умолчанию:

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

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

Примечание

Параметр debug может иметь значение от 1 до 3. Если уровень не указан, по умолчанию используется уровень 1.

Поскольку демон named запускается от имени пользователя bind, необходимо создать каталог /var/log/named и изменить владельца:

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

Вы должны увидеть, что файл /var/log/named/query.log заполнен информацией о запросе. Это простой пример параметров ведения журнала BIND9. Подробные сведения о дополнительных параметрах см. в разделе Дополнительная информация.

Распространенные типы записей

В этом разделе рассматриваются некоторые наиболее распространенные типы записей DNS.

Запись: эта запись сопоставляет IP-адрес с именем хоста.

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

Запись MX: используется для определения адреса электронной почты. Должен указывать на запись A, а не на CNAME .

Запись NS: используется для определения того, какие серверы обслуживают копии зоны. Он должен указывать на запись A, а не на CNAME. Здесь определяются первичный и вторичный серверы.

Дополнительная информация

DNS and BIND – популярная книга, выпущенная уже в пятом издании. Теперь также есть книга DNS и BIND на IPv6.

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