Вопрос или проблема
Я использую рабочую станцию на 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.
Потенциальные Решения
-
Изменение Конфигурации 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-сервер (ваш доменный контроллер).
-
Изменение Настройки DNS через GNOME:
Если вы используете графический интерфейс GNOME, вы можете изменить настройки DNS через сетевые параметры. Перейдите в «Сетевые настройки», выберите ваш сетевой интерфейс (обычно это Ethernet), а затем добавьте IP-адреса DNS-серверов в соответствующие поля. Формат ввода: разделите IP-адреса запятыми для их указания в качестве основных и резервных. -
Использование
resolv.conf
:
Убедитесь, что файл/etc/resolv.conf
содержит правильные DNS-серверы. Однако имейте в виду, что этот файл может автоматически генерироваться, поэтому ваши изменения могут быть потеряны при перезагрузке системы. Ваша цель – убедиться, что все настройки корректно сохраняются вresolved.conf
и DNS-сервисы systemd корректно используются. -
Добавление кастомных скриптов:
Если вам нужно более сложное поведение, вы можете написать скрипт, который будет проверять разрешение доступности серверов. Этот подход подразумевает использование утилит типа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, что приведёт к более стабильной и надёжной работе сети.