Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Практические руководства
    • Все руководства
    • Архитектура и защита базового интернет-сервиса
    • Анализ поресурсной детализации расходов с помощью Object Storage
      • Настройка локального кеширующего DNS-резолвера
      • Миграция DNS-зон из Яндекс 360 в Cloud DNS
      • Настройка Cloud DNS для доступа к кластеру Managed Service for ClickHouse® из других облачных сетей
      • Интеграция Cloud DNS и корпоративного сервиса DNS
      • Создание веб-хука резолвера ACME для ответов на DNS01-проверки

В этой статье:

  • Перед началом работы
  • Необходимые платные ресурсы
  • Подготовьте инфраструктуру
  • Проверьте работоспособность systemd-resolved
  • Установите альтернативный резолвер
  • Замените резолвер на альтернативный
  • Как удалить созданные ресурсы
  1. Базовая инфраструктура
  2. Cloud DNS
  3. Настройка локального кеширующего DNS-резолвера

Настройка локального кеширующего DNS-резолвера

Статья создана
Yandex Cloud
Обновлена 17 февраля 2025 г.
  • Перед началом работы
    • Необходимые платные ресурсы
  • Подготовьте инфраструктуру
  • Проверьте работоспособность systemd-resolved
  • Установите альтернативный резолвер
  • Замените резолвер на альтернативный
  • Как удалить созданные ресурсы

Не используйте Yandex Cloud DNS напрямую для запроса внешних доменных имён.

Вместо этого, установите и настройте локальный кеширующий DNS-резолвер, например, systemd-resolved, dnsmasq или unbound. Это ускорит выполнение публичных DNS-запросов, уменьшит их количество и ваши расходы.

Если на виртуальной машине установлена операционная система Ubuntu версии 18.04 LTS или выше, то в ней по умолчанию уже используется кеширующий резолвер systemd-resolved, и дополнительных действий по установке и настройке не требуется. Подробнее см. в разделе Проверьте работоспособность systemd-resolved.

Если на виртуальной машине используется более старая версия Ubuntu, например, 16.04 LTS — кеширующий DNS-резолвер нужно установить самостоятельно. Мы рекомендуем использовать dnsmasq или unbound. Подробнее см. в разделе Установите альтернативный резолвер.

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

  1. Подготовьте облако к работе.
  2. Подготовьте инфраструктуру.
  3. Проверьте работоспособность systemd-resolved.
  4. Установите альтернативный резолвер.
  5. Замените резолвер на альтернативный.

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

Перед началом работыПеред началом работы

Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь.
  2. На странице Yandex Cloud Billing убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.

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

Подробнее об облаках и каталогах.

Необходимые платные ресурсыНеобходимые платные ресурсы

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

  • плата за постоянно запущенную виртуальную машину (см. тарифы Yandex Compute Cloud);
  • плата за использование динамического или статического внешнего IP-адреса (см. тарифы Yandex Virtual Private Cloud).

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

  1. Создайте виртуальную машину с ОС Ubuntu. Например, Ubuntu 18.04 LTS.
  2. Привяжите к ВМ публичный IP-адрес.

Проверьте работоспособность systemd-resolvedПроверьте работоспособность systemd-resolved

  1. Подключитесь к ВМ по SSH.

  2. Узнайте состояние кеширующего DNS-резолвера systemd-resolved. Для этого в Ubuntu 18.04+ выполните команду:

    systemd-resolve --status
    

    Так как утилита systemd-resolved была переименована в resolvectl, для Ubuntu 22.04+ команда будет отличаться:

    resolvectl status
    

    Результат:

    <...>
    Link 2 (eth0)
    <...>
    Current DNS Server: 192.168.6.2         
             DNS Servers: 192.168.6.2         
             DNS Domain: ru-central1.internal
                         auto.internal 
    

    При корректной конфигурации, в выводе команды в строке Current DNS Server: будет указан адрес сервера Yandex Cloud DNS — второй адрес в виртуальной сети. Например, 192.168.6.2 для ВМ в подсети 192.168.6.0/24.

  3. Убедитесь, что внешние DNS-имена успешно резолвятся DNS-сервером 127.0.0.53#53. Для этого используйте утилиту dig:

    dig example.com
    

    Результат:

    <...>
    ;; Query time: 69 msec
    ;; SERVER: 127.0.0.53#53(127.0.0.53)
    <...>
    

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

Установите альтернативный резолверУстановите альтернативный резолвер

Важно

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

dnsmasq
unbound

dnsmasq — легковесный и нетребовательный к ресурсам кеширующий DNS-резолвер.

  1. Установите пакеты dnsmasq и dnsutils:

    sudo apt-get update -y
    sudo apt-get install dnsmasq dnsutils -y
    
  2. Отредактируйте конфигурационный файл /etc/dnsmasq.conf, увеличив размер кэша до 1000 и ограничив локальной машиной адреса, которые слушает кеширующий резолвер.

    1. Откройте файл:

      sudo nano /etc/dnsmasq.conf
      
    2. Вставьте в файл текст:

      cache-size=1000
      listen-address=127.0.0.1
      interface=lo
      bind-interfaces
      
  3. Перезапустите сервис dnsmasq, чтобы применить новые настройки. Проверьте, что статус сервиса dnsmasq сменился на active (running), а в конце лога сервиса присутствует строка Started dnsmasq.service:

    sudo systemctl restart dnsmasq.service
    sudo systemctl status dnsmasq.service
    

    Результат:

    ● dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server
    Loaded: loaded (/lib/systemd/system/dnsmasq.service; enabled; vendor preset: enabled)
    Active: active (running) <...>
    <...>
    Oct 28 22:39:57 <...> systemd[1]: Starting dnsmasq - A lightweight DHCP and caching DNS server...
    Oct 28 22:39:57 <...> dnsmasq[<...>]: dnsmasq: syntax check OK.
    Oct 28 22:39:57 <...> dnsmasq[<...>]: started, version 2.75 cachesize 150
    <...>
    Oct 28 22:39:58 <...> dnsmasq[<...>]: using nameserver 192.168.6.2#53
    Oct 28 22:39:58 <...> systemd[1]: Started dnsmasq - A lightweight DHCP and caching DNS server.
    

    Также обратите внимание на адрес в строке using nameserver <...>. Там должен находиться адрес сервера Yandex Cloud DNS — второй адрес в виртуальной сети. Например, 192.168.6.2 для ВМ в подсети 192.168.6.0/24.

  4. С помощью утилиты dig проверьте, что внешние DNS-имена успешно резолвятся:

    dig example.com @127.0.0.1 | grep -B3 Query
    

    Результат:

    ;; ANSWER SECTION:
    example.com.    65420   IN  A  93.184.216.34
    ;; Query time: 3 msec
    

unbound — валидирующий рекурсивный кеширующий DNS-резолвер с акцентом на производительности, экономном потреблении ресурсов и соответствии современным открытым стандартам.

  1. Установите пакеты unbound и dnsutils:

    sudo apt-get update -y
    sudo apt-get install unbound dnsutils -y
    
  2. Укажите настройки сервера в конце глобального конфигурационного файла /etc/unbound/unbound.conf или в отдельном конфигурационном файле с именем /etc/unbound/unbound.conf.d/<имя_файла>.conf.

    1. Откройте файл:

      sudo nano /etc/unbound/unbound.conf
      
    2. Вставьте в конец файла текст:

      server:
            port: 53
            interface: 127.0.0.1
            access-control: 127.0.0.0/8 allow
            do-ip4: yes
            do-ip6: no
            do-udp: yes
            do-tcp: yes
            num-threads: 2
            num-queries-per-thread: 1024
            hide-identity: yes
            hide-version: yes
            prefetch: yes
            verbosity: 1
      
  3. Запустите сервис unbound, чтобы применить новые настройки. Проверьте, что статус сервиса unbound стал active (running), а в конце лога сервиса присутствует строка Started unbound.service:

    sudo systemctl start unbound.service
    sudo systemctl status unbound.service
    

    Результат:

    ● unbound.service - Unbound DNS server
    Loaded: loaded (/lib/systemd/system/unbound.service; enabled; vendor preset: enabled)
    Active: active (running) <...>
    <...>
    Oct 29 00:21:06 <...> unbound[<...>]:  * Starting DNS server unbound
    Oct 29 00:21:06 <...> unbound[<...>]: [<...>:0] info: start of service (unbound 1.5.8).
    Oct 29 00:21:06 <...> unbound[<...>]:    ...done.
    Oct 29 00:23:21 <...> systemd[1]: Started unbound.service.
    
  4. С помощью утилиты dig проверьте, что внешние DNS-имена успешно резолвятся:

    dig example.com @127.0.0.1 | grep -B3 Query
    

    Результат:

    ;; ANSWER SECTION:
    example.com.    86400  IN  A  93.184.216.34
    ;; Query time: 611 msec
    

Замените резолвер на альтернативныйЗамените резолвер на альтернативный

Если требуется заменить systemd-resolved на другой локальный кеширующий DNS-резолвер:

  1. Установите альтернативный резолвер по инструкции из раздела Альтернативные резолверы.

  2. Отредактируйте конфигурационный файл /etc/systemd/resolved.conf, чтобы выключить stub-резолвер и указать 127.0.0.1 в качестве адреса DNS-сервера:

    1. Откройте файл:

      sudo nano /etc/unbound/unbound.conf
      
    2. Вставьте в файл после строки [Resolve] текст:

      DNS=127.0.0.1
      DNSStubListener=no
      
  3. Создайте симлинк:

    sudo ln -svi /run/systemd/resolve/resolv.conf /etc/resolv.conf
    
  4. Перезапустите сервис systemd-resolved:

    systemctl restart systemd-resolved
    
  5. Проверьте, что dig теперь использует сервер 127.0.0.1#53, а не 127.0.0.53#53:

    dig example.com
    

    Результат:

    <...>
    ;; Query time: 0 msec
    ;; SERVER: 127.0.0.1#53(127.0.0.1)
    <...>
    

Как удалить созданные ресурсыКак удалить созданные ресурсы

Чтобы перестать платить за созданные ресурсы удалите ВМ.

Была ли статья полезна?

Предыдущая
Создание и настройка шлюза UserGate в режиме прокси-сервера
Следующая
Миграция DNS-зон из Яндекс 360 в Cloud DNS
Проект Яндекса
© 2025 ООО «Яндекс.Облако»