Резервный DNS, когда основной не может разрешить?

Вопрос или проблема

Я использую рабочую станцию на Ubuntu 18.04 Desktop в сети, которая обслуживает домен Windows. Серверы домена Windows обеспечивают разрешение DNS для локальных серверов, но не всегда обеспечивают точное разрешение DNS для удаленных серверов. Это значит, что если я сделаю несетевой DNS сервер своим основным (например, Google 8.8.8.8), я смогу разрешать веб-серверы, но не локальные серверы. Если я укажу контроллер домена в качестве основного DNS сервера, я смогу разрешать локальные серверы, но не некоторые веб-серверы (в частности, точки окончания AWS Cloudfront).

Пример с Google DNS в качестве основного и контроллером домена в качестве вторичного:

nslookup localserver
Сервер:     8.8.8.8
Адрес:     8.8.8.8#53

** сервер не может найти localserver: NXDOMAIN

Существует ли способ получить разрешение DNS, чтобы проверить вторичный DNS сервер в случае, если основной DNS сервер не может разрешить DNS имя?

Вы можете увидеть свой текущий список сконфигурированных DNS серверов в

/run/systemd/resolve/resolv.conf

Если он не содержит всех необходимых вам DNS серверов, попробуйте добавить больше, каждый разделяя запятой в сетевых настройках на вкладке IPV4, настройка IPV4 DNS

Если это не сработает, вы можете настроить резервный DNS непосредственно в /etc/systemd/resolved.conf

Вот пример:

#  Этот файл является частью systemd.
#
#  systemd является бесплатным программным обеспечением; вы можете перераспределять его и/или модифицировать
#  на условиях GNU Lesser General Public License, опубликованной
#  Free Software Foundation; либо версии 2.1 Лицензии, или
#  (по вашему выбору) любой более поздней версии.
#
# Записи в этом файле показывают настройки по умолчанию на момент компиляции.
# Вы можете изменить параметры, отредактировав этот файл.
# Настройки по умолчанию можно восстановить, просто удалив этот файл.
#
# См. resolved.conf(5) для получения подробностей

[Resolve]
#DNS=
#FallbackDNS=
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#Cache=yes
#DNSStubListener=yes

Ответ или решение

Использование Резервного DNS в Ситуации, Когда Основной Не Может Разрешить

Ваша ситуация с разрешением DNS на рабочей станции Ubuntu 18.04, которая находится в сети Windows домена, поднимает важные аспекты конфигурации и работы DNS. Правильная настройка DNS может значительно улучшить доступ к как локальным, так и удалённым ресурсам. Давайте подробно рассмотрим, как можно организовать резервное разрешение DNS в вашей сети.

Проблема

Вы столкнулись с дилеммой: при использовании Google DNS (8.8.8.8) в качестве основного, вы не можете разрешать локальные имена, так как они управляются вашим доменным контроллером. Напротив, при установке доменного контроллера в качестве основного DNS-сервера, возникают проблемы с разрешением некоторых удалённых серверов, таких как AWS Cloudfront.

Потенциальные Решения

  1. Изменение Конфигурации DNS в Systemd:
    Ubuntu 18.04 использует systemd для управления службами, включая DNS. Вы можете настроить fall-back DNS для использования в случае, если основной сервер не может разрешить имя. Для этого вам следует отредактировать файл /etc/systemd/resolved.conf.

    sudo nano /etc/systemd/resolved.conf

    Закомментируйте соответствующие строки и добавьте ваши DNS-серверы, а также резервные DNS.

    Пример конфигурации:

    [Resolve]
    DNS=8.8.8.8
    FallbackDNS=доменный_контроллер_IP

    В этом случае, если основной сервер (Google DNS) не сможет разрешить имя, systemd автоматически проверит резервный DNS-сервер (ваш доменный контроллер).

  2. Изменение Настройки DNS через GNOME:
    Если вы используете графический интерфейс GNOME, вы можете изменить настройки DNS через сетевые параметры. Перейдите в «Сетевые настройки», выберите ваш сетевой интерфейс (обычно это Ethernet), а затем добавьте IP-адреса DNS-серверов в соответствующие поля. Формат ввода: разделите IP-адреса запятыми для их указания в качестве основных и резервных.

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

  4. Добавление кастомных скриптов:
    Если вам нужно более сложное поведение, вы можете написать скрипт, который будет проверять разрешение доступности серверов. Этот подход подразумевает использование утилит типа dig или nslookup, чтобы проверить доступность и в случае неудачи переключаться на резервный сервер.

    Пример простого bash-скрипта:

    #!/bin/bash
    result=$(nslookup localserver 8.8.8.8)
    if [[ $result == *"NXDOMAIN"* ]]; then
       nslookup localserver [доменный_контроллер_IP]
    else
       echo $result
    fi

Заключение

Обеспечение корректного разрешения DNS в смешанной среде (локальная сеть + удалённые ресурсы) требует внимательного подхода к конфигурации сетевых настроек. Использование systemd и соответствующий перевод DNS-серверов в качестве запасных позволит значительно упростить управление разрешением DNS. Проверьте, что ваши обновления сохраняются, и используйте инструменты для тестирования работы DNS после внесения изменений. Такой подход обеспечит надёжность вашей сети и доступность критически важных ресурсов.

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

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

Оцените материал
Добавить комментарий

Капча загружается...