Если вы пользователь Ubuntu, то, вероятно, вы хотя бы раз сталкивались с ситуацией, когда "доменное имя не срабатывает, но доступ по IP-адресу работает". В большинстве случаев причиной этого является проблема с настройками DNS. В частности, в последних версиях Ubuntu используется демон DNS-резолвера systemd-resolved, поэтому важно понимать его структуру.


1. Поток DNS-запросов

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

  1. Пользователь отправляет запрос на домен через браузер или другие приложения
  2. Linux по умолчанию читает /etc/resolv.conf для получения DNS (это файл является символической ссылкой на /run/systemd/resolve/stub-resolv.conf)
  3. /run/systemd/resolve/stub-resolv.conf настроен на 127.0.0.53, и это приводит к появлению systemd-resolved.
  4. Система systemd-resolved управляется конфигурационным файлом /etc/systemd/resolved.conf
  5. Следовательно, systemd-resolved запрашивает DNS-сервер, указанный в /etc/systemd/resolved.conf,
  6. получает ответ и завершает преобразование домена в IP-адрес

2. Краткое резюме основных компонентов

Как упоминалось выше, в systemd-resolved есть 4 ключевых конфигурационных файла. Понимание их роли является ключевым.

2-1. /etc/resolv.conf

  • Место, где в традиционных системах Linux читается список DNS-серверов
  • Однако сейчас должен существовать как символическая ссылка для совместимости с systemd
  • Обычно он должен быть настроен следующим образом: bash /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf
  • Таким образом, этот файл выполняет роль "посредника между традиционными приложениями и systemd-resolved" в текущей системе

2-2. /run/systemd/resolve/stub-resolv.conf

  • Содержит информацию о локальном DNS-стаб-сервере (127.0.0.53), управляемом systemd-resolved
  • Если /etc/resolv.conf указывает на этот файл, все DNS-запросы проходят через systemd-resolved

2-3./etc/systemd/resolved.conf

  • systemd-resolved является основным конфигурационным файлом
  • Здесь можно установить такие параметры, как DNS=, FallbackDNS=, чтобы задать приоритеты
  • Это постоянная настройка, которая сохраняется после перезагрузки

2-4. /run/systemd/resolve/resolv.conf

  • Файл, содержащий фактический список DNS-серверов, управляемый systemd-resolved
  • Продвинутые пользователи могут подключить его к /etc/resolv.conf вместо stub-resolv.conf для прямых запросов к DNS-серверу (настройка обхода)

3. Пример возникновения проблемы: если настроенный DNS-сервер на роутере, предоставленном провайдером, нестабилен

  • Если на роутере, предоставленном крупнейшим провайдером в Южной Корее KT, установлен DNS-сервер (например, 168.126.63.1), но я не имею полномочий контролировать этот роутер, могут возникнуть периодические проблемы с DNS.
  • DNS от KT часто имеет нестабильную скорость ответа или регулярно возникают сбои при установке подключения UDP/TCP
  • Если в журналах systemd-resolved повторяются следующие сообщения, это сигнал о проблемах: Используется ограниченный функционал TCP вместо UDP для DNS-сервера 168.126.63.1. Используется ограниченный функционал UDP вместо TCP для DNS-сервера 168.126.63.1.
  • В результате не происходит разрешение домена → невозможно получить доступ к веб-сайту

4. Рекомендуемые DNS-серверы

Название Адрес Характеристики
Google DNS 8.8.8.8, 8.8.4.4 Быстрый и стабильный
Cloudflare DNS 1.1.1.1, 1.0.0.1 Высокая скорость и отличная защита конфиденциальности
Quad9 9.9.9.9 Предоставляет фильтрацию угроз безопасности

5. Как правильно настроить надежный DNS

  1. Откройте файл /etc/systemd/resolved.conf
[Resolve]
DNS=1.1.1.1 8.8.8.8
FallbackDNS=9.9.9.9
  1. Примените настройки
sudo systemctl restart systemd-resolved
  1. Проверьте, правильно ли подключен /etc/resolv.conf
ls -l /etc/resolv.conf

→ Должно быть связано с /run/systemd/resolve/stub-resolv.conf

При необходимости принудительное сброс:

sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf

6. Осторожно с вмешательством NetworkManager

В Ubuntu с графическим интерфейсом NetworkManager может перезаписывать DNS

  • Если автоматическая настройка DNS включена, настройки systemd-resolved могут быть проигнорированы
  • Решение проблемы: bash nm-connection-editor → Редактирование соединения → Вкладка IPv4 → Отключить автоматический DNS → Ввести ручной DNS

7. Заключение

  • Поскольку о нестабильности DNS от KT часто сообщается, лучше избегать его использования
  • Настройка DNS через systemd-resolved является очень мощным способом повышения надежности в Ubuntu
  • Если вы точно поймете и примените настройки, можете сократить стресс из-за проблем с разрешением доменов

8. Комментарий Джесси

Настройки, основанные на понимании, представляют собой наиболее надежную безопасность и поддержание. Надеюсь, что эта статья окажется полезной для тех, кто путался в настройках DNS в Ubuntu.