Параметры разрешения DNS-имен для виртуальных машин Linux в Azure
Область применения: ✔️ Виртуальные машины 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.
- Разрешение имен предоставляется между виртуальными машинами в виртуальных сетях без необходимости указывать полное доменное имя.
- Вместо использования автоматически создаваемых имен узлов вы можете создавать имена, которые наиболее точно описывают ваши развертывания.
Соображения.
- Суффикс DNS, создаваемый Azure, не может быть изменен.
- Вы не можете вручную зарегистрировать собственные записи.
- WinS и NetBIOS не поддерживаются.
- Имена узлов должны быть DNS-совместимыми. Имена должны использовать только 0-9, a-z и "-", и они не могут начинаться или заканчиваться "-". См. раздел 2 RFC 3696.
- Трафик запросов DNS регулируется для каждой виртуальной машины. Регулирование не должно влиять на большинство приложений. Если наблюдается регулирование запросов, проверьте, включено ли кэширование на стороне клиента. Дополнительные сведения см. в разделе Наиболее эффективное использование разрешения имен Azure.
Наиболее эффективное использование разрешения имен Azure
Кэширование на стороне клиента
Некоторые запросы DNS не отправляются по сети. Кэширование на стороне клиента помогает уменьшить задержку и повысить устойчивость к нестабильной работе сети, разрешая повторяющиеся запросы DNS из локального кэша. Записи DNS содержат сведения о сроке жизни (TTL). Это позволяет кэшу хранить записи максимально долго, не влияя на их актуальность. Следовательно, кэширование на стороне клиента подходит для большинства ситуаций.
Некоторые дистрибутивы Linux по умолчанию не включают кэширование. Мы рекомендуем добавить кэш в каждую виртуальную машину Linux, но сперва нужно убедиться в отсутствии локального кэша.
Существует несколько разных пакетов кэширования DNS, например dnsmasq. Ниже описаны шаги по установке пакета dnsmasq на наиболее распространенные версии ОС.
- Установите пакет dnsmasq:
sudo apt-get install dnsmasq
- Включите службу dnsmasq:
sudo systemctl enable dnsmasq.service
- Запустите службу 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)
- Добавьте строку параметров в
/etc/resolvconf/resolv.conf.d/head
файл. - Запустите
sudo resolvconf -u
, чтобы выполнить обновление.
SUSE (используется пакет netconf)
- Добавьте
timeout:1 attempts:5
вNETCONFIG_DNS_RESOLVER_OPTIONS=""
параметр/etc/sysconfig/network/config
в . - Запустите
sudo netconfig update
, чтобы выполнить обновление.
разрешение имен с помощью собственного 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 между виртуальными сетями с помощью этого метода.
При использовании разрешения имен 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-сервера.