Настройка перенаправления DNS для файлов Azure с помощью виртуальных машин или частного резолвера Azure DNS

✔️ Область применения: все общие папки Azure

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

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

Мы настоятельно рекомендуем ознакомиться с рекомендациями по планированию развертывания файлов Azure и сетевым рекомендациям по работе с файлами Azure , прежде чем выполнить действия, описанные в этой статье.

Обзор

Файлы Azure предоставляют следующие типы конечных точек для доступа к общим папкам Azure:

  • общедоступные конечные точки, у которых есть общедоступный IP-адрес и к которым можно обращаться из любой точки мира;
  • частные конечные точки, которые существуют только в виртуальной сети и имеют частный IP-адрес в пределах адресного пространства этой виртуальной сети.
  • Конечные точки службы, ограничивающие доступ к общедоступной конечной точке для конкретных виртуальных сетей. Вы по-прежнему обращаетесь к учетной записи хранения через общедоступный IP-адрес, но доступ возможен только из указанных расположений в конфигурации.

Общедоступные и частные конечные точки размещаются в учетной записи хранения Azure. Учетная запись хранения — это конструкция управления, представляющая собой общий пул хранения, в котором можно размещать несколько файловых общих ресурсов, а также другие ресурсы хранения, такие как контейнеры больших двоичных объектов или очереди.

Каждая учетная запись хранения имеет полностью определённое доменное имя (FQDN). Для общедоступных облачных регионов полное доменное имя следует шаблону storageaccount.file.core.windows.net , в котором storageaccount указано имя учетной записи хранения. При отправке запросов к этому имени, например при монтировании общей папки на рабочей станции, операционная система выполняет поиск DNS для преобразования полного доменного имени в IP-адрес.

По умолчанию storageaccount.file.core.windows.net разрешает IP-адрес общедоступной конечной точки. Общедоступная конечная точка для учетной записи хранения размещается в кластере хранилища Azure, где размещаются многие другие общедоступные конечные точки учетных записей хранения. При создании частной конечной точки частная зона DNS связывается с виртуальной сетью, в которую она была добавлена, при этом запись CNAME storageaccount.file.core.windows.net сопоставляется с записью типа A для частного IP-адреса частной конечной точки вашей учетной записи хранения. Это позволяет использовать storageaccount.file.core.windows.net полное доменное имя в виртуальной сети и сопоставить его с IP-адресом частной конечной точки.

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

Вы можете настроить перенаправление DNS одним из двух способов:

  • Используйте ВМ DNS-сервера: Настройте условное перенаправление*.core.windows.net (или соответствующий суффикс конечной точки хранилища для национальных облаков США, Германии или Китая) на виртуальную машину DNS-сервера, размещенную в вашей виртуальной сети Azure. Затем этот DNS-сервер рекурсивно направит запрос в частную DNS-службу Azure, которая разрешит полное доменное имя (FQDN) учетной записи хранения в соответствующий частный IP-адрес. Это однократный шаг для всех общих папок Azure, размещенных в виртуальной сети.

  • Используйте частный сопоставитель Azure DNS: Если вы не хотите развертывать DNS-сервер на основе виртуальных машин, можно выполнить ту же задачу с помощью частного сопоставителя Azure DNS.

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

Предпосылки

Прежде чем настроить перенаправление DNS в файлы Azure, вам потребуется следующее:

Настройка перенаправления DNS с помощью виртуальных машин

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

Схема, показывающая топологию сети для настройки пересылки D N S с помощью виртуальных машин в Azure.

Это важно

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

На локальных DNS-серверах создайте условный сервер пересылки с помощью Add-DnsServerConditionalForwarderZone. Этот условный сервер пересылки должен быть развернут на всех локальных DNS-серверах, чтобы обеспечить правильную пересылку трафика в Azure. Не забудьте заменить <azure-dns-server-ip> записи соответствующими IP-адресами для вашей среды.

$vnetDnsServers = "<azure-dns-server-ip>", "<azure-dns-server-ip>"

$storageAccountEndpoint = Get-AzContext | `
    Select-Object -ExpandProperty Environment | `
    Select-Object -ExpandProperty StorageEndpointSuffix

Add-DnsServerConditionalForwarderZone `
        -Name $storageAccountEndpoint `
        -MasterServers $vnetDnsServers

На DNS-серверах в виртуальной сети Azure также необходимо настроить переадресацию, чтобы запросы к DNS-зоне учетной записи хранилища перенаправлялись в частную службу DNS Azure, которую обслуживает зарезервированный IP-адрес 168.63.129.16. (Не забудьте заполнить $storageAccountEndpoint , если вы выполняете команды в другом сеансе PowerShell.)

Add-DnsServerConditionalForwarderZone `
        -Name $storageAccountEndpoint `
        -MasterServers "168.63.129.16"

Настройка функции перенаправления DNS с помощью приватного резолвера Azure DNS

Если вы предпочитаете не развертывать виртуальные машины DNS-сервера, можно выполнить ту же задачу с помощью частного сопоставителя Azure DNS. См. статью "Создание частного сопоставителя Azure DNS" с помощью портала Azure.

Схема, показывающая топологию сети для настройки пересылки D N S с помощью резолвера Azure D N S.

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

Предупреждение

При настройке пересылки для зоны core.windows.net все запросы для этого общедоступного домена будут перенаправляться в инфраструктуру Azure DNS. Это приводит к проблеме при попытке получить доступ к учетной записи хранения другого клиента, настроенного с частными конечными точками, так как Azure DNS ответит на запрос общедоступного имени учетной записи хранения с помощью CNAME, который не существует в частной зоне DNS. Решение этой проблемы заключается в создании межтенантной частной конечной точки в вашей среде для подключения к этой учетной записи хранения.

Чтобы настроить перенаправление DNS с помощью Azure DNS Private Resolver, запустите этот сценарий на локальных DNS-серверах. Замените <resolver-ip> на IP-адрес входящего узла резолвера.

$privateResolver = "<resolver-ip>"

$storageAccountEndpoint = Get-AzContext | `
    Select-Object -ExpandProperty Environment | `
    Select-Object -ExpandProperty StorageEndpointSuffix

Add-DnsServerConditionalForwarderZone `
        -Name $storageAccountEndpoint `
        -MasterServers $privateResolver

Подтвердите переадресаторы DNS

Прежде чем проверить, успешно ли применены серверы пересылки DNS, рекомендуется очистить кэш DNS на локальной рабочей станции.Clear-DnsClientCache Чтобы проверить, возможно ли определить полное доменное имя вашей учетной записи хранения, используйте Resolve-DnsName или nslookup.

# Replace storageaccount.file.core.windows.net with the appropriate FQDN for your storage account.
# Note that the proper suffix (core.windows.net) depends on the cloud you're deployed in.
Resolve-DnsName -Name storageaccount.file.core.windows.net

Если разрешение имен выполнено успешно, вы увидите, что разрешенный IP-адрес соответствует IP-адресу учетной записи хранения.

Name                              Type   TTL   Section    NameHost
----                              ----   ---   -------    --------
storageaccount.file.core.windows. CNAME  29    Answer     csostoracct.privatelink.file.core.windows.net
net

Name       : storageaccount.privatelink.file.core.windows.net
QueryType  : A
TTL        : 1769
Section    : Answer
IP4Address : 192.168.0.4

Если вы монтируете общую папку SMB, вы также можете использовать команду Test-NetConnection, чтобы убедиться, что TCP-подключение может быть успешно установлено с вашей учетной записью хранилища.

Test-NetConnection -ComputerName storageaccount.file.core.windows.net -CommonTCPPort SMB

См. также