Параметры разрешения DNS-имен для виртуальных машин Linux в Azure

Внимание

Эта статья ссылается на CentOS, дистрибутив Linux, который приближается к состоянию конца жизни (EOL). Обратите внимание на использование и план соответствующим образом. Дополнительные сведения см. в руководстве centOS End Of Life.

Область применения: ✔️ Виртуальные машины Linux ✔️ Гибкие масштабируемые наборы

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

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

В приведенной ниже таблице представлены сценарии и соответствующие решения для разрешения имен.

Сценарий Решение Суффикс
Разрешение имен между экземплярами ролей или виртуальными машинами, находящимися в одной виртуальной сети Разрешение имен, предоставляемое Azure Имя узла или полное доменное имя
Разрешение имен между экземплярами ролей или виртуальными машинами, находящимися в разных виртуальных сетях Управляемые клиентами DNS-серверы, перенаправляющие запросы между виртуальными сетями для разрешения в Azure (DNS-прокси). См. раздел Разрешение имен с помощью собственного DNS-сервера. только полное доменное имя
Разрешение имен локальных компьютеров и служб из экземпляров роли или виртуальных машин в Azure Управляемые клиентами DNS-серверы (например, локальный контроллер домена, локальный контроллер домена только для чтения или DNS-сервер, вторично синхронизированный с помощью передач зоны). См. раздел Разрешение имен с помощью собственного DNS-сервера. только полное доменное имя
Разрешение имен узлов Azure с локальных компьютеров Перенаправление запросов на управляемый клиентом прокси-сервер DNS в соответствующей виртуальной сети. Прокси-сервер перенаправляет запросы в Azure для разрешения. См. раздел Разрешение имен с помощью собственного DNS-сервера. только полное доменное имя
Обратный поиск DNS для внутренних IP-адресов разрешение имен с помощью собственного DNS-сервера. Н/Д

Разрешение имен, предоставляемое Azure

Вместе с разрешением общедоступных DNS-имен Azure предоставляет разрешение внутренних имен для виртуальных машин и экземпляров ролей, которые находятся в той же виртуальной сети. В виртуальных сетях на основе Azure Resource Manager DNS-суффикс является одинаковым для всей виртуальной сети; полное доменное имя не требуется. DNS-имена можно назначать как сетевым картам, так и виртуальным машинам. Несмотря на то, что разрешение имен Azure не требует настройки, это не лучший выбор для всех сценариев развертывания, как показано в таблице выше.

Функции и рекомендации

Возможности:

  • Для использования разрешения имен, предоставляемого Azure, дополнительные настройки не нужны.
  • Служба разрешения имен, предоставляемая Azure, отличается высокой доступностью. Вам не нужно создавать кластеры DNS-серверов и управлять ими.
  • Служба разрешения имен, предоставляемая Azure, может использоваться параллельно с DNS-серверами для разрешения имен узлов в локальной среде и Azure.
  • Разрешение имен предоставляется между виртуальными машинами в виртуальных сетях без необходимости указывать полное доменное имя.
  • Вместо использования автоматически создаваемых имен узлов вы можете создавать имена, которые наиболее точно описывают ваши развертывания.

Соображения.

  • Созданный Azure DNS-суффикс нельзя изменить.
  • Собственные записи нельзя регистрировать вручную.
  • WINS и NetBIOS не поддерживаются.
  • Имена узлов должны быть DNS-совместимыми. Они могут содержать только символы 0–9, a–z и "-" и не могут начинаться или заканчиваться на "-". См. раздел 2 RFC 3696.
  • Трафик запросов DNS регулируется для каждой виртуальной машины. Регулирование не должно влиять на большинство приложений. Если наблюдается регулирование запросов, проверьте, включено ли кэширование на стороне клиента. Дополнительные сведения см. в разделе Наиболее эффективное использование разрешения имен Azure.

Получение наиболее эффективного разрешения имен, которое предоставляет Azure\

Кэширование на стороне клиента

Не каждый запрос DNS отправляется по сети. Кэширование на стороне клиента помогает уменьшить задержку и повысить устойчивость к нестабильной работе сети, разрешая повторяющиеся запросы DNS из локального кэша. Записи DNS содержат сведения о сроке жизни (TTL). Это позволяет кэшу хранить записи максимально долго, не влияя на их актуальность. Следовательно, кэширование на стороне клиента подходит для большинства ситуаций.

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

Существует несколько разных пакетов кэширования DNS, например dnsmasq. Ниже описаны шаги по установке пакета dnsmasq на наиболее распространенные версии ОС.

  1. Установите пакет dnsmasq:
sudo apt-get install dnsmasq
  1. Включите службу dnsmasq:
sudo systemctl enable dnsmasq.service
  1. Запустите службу dnsmasq:
sudo systemctl start dnsmasq.service

Повторные попытки на стороне клиента

DNS использует преимущественно протокол UDP. Так как протокол UDP не гарантирует доставку сообщений, логика повторных попыток обрабатывается в самом протоколе DNS. Каждый DNS-клиент (ОС) может реализовывать разную логику повторных попыток в зависимости от предпочтений создателя.

  • ОС Windows выполняет повторную попытку через одну секунду, затем через две и четыре, а затем снова через четыре секунды.
  • Повторные попытки в ОС Linux по умолчанию выполняются через пять секунд. Рекомендуется изменить этот параметр, чтобы повторные попытки выполнялись пять раз с интервалом в одну секунду.

Чтобы проверить текущие параметры в виртуальной машине Linux, введите команду "cat /etc/resolv.conf" и просмотрите строку options. Пример:

sudo cat /etc/resolv.conf
options timeout:1 attempts:5

Файл /etc/resolv.conf создается автоматически и не должен быть изменен. Шаги по добавлению строки options отличаются в разных дистрибутивах.

Ubuntu (используется пакет resolvconf)

  1. Добавьте строку параметров в /etc/resolvconf/resolv.conf.d/head файл.
  2. Запустите sudo resolvconf -u, чтобы выполнить обновление.

SUSE (используется пакет netconf)

  1. Добавьте timeout:1 attempts:5 в NETCONFIG_DNS_RESOLVER_OPTIONS="" параметр /etc/sysconfig/network/configв .
  2. Запустите sudo netconfig update, чтобы выполнить обновление.

CentOS от Rogue Wave Software (прежнее название — OpenLogic; использует NetworkManager)

  1. Добавлен RES_OPTIONS="timeout:1 attempts:5" в /etc/sysconfig/network.
  2. Запустите systemctl restart NetworkManager, чтобы выполнить обновление.

разрешение имен с помощью собственного DNS-сервера.

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

DNS-серверы в виртуальной сети могут перенаправлять запросы DNS рекурсивным сопоставителям Azure для разрешения имен узлов в этой виртуальной сети. Например, DNS-сервер, запущенный в Azure, может отвечать на запросы своих файлов зоны DNS и перенаправлять все остальные запросы в Azure. Это позволяет виртуальным машинам видеть как ваши записи в файлах зоны, так и имена узлов, предоставленные Azure (с помощью сервера пересылки). Доступ к рекурсивным сопоставителям Azure предоставляется через виртуальный IP-адрес 168.63.129.16.

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

Разрешение DNS между виртуальными сетями

При использовании разрешения имен Azure внутренний DNS-суффикс передается в каждую виртуальную машину с помощью DHCP. При использовании собственного решения для разрешения имен этот суффикс не передается в виртуальные машины, так как влияет на другие архитектуры DNS. Для ссылки на компьютеры по полному доменному имени или для настройки суффикса в виртуальных машинах можно определить суффикс с помощью PowerShell или API.

  • Для управляемых виртуальных сетей в модели Azure Resource Manager суффикс можно узнать с помощью ресурса сетевой карты. Можно также выполнить команду azure network public-ip show <resource group> <pip name>, которая покажет ваш общедоступный IP-адрес, включая полное доменное имя сетевой карты.

Если перенаправление запросов в Azure не соответствует вашим требованиям, необходимо предоставить собственное решение DNS. Ваше решение DNS должно:

  • Предоставлять корректное разрешение имен, например, с помощью DDNS. При использовании DDNS может потребоваться отключить очистку записей DNS. Время аренды DHCP в Azure очень долгое, и очистка может удалить записи DNS преждевременно.
  • Предоставлять корректное рекурсивное разрешение для разрешения внешних доменных имен.
  • Быть доступным (по протоколам TCP и UDP через порт 53) для клиентов, которых оно обслуживает, и иметь доступ к Интернету.
  • Быть защищенным от доступа из Интернета для снижения угроз, исходящих от внешних агентов.

Примечание.

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