Configuration du transfert DNS pour Azure Files

Azure Files vous permet de créer des points de terminaison privés pour les comptes de stockage contenant vos partages de fichiers. Bien qu’utiles pour une grande variété d’applications, les points de terminaison privés le sont particulièrement lorsque vous devez vous connecter à vos partages de fichiers Azure à partir de votre réseau local, à l’aide d’une connexion VPN ou ExpressRoute avec appairage privé.

Pour que les connexions à votre compte de stockage passent par le tunnel réseau, le nom de domaine complet (FQDN) de votre compte de stockage doit être résolu en adresse IP privée de votre point de terminaison privé. Pour ce faire, vous devez transférer le suffixe du point de terminaison de stockage (core.windows.net pour les régions du cloud public) au service de DNS privé d’Azure, qui est accessible à partir de votre réseau virtuel. Ce guide explique comment configurer le transfert DNS pour résoudre correctement l’adresse IP du point de terminaison privé de votre compte de stockage.

Avant d’effectuer les étapes décrites dans cet article, nous vous recommandons fortement de lire Planification d’un déploiement Azure Files et Considérations relatives aux réseaux Azure Files.

S’applique à

Type de partage de fichiers SMB NFS
Partages de fichiers Standard (GPv2), LRS/ZRS Oui Non
Partages de fichiers Standard (GPv2), GRS/GZRS Oui Non
Partages de fichiers Premium (FileStorage), LRS/ZRS Oui Oui

Vue d’ensemble

Azure Files fournit les types de points de terminaison suivants pour accéder aux partages de fichiers Azure :

  • Les points de terminaison publics, qui ont une adresse IP publique et sont accessibles partout dans le monde.
  • Les points de terminaison privés, qui existent au sein d’un réseau virtuel et ont une adresse IP privée comprise dans l’espace d’adressage de ce réseau virtuel.
  • Points de terminaison de service, qui limitent l’accès au point de terminaison public à certains réseaux virtuels. Vous accédez toujours au compte de stockage via l’adresse IP publique, mais l’accès est uniquement possible à partir des emplacements spécifiés dans votre configuration.

Le compte de stockage Azure comprend à la fois des points de terminaison publics et des points de terminaison privés. Un compte de stockage est une construction de gestion qui représente un pool de stockage partagé dans lequel vous pouvez déployer plusieurs partages de fichiers, ainsi que d’autres ressources de stockage, telles que des conteneurs d’objets blob ou des files d’attente.

Chaque compte de stockage a un nom de domaine complet (FQDN). Pour les régions du cloud public, ce nom de domaine complet suit le modèle storageaccount.file.core.windows.net, où storageaccount correspond au nom du compte de stockage. Lorsque vous exécutez des requêtes sur ce nom (par exemple, pour monter le partage sur votre station de travail), votre système d'exploitation effectue une recherche DNS pour résoudre le nom de domaine complet en une adresse IP.

Par défaut, storageaccount.file.core.windows.net est résolu en l’adresse IP du point de terminaison public. Le point de terminaison public d’un compte de stockage est hébergé sur un cluster de stockage Azure qui héberge les points de terminaison publics de nombreux autres comptes de stockage. Lorsque vous créez un point de terminaison privé, une zone DNS privée est associée au réseau virtuel auquel elle a été ajoutée, et un enregistrement CNAME mappe storageaccount.file.core.windows.net à une entrée d’enregistrement A pour l’adresse IP privée du point de terminaison privé de votre compte de stockage. Cela vous permet d’utiliser le nom de domaine complet storageaccount.file.core.windows.net dans le réseau virtuel et de le résoudre en l’adresse IP du point de terminaison privé.

Étant donné que l’objectif ultime est d’accéder aux partages de fichiers Azure qui sont hébergés dans le compte de stockage à partir d’un emplacement local et à l’aide d’un tunnel réseau, tel qu’une connexion VPN ou ExpressRoute, vous devez configurer vos serveurs DNS locaux pour qu’ils transfèrent les requêtes envoyées au service Azure Files vers le service DNS privé Azure.

Vous pouvez configurer le transfert DNS de l’une des deux manières suivantes :

  • Utilisation des machines virtuelles du serveur DNS : configurez le transfert conditionnel de *.core.windows.net (ou le suffixe du point de terminaison de stockage approprié pour les clouds nationaux US Government, Allemagne ou Chine) sur une machine virtuelle d’un serveur DNS hébergé dans votre réseau virtuel Azure. Ce serveur DNS transfère ensuite la requête de manière récursive au service DNS privé d’Azure, qui résoudra le nom de domaine complet du compte de stockage en l’adresse IP privée appropriée. Il s’agit d’une étape unique pour tous les partages de fichiers Azure hébergés dans votre réseau virtuel.

  • Utilisation d’Azure DNS Private Resolver : si vous ne souhaitez pas déployer un serveur DNS basé sur une machine virtuelle, vous pouvez effectuer la même tâche à l’aide d’Azure DNS Private Resolver.

Outre Azure Files, les requêtes de résolution de noms DNS pour tous les autres services de stockage Azure (stockage Blob Azure, stockage Table Azure, stockage File d’attente Azure, etc.) sont transférées vers le service DNS privé d’Azure. Vous pouvez ajouter des points de terminaison supplémentaires pour d’autres services Azure si vous le souhaitez.

Prérequis

Avant de pouvoir configurer le transfert DNS vers Azure Files, vous avez besoin des éléments suivants :

Configurer le transfert DNS à l’aide de machines virtuelles

Si des serveurs DNS sont déjà en place dans votre réseau virtuel Azure, ou si vous préférez déployer vos propres machines virtuelles de serveur DNS, quelle que soit la méthodologie utilisée par votre organisation, vous pouvez configurer le DNS à l'aide des cmdlets PowerShell intégrées au serveur DNS.

Diagramme montrant la topologie de réseau pour la configuration du transfert DNS à l’aide de machines virtuelles dans Azure.

Important

Ce guide part du principe que vous utilisez le serveur DNS au sein de Windows Server dans votre environnement local. Toutes les étapes décrites ici sont valables pour n’importe quel serveur DNS, et non uniquement le serveur DNS Windows.

Sur vos serveurs DNS locaux, créez un redirecteur conditionnel à l’aide de Add-DnsServerConditionalForwarderZone. Ce redirecteur conditionnel doit être déployé sur tous vos serveurs DNS locaux afin de transférer correctement le trafic vers Azure. N’oubliez pas de remplacer les entrées <azure-dns-server-ip> par les adresses IP correspondant à votre environnement.

$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

Sur les serveurs DNS de votre réseau virtuel Azure, vous devez également mettre en place un redirecteur afin que les requêtes destinées à la zone DNS du compte de stockage soient dirigées vers le service DNS privé d’Azure, qui est accessible via l’adresse IP réservée 168.63.129.16. (N'oubliez pas de renseigner $storageAccountEndpoint si vous exécutez les commandes dans une autre session PowerShell).

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

Configurer le transfert DNS à l’aide d’Azure DNS Private Resolver

Si vous préférez ne pas déployer de machines virtuelles de serveur DNS, vous pouvez effectuer la même tâche à l’aide d’Azure DNS Private Resolver. Consultez Créer une instance Azure DNS Private Resolver en utilisant le portail Azure.

Diagramme montrant la topologie de réseau pour la configuration du transfert DNS à l’aide d’Azure DNS Private Resolver.

Il n’y a aucune différence dans la façon dont vous configurez vos serveurs DNS locaux, sauf qu’au lieu de pointer vers les adresses IP des serveurs DNS dans Azure, vous pointez vers l’adresse IP du point de terminaison entrant du programme de résolution. Le programme de résolution ne nécessite aucune configuration, car il transfère les requêtes au serveur DNS privé Azure par défaut. Si une zone DNS privée est liée au réseau virtuel sur lequel le programme de résolution est déployé, ce dernier peut répondre avec les enregistrements de cette zone DNS.

Avertissement

Lors de la configuration des redirecteurs pour la zone core.windows.net, toutes les requêtes pour ce domaine public sont transférées à votre infrastructure Azure DNS. Cela provoque un problème lorsque vous essayez d’accéder à un compte de stockage d’un autre locataire qui a été configuré avec des points de terminaison privés, car Azure DNS répond à la requête pour le nom public du compte de stockage avec un CNAME qui n’existe pas dans votre zone DNS privée. Une solution de contournement à ce problème consiste à créer un point de terminaison privé interlocataire dans votre environnement pour vous connecter à ce compte de stockage.

Pour configurer le transfert DNS à l’aide d’Azure DNS Private Resolver, exécutez ce script sur vos serveurs DNS locaux. Remplacez <resolver-ip> par l’adresse IP du point de terminaison entrant du programme de résolution.

$privateResolver = "<resolver-ip>"

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

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

Vérifier les redirecteurs DNS

Avant de vérifier si les redirecteurs DNS ont été correctement appliqués, nous vous recommandons de vider le cache DNS de votre station de travail locale à l’aide de Clear-DnsClientCache. Pour vérifier si vous pouvez résoudre correctement le nom de domaine complet de votre compte de stockage, utilisez Resolve-DnsName ou 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

Si la résolution de noms réussit, vous devez voir que l’adresse IP résolue correspond à l’adresse IP de votre compte de stockage.

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

Si vous montez un partage de fichiers SMB, vous pouvez également utiliser la commande Test-NetConnection pour vérifier qu'une connexion TCP peut être établie avec succès avec votre compte de stockage.

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

Voir aussi