Поделиться через


Использование iDNS в Azure Stack Hub

iDNS — это сетевая функция Azure Stack Hub, которая позволяет разрешать внешние DNS-имена (например, https://www.bing.com.) она также позволяет регистрировать имена внутренних виртуальных сетей). Таким образом можно разрешать виртуальные машины в одной и той же виртуальной сети по имени, а не по IP-адресу. Это избавляет от необходимости предоставлять пользовательские записи DNS-сервера. Дополнительные сведения о DNS см. в статье Общие сведения об Azure DNS.

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

С iDNS в Azure Stack Hub вы получаете следующие возможности без необходимости указывать пользовательские записи DNS-сервера:

  • Общие службы разрешения DNS-имен для клиентских рабочих нагрузок.
  • Полномочная служба DNS для разрешения имен и регистрации DNS в клиентской виртуальной сети.
  • Рекурсивная служба DNS для разрешения имен Интернета из клиентских виртуальных машин. Клиенту больше не требуется указывать пользовательские записи DNS для разрешения имен Интернета (например, www.bing.com).

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

Что не делает iDNS?

iDNS не позволяет создать запись DNS для имени, которое можно разрешить за пределами виртуальной сети.

В Azure можно указать метку имени DNS, которая связана с общедоступным IP-адресом. Вы можете выбрать метку (префикс), но Azure выбирает суффикс, зависящий от региона, в котором создается общедоступный IP-адрес.

Пример метки имени DNS

На приведенном выше рисунке показано создание платформой Azure записи "A" в DNS для метки имени DNS, указанной в зоне westus.cloudapp.azure.com. Префикс и суффикс объединяются для создания полного доменного имени (FQDN), которое можно разрешить из любого места в общедоступном Интернете.

В Azure Stack Hub iDNS поддерживается только для внутренней регистрации имен, поэтому iDNS не позволяет выполнить следующие действия:

  • создать запись DNS в существующей размещенной зоне DNS (например, local.azurestack.external);
  • создать зону DNS (например, Contoso.com);
  • создать запись в пользовательской зоне DNS;
  • купить доменное имя.

Демонстрация работы iDNS

Все имена узлов для виртуальных машин в виртуальных сетях хранятся в виде записей ресурсов DNS в одной зоне, но в отдельных уникальных секциях с некоторыми идентификаторами GUID, которые соответствуют идентификаторам виртуальных сетей в инфраструктуре SDN, в которых развернуты эти виртуальные машины. Полные доменные имена (FQDN) клиентских виртуальных машин состоят из строковых значений имени компьютера и DNS-суффикса виртуальной сети в формате GUID.

Ниже показана простая лаборатория для демонстрации этой технологии. Мы создали 3 виртуальных машины в одной виртуальной сети и еще одну виртуальную машину в отдельной виртуальной сети:

ВМ Виртуальная сеть Частный IP-адрес Общедоступный IP-адрес DNS-имя
VM-A1 VNetA 10.0.0.5 172.31.12.68 VM-A1-Label.lnv1.cloudapp.azscss.external
VM-A2 VNetA 10.0.0.6 172.31.12.76 VM-A2-Label.lnv1.cloudapp.azscss.external
VM-A3 VNetA 10.0.0.7 172.31.12.49 VM-A3-Label.lnv1.cloudapp.azscss.external
VM-B1 VNetB 10.0.0.4 172.31.12.57 VM-B1-Label.lnv1.cloudapp.azscss.external
Виртуальная сеть GUID DNS suffix string
VNetA e71e1db5-0a38-460d-8539-705457a4cf75 e71e1db5-0a38-460d-8539-705457a4cf75.internal.lnv1.azurestack.local
VNetB e8a6e386-bc7a-43e1-a640-61591b5c76dd e8a6e386-bc7a-43e1-a640-61591b5c76dd.internal.lnv1.azurestack.local

Вы можете выполнить тесты разрешения имен, чтобы лучше понимать работу iDNS.

Из VM-A1 (виртуальная машина Linux): поиск VM-A2. Вы увидите, что для VNetA добавляется DNS-суффикс и полученное имя разрешается в частный IP-адрес:

carlos@VM-A1:~$ nslookup VM-A2
Server:         127.0.0.53
Address:        127.0.0.53#53
 
Non-authoritative answer:
Name:   VM-A2.e71e1db5-0a38-460d-8539-705457a4cf75.internal.lnv1.azurestack.local
Address: 10.0.0.6

Поиск VM-A2-Label без указания полного доменного имени ожидаемо завершается сбоем:

carlos@VM-A1:~$ nslookup VM-A2-Label
Server:         127.0.0.53
Address:        127.0.0.53#53
 
** server can't find VM-A2-Label: SERVFAIL

Если вы предоставите FQDN для метки DNS, имя будет разрешено в общедоступный IP-адрес:

carlos@VM-A1:~$ nslookup VM-A2-Label.lnv1.cloudapp.azscss.external
Server:         127.0.0.53
Address:        127.0.0.53#53
 
Non-authoritative answer:
Name:   VM-A2-Label.lnv1.cloudapp.azscss.external
Address: 172.31.12.76

Попытка разрешить VM-B1 (которая находится в другой виртуальной сети) завершается сбоем, так как в этой зоне такой записи не существует.

carlos@caalcobi-vm4:~$ nslookup VM-B1
Server:         127.0.0.53
Address:        127.0.0.53#53
 
** server can't find VM-B1: SERVFAIL

Использование полного доменного имени для VM-B1 не поможет, так как эта запись относится к другой зоне.

carlos@VM-A1:~$ nslookup VM-B1.e8a6e386-bc7a-43e1-a640-61591b5c76dd.internal.lnv1.azurestack.local
Server:         127.0.0.53
Address:        127.0.0.53#53
 
** server can't find VM-B1.e8a6e386-bc7a-43e1-a640-61591b5c76dd.internal.lnv1.azurestack.local: SERVFAIL

Если вы предоставите FQDN для метки DNS, имя разрешается успешно:

carlos@VM-A1:~$ nslookup VM-B1-Label.lnv1.cloudapp.azscss.external
Server:         127.0.0.53
Address:        127.0.0.53#53
 
Non-authoritative answer:
Name:   VM-B1-Label.lnv1.cloudapp.azscss.external
Address: 172.31.12.57

При выполнении поиска на виртуальной машине VM-A3 (Windows) обратите внимание на разницу между заслуживающим и не заслуживающим доверия ответами.

Внутренние записи:

C:\Users\carlos>nslookup
Default Server:  UnKnown
Address:  168.63.129.16
 
> VM-A2
Server:  UnKnown
Address:  168.63.129.16
 
Name:    VM-A2.e71e1db5-0a38-460d-8539-705457ª4cf75.internal.lnv1.azurestack.local
Address:  10.0.0.6

Внешние записи:

> VM-A2-Label.lnv1.cloudapp.azscss.external
Server:  UnKnown
Address:  168.63.129.16
 
Non-authoritative answer:
Name:    VM-A2-Label.lnv1.cloudapp.azscss.external
Address:  172.31.12.76

Полученный выше результат можно описать так:

  • Каждая виртуальная сеть имеет собственную зону с записями A для всех частных IP-адресов, которые состоят из имени виртуальной машины и DNS-суффикса виртуальной сети (который совпадает с ее GUID).
    • <vmname>.<vnetGUID.internal>.<регион>.<stackinternalFQDN>
    • Все это выполняется автоматически
  • Если вы используете общедоступные IP-адреса, для них можно дополнительно создать метки DNS. Они разрешаются так же, как любые другие внешние адреса.
  • Серверы iDNS считаются полномочными серверами для внутренних зон DNS, а также выполняют роль распознавателя для общедоступных имен, когда клиентские виртуальные машины пытаются подключиться к внешним ресурсам. При получении запроса на адрес внешнего ресурса, серверы iDNS перенаправляют его для разрешения полномочным DNS-серверам.

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

Дальнейшие действия

Использование DNS в Azure Stack Hub