Ubuntu dns server настройка

Обновлено: 05.07.2024

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

После разрешения домена система кэширует запрос и сохранит запись для домена и соответствующего IP-адреса.

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

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

Ниже приведены некоторые из наиболее популярных общедоступных преобразователей DNS:

  • Google (8.8.8.8, 8.8.4.4)
  • Cloudflare (1.1.1.1 и 1.0.0.1)
  • OpenDNS (208.67.222.222, 208.67.220.220)
  • Уровень 3 (209.244.0.3, 209.244.0.4)

В этом руководстве мы объясним, как настроить DNS-серверы имен (преобразователи) в Ubuntu 18.04.

Настройка DNS-серверов на рабочем столе Ubuntu

Настройка DNS-серверов имен на настольных компьютерах Ubuntu 18.04 очень проста и не требует технических знаний.

Запустите окно настроек.

Если вы подключены к сети Wi-Fi, щелкните вкладку «Wi-Fi». В противном случае, если у вас есть проводное соединение, щелкните вкладку «Сеть».

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

Выберите вкладку Настройки IPv4.

Отключите тумблер «Автоматически» и введите IP-адреса DNS-преобразователей через запятую. Мы будем использовать DNS-серверы Google:

Изменения вступают в силу немедленно, за исключением случаев, когда записи DNS кэшируются вашей системой или приложением.

Если вы хотите вернуться к своим старым настройкам, откройте Network Manager, перейдите в настройки IPv4 и включите переключатель «Автоматически».

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

Раньше всякий раз, когда вы хотели настроить преобразователи DNS в Linux, вы просто открывали файл /etc/resolv.conf , редактировали записи, сохраняли файл, и все готово. Этот файл все еще существует, но это символическая ссылка, управляемая службой systemd-resolved, и ее не следует редактировать вручную.

Файлы конфигурации Netplan хранятся в каталоге /etc/netplan . Вероятно, вы найдете в этом каталоге один или два файла YAML. Имя файла может отличаться от настройки к настройке. Обычно файл называется 01-netcfg.yaml или 50-cloud-init.yaml но в вашей системе он может быть другим.

Эти файлы позволяют настроить сетевой интерфейс, включая IP-адрес, шлюз, DNS-серверы имен и так далее.

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

Содержимое файла будет выглядеть примерно так:

Чтобы настроить серверы имен DNS интерфейса, измените текущие IP-адреса на предпочитаемые DNS-серверы. Например, если вы хотите использовать DNS-серверы Cloudflare, вы должны изменить строку addresses на:

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

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

После этого сохраните файл и примените изменения с помощью:

Netplan сгенерирует файлы конфигурации для службы, разрешенной systemd.

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

systemd-resolve -status выводит много информации. Мы используем grep для фильтрации строки «DNS-серверы». Результат будет выглядеть примерно так:

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

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

Версию CentOS, используемую в данном руководстве, можно найти здесь.

Предварительные требования

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

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

На каждом из этих серверов необходимо настроить административный доступ с помощью пользователя sudo и брандмауэра согласно инструкциям нашего руководства по начальной настройке сервера Ubuntu 18.04.

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

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

В рамках данной статьи мы предполагаем следующее:

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

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

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

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

На обоих DNS-серверах, ns1 и ns2, обновите кэш пакета apt с помощью следующей команды:

Теперь можно переходить к установке BIND:

Настройка режима IPv4 для Bind

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

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

Сохраните файл и закройте его после завершения.

Перезапустите BIND для вступления изменений в силу:

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

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

Конфигурация BIND состоит из множества файлов, которые включены в основной файл конфигурации, named.conf . Эти имена файлов начинаются с named , потому что это имя процесса, который запускает BIND (сокращение от “domain name daemon”). Мы начнем с настройки файла параметров.

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

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

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

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

Под директивой 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). Если вы уверены, какие строки следует удалить, удаляйте строки с комментарием “delete this line”.

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

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

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

Создание файла (файлов) зоны для обратного просмотра

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

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

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

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

Теперь удалите две записи в конце файла (после записи SOA). Если вы уверены, какие строки следует удалить, удаляйте строки с комментарием “delete this line”.

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

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

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

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

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

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

Запустите следующую команду для проверки синтаксиса файлов named.conf* :

Команда 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-адресами всех ваших доверенных серверов:

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

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

Теперь необходимо отредактировать файл named.conf.local :

Определите slave-зоны, соответствующие master-зонам основного DNS-сервера. Обратите внимание, что в качестве типа используется slave, в файле отсутствует путь, и существует директива masters , которая должна быть настроена на частный IP-адрес основного DNS-сервера. Если вы определили несколько зон для обратного просмотра на основном DNS-сервере, обязательно проверьте, что все они были добавлены на этом этапе:

Сохраните и закройте файл 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 Domain:

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

Клиенты Ubuntu 16.04 и Debian

В серверах Ubuntu 16.04 и Debian вы можете изменить файл /etc/network/interfaces :

Сохраните файл и закройте его после завершения.

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

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

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

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

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

Клиенты CentOS

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

Сохраните файл и закройте его после завершения.

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

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

Убедитесь, что изменения вступили в силу, введя следующую команду:

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

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

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

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

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

Мы можем начать выполнять прямой просмотр.

Прямой просмотр

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

Обратный просмотр

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

Результат будет выглядеть следующим образом:

Поздравляем! Ваши внутренние DNS-серверы настроены надлежащим образом! Теперь мы перейдем к сохранению записей зоны.

Сохранение DNS-записей

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

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

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

Основной сервер доменных имен

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

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

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

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

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

  • Добавьте частный IP-адрес вашего нового хоста в доверенный ACL ( named.conf.options )

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

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

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

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

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

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

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

Заключение

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

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

Стало достаточно традиционным для Linux запускать небольшой локальный DNS-сервер, который ускоряет работу, кешируя ответы на повторяющиеся DNS-запросы. В этом случае в общесистемный /etc/resolv.conf помещается директива nameserver 127.0.0.1 , а ip-адреса внешних DNS-серверов переносятся в настройки локального.

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

При этом файл resolv.conf заменяется символической ссылкой на /run/resolvconf/resolv.conf и программы используют динамически сгенерированный файл. В системе без службы resolvconf.service файл resolv.conf поддерживается вручную или набором скриптов. И эти скрипты могут мешать друг другу при попытках одновременного доступа к файлу.

Всё работало хорошо, пока не появились NetworkManager и Systemd. Система инициализации Systemd имеет свой собственный резолвер systemd-resolved , запущенный по умолчанию и требующий отдельной настройки. А NetworkManager пытается дружить со всеми — с resolvconf , с Systemd , с наиболее распространёнными DNS-резолверами.

Всё это привело к тому, что теперь в одной системе порт 53 может слушать несколько разных резолверов, причём для избежания конфликтов NetworkManager и systemd-resolved используют вместо 127.0.0.1 другие ip-адреса в loopback-сети:

  • 127.0.0.1 — dnsmasq или unbound с настройками по умолчанию
  • 127.0.1.1 — dnsmasq или unbound , запущенный NetworkManager
  • 127.0.0.53 — systemd-resolved , запущенный по умолчанию

Настройка службы systemd-resolved

В Ubuntu Server эта служба уже установлена и запущена сразу после установки операционной системы. Но если это не так, установить ее несложно:

Следующим шагом будет правка файла /etc/nsswitch.conf — находим строку, которая начинается с hosts :

Эта строка отвечает за последовательность обращений приложения к системным компонентам с целью резолвинга доменного имени. В данном случае сначала программа заглянет в файл /etc/hosts , затем запросит демона systemd-resolved , а потом — к DNS серверам.

Осталось сообщить systemd-resolved ip-адреса DNS-серверов, к которым следует обращаться для резолвинга:

Для целей совместимости с приложениями, которые не используют библиотечные вызовы, а обращаются к DNS-серверам напрямую, получая их ip-адреса из /etc/resolv.conf , следует создать символическую ссылку. Обычно этого не требуется, ссылка уже существует после установки systemd-resolved :

В файле /run/systemd/resolve/stub-resolv.conf указан один-единственный сервер 127.0.0.53 :

Кроме того, можно создать символическую ссылку на /run/systemd/resolve/resolv.conf . Этот файл содержит DNS-сервера, полученные от DHCP-сервера и из файла конфигурации /etc/systemd/resolved.conf . В этом случае локальный кеширующий сервер не используется, что замедлит резолвинг.

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

Настройка службы resolvconf.service

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

После установки /etc/resolv.conf будет представлять из себя ссылку на /run/resolvconf/resolv.conf .

При этом исходный файл /etc/resolv.conf (который на самом деле ссылка на /run/systemd/resolve/resolv.conf ) будет сохранен как original в директории /etc/resolvconf/resolv.conf.d/ (чтобы восстановить его при удалении службы resolvconf.service ). В этой же директории есть есть еще три файла — base , head и tail — которые позволяют вручную добавить записи в динамически формируемый /run/resolvconf/resolv.conf .

Теперь добавим пару записей в файл tail (сервера OpenDNS):

Перезагрузим службу и посмотрим сформированный /run/resolvconf/resolv.conf :

Первая запись — это резолвер systemd-resolved , а две другие записи были добавлены в конец resolv.conf из файла tail . Благодаря тому, что первая запись это 127.0.0.53 — резолвинг будет работать быстро, потому что systemd-resolved кеширует ответы DNS-серверов.

Но если мы остановим службу systemd-resolved , резолвинг все равно будет работать, используя сервера 208.67.222.222 и 208.67.220.220 — хотя и гораздо медленнее.

Используем только resolv.conf

Так делать не рекомендуется, потому что резолвинг будет работать медленно, но рассмотрим и этот вариант для полноты картины. Первым делом изменим имя файла /etc/resolv.conf на /etc/resolv.conf.back , а потом создадим свой resolv.conf :

Для Ubuntu Desktop запретим вездесущему NetworkManager вмешиваться в процесс распознавания доменных имен:

Устанавливаем службу DNS сервера Bind9, командой:

При установке сервера Bind9 система может потребовать от вас вписать свое согласие Yes, а не просто нажать кнопку Y.

Генерируем ключ для обновления DNS записей, следующей командой:

Показать этот ключ можно командой:

Отобразится ключ вида вида sWAQagEOVTtRQpCekhNsJQ==, данный ключ понадобится нам позже. Либо скопируйте данный ключ, либо запомните команду отображения ключа.

Ununtu Server установка DNS сервера и генерация ключа - Mhelp.kz

Открываем файл конфигурации Bind9, командой:

Именно в этом файле прописываются внешние DNS сервера, к которым будет обращаться наш локальный сервер.

Это будет самым первым уровнем защиты и первым фильтром контента школы.

Закомментируем строку dnssec-validation auto.

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

Ununtu Server конфигурирование DNS сервера используя Яндекс DNS - Mhelp.kz

Перезапускаем службу DNS, командой:

Далее требуется ввести изменения в системный файл конфигурации resolv.conf, но так как значения этого файла берется из другого, вносим изменения в изначальный файл, командой:

Вносим в него следующие значения, для нашей сети.

domain school.loc
search school.loc
nameserver 127.0.0.1

Ubuntu Server настройка DNS сервера resolv.conf - Mhelp.kz

Сохраняем и закрываем файл. Перезагружаем DNS сервер, командой:

Проверяем работу нашего DNS сервера, командой:

После чего повторно вводим эту же команду:

Нас интересует поле Query time (Время запроса) обеих команд, если время выполнения второго запроса уменьшилось, значит наш DNS сервер работает нормально.

Ubuntu Server проверка командой dig работы DNS сервиса - Mhelp.kz

Перезагрузите сервер (команда reboot) и выполните проверку еще раз (необязательно, но поможет диагностировать на каком этапе настройки появилась ошибка)

Указываем зоны прямого и обратного просмотра и прописываем их в файле конфигурации.

Создаем зону прямого просмотра.

Копируем образец файла по адресу /etc/bind/ db.local в наше расположение, одновременно переименовывая его в /var/lib/bind / prime_zone :

и открываем его:

Изменяем файл, приводя к следующему виду, не забывая вставлять свои значения (если название сервера, домена и IP адресация отличается от моего примера):

Ubuntu Server Настройка DNS сервера, настройка зоны прямого просмотра - Mhelp.kz

Создаем зону обратного просмотра.

Так же копированием и переименованием файла образца, командой:

Приводим файл к виду:

Ubuntu Server Настройка DNS сервера, настройка зоны обратного просмотра - Mhelp.kz

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

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

Перезапускаем службу Bing9 сервер, командой:

Проверяем работу созданных зон, зоны прямого просмотра (преобразования имен):

Если зона настроена правильно, то будет отображен следующий результат:

Ubuntu Server Nslookup правильная работа зоны прямого просмотра - Mhelp.kz

И проверяем зону обратного просмотра:

Если обратная зона настроена правильно, то будет отображен следующий результат:

Ubuntu Server Nslookup правильная работа зоны обратного просмотра - Mhelp.kz

Дополнительно и полезно:

Поиск проблем в Bind9: После попытки рестарта сервиса командой sudo /etc/init.d/bind9 restart , выполните команду tail /var/log/syslog для просмотра возможных ошибок;

Команды службы Bing:

Настроим автоматизацию создания прямых и обратных зон DNS для клиентов, с помощью DHCP.

Открываем конфигурационный файл DHCP, командой:

Закомментируем в файле строку:

Добавляем в наш конфигурационный файл следующие строки:

zone school.loc . primary 127.0.0.1;
key DHCP_UPDATER;
>

zone 137.168.192 .in-addr.arpa. primary 127.0.0.1;
key DHCP_UPDATER;
>

Перезапускаем службы DNS и DHCP:

С клиентского ПК с названием teacher проверим работу прямой и обратной зоны, командами nslookup:

Ubuntu Server Проверка работы прямой и зоный обратного просмотра на клиентском ПК - Mhelp.kz

Если получен отклик, как на скриншоте, то на этом эту часть настройки Ubuntu Server будем считать законченной.

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

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