Configurare l'inoltro DNS per File di Azure usando VM di Azure o DNS di Azure Private Resolver.

✔️ Si applica a: condivisioni file SMB e NFS classiche create con il Microsoft.Storage provider di risorse

✖️ Non si applica a: Condivisioni di file create con il provider di risorse Microsoft.FileShares

File di Azure consente di creare endpoint privati per gli account di archiviazione contenenti le condivisioni file. Sebbene sia utile per molte applicazioni diverse, gli endpoint privati sono particolarmente utili per la connessione alle condivisioni file di Azure dalla rete locale tramite una connessione VPN o ExpressRoute usando il peering privato.

Perché le connessioni al tuo account di storage possano passare attraverso il tunnel di rete, il nome di dominio completamente qualificato (FQDN) del tuo account di storage deve risolversi all'indirizzo IP privato del tuo endpoint privato. Per raggiungere questa soluzione, devi inoltrare il suffisso endpoint di storage (core.windows.netper le regioni cloud pubbliche) al servizio DNS privato di Azure accessibile all'interno della tua rete virtuale. Questo articolo mostra come impostare e configurare l'inoltro DNS per la corretta risoluzione nell'indirizzo IP dell'endpoint privato dell'account di archiviazione.

Prima di iniziare, consulta Pianificazione per una distribuzione File di Azure e considerazioni di networking su File di Azure.

Come funziona il DNS forwarding con File di Azure

File di Azure offre i tipi di endpoint seguenti per l'accesso alle condivisioni file di Azure:

  • Endpoint pubblici, che hanno un indirizzo IP pubblico e sono accessibili da qualsiasi parte del mondo.
  • Endpoint privati, presenti all'interno di una rete virtuale, che hanno un indirizzo IP privato all'interno dello spazio di indirizzi della rete virtuale.
  • Endpoint di servizio, che limitano l'accesso all'endpoint pubblico a reti virtuali specifiche. È comunque possibile accedere all'account di archiviazione tramite l'indirizzo IP pubblico, ma l'accesso è possibile solo dalle posizioni specificate nella configurazione.

Gli endpoint pubblici e privati sono disponibili nell'account di archiviazione di Azure. Un account di archiviazione è un costrutto di gestione che rappresenta un pool di archiviazione condiviso in cui è possibile distribuire più condivisioni file oltre ad altre risorse di archiviazione, ad esempio contenitori BLOB o code.

Ogni account di archiviazione ha un nome di dominio completo (FQDN). Per le aree del cloud pubblico, questo nome di dominio completo segue il modello storageaccount.file.core.windows.net in cui storageaccount è il nome dell'account di archiviazione. Quando si effettuano richieste su questo nome, ad esempio montare la condivisione sulla workstation, il sistema operativo esegue una ricerca DNS per risolvere il nome di dominio completamente qualificato in un indirizzo IP.

Per impostazione predefinita, storageaccount.file.core.windows.net viene risolto nell'indirizzo IP dell'endpoint pubblico. L'endpoint pubblico per un account di archiviazione è ospitato in un cluster di archiviazione di Azure che ospita molti altri endpoint pubblici degli account di archiviazione. Quando si crea un endpoint privato, una zona DNS privato viene collegata alla rete virtuale a cui è stata aggiunta, con il mapping di un record CNAME storageaccount.file.core.windows.net a una voce di record A per l'indirizzo IP privato dell'endpoint privato dell'account di archiviazione. In questo modo è possibile usare il nome FQDN storageaccount.file.core.windows.net nella rete virtuale e risolverlo nell'indirizzo IP dell'endpoint privato.

Poiché l'obiettivo finale consiste nell'accedere alle condivisioni file di Azure ospitate nell'account di archiviazione dall'ambiente locale usando un tunnel di rete, ad esempio una connessione VPN o ExpressRoute, è necessario configurare i server DNS locali per inoltrare le richieste inviate al servizio File di Azure al servizio DNS privato di Azure.

È possibile configurare l'inoltro DNS in uno dei due modi seguenti:

  • Utilizzare le macchine virtuali del server DNS: configurare l'inoltro condizionale dell'endpoint di *.core.windows.net (o del suffisso appropriato per i servizi cloud nazionali negli Stati Uniti, in Germania o in Cina) verso una macchina virtuale del server DNS ospitata all'interno della rete virtuale di Azure. Questo server DNS inoltra quindi in modo ricorsivo la richiesta al servizio DNS privato di Azure, che risolverà il nome di dominio completo dell'account di archiviazione nell'indirizzo IP privato appropriato. Si tratta di un passaggio una tantum per tutte le condivisioni file di Azure ospitate all'interno della rete virtuale.

  • Usare il sistema di risoluzione privato DNS di Azure: Se non si vuole distribuire un server DNS basato su vm, è possibile eseguire la stessa attività usando il resolver privato DNS di Azure.

Oltre a File di Azure, le richieste di risoluzione dei nomi DNS per altri servizi di archiviazione di Azure (Archiviazione BLOB di Azure, Archiviazione tabelle di Azure, Archiviazione code di Azure e così via) verranno inoltrate al servizio DNS privato di Azure. Se necessario, è possibile aggiungere altri endpoint per altri servizi di Azure.

Prerequisiti

Prima di configurare l'inoltro DNS a File di Azure, è necessario quanto segue:

Configurare l'inoltro DNS usando le macchine virtuali

Se sono già presenti server DNS all'interno della rete virtuale di Azure o se si preferisce distribuire macchine virtuali del server DNS personalizzate in base a qualsiasi metodologia usata dall'organizzazione, è possibile configurare DNS con i cmdlet powerShell predefiniti del server DNS.

Diagramma che mostra la topologia di rete per la configurazione dell'inoltro D N S tramite macchine virtuali in Azure.

Importante

Questo articolo presuppone che tu stia usando il server DNS all'interno di Windows Server nel tuo ambiente on-premises. Puoi eseguire tutti i passaggi descritti qui usando qualsiasi server DNS, non solo il server DNS di Windows.

Nei server DNS locali creare un server d'inoltro condizionale usando Add-DnsServerConditionalForwarderZone. Questo server d'inoltro condizionale deve essere distribuito in tutti i server DNS locali per essere efficace per l'inoltro corretto del traffico ad Azure. Assicurarsi di sostituire le voci <azure-dns-server-ip> con gli indirizzi IP appropriati per l'ambiente.

$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

Nei server DNS all'interno della rete virtuale di Azure è anche necessario inserire un server d'inoltro in modo che le richieste per la zona DNS dell'account di archiviazione vengano indirizzate al servizio DNS privato di Azure, che viene indirizzato dall'indirizzo 168.63.129.16IP riservato. Ricordarsi di popolare $storageAccountEndpoint se si eseguono i comandi all'interno di una sessione di PowerShell diversa.

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

Configurare l'inoltro DNS con il resolver privato DNS di Azure

Se si preferisce non distribuire macchine virtuali del server DNS, è possibile eseguire la stessa attività usando il resolver privato DNS di Azure. Vedere Creare un sistema di risoluzione privato DNS di Azure usando il portale di Azure.

Diagramma che mostra la topologia di rete per la configurazione dell'inoltro D N S tramite il sistema di risoluzione privato di Azure D N S.

Non esiste alcuna differenza nel modo in cui si configurano i server DNS locali, ad eccezione del fatto che invece di puntare agli indirizzi IP dei server DNS in Azure, si punta all'indirizzo IP dell'endpoint in ingresso del sistema di risoluzione. Il sistema di risoluzione non richiede alcuna configurazione, perché le query verranno inoltrate al server DNS privato di Azure per impostazione predefinita. Se una zona DNS privata è collegata alla rete virtuale in cui viene distribuito il resolver, il resolver sarà in grado di rispondere con i record provenienti da tale zona DNS.

Avviso

Quando si configurano server d'inoltro per la zona core.windows.net , tutte le query per questo dominio pubblico verranno inoltrate all'infrastruttura DNS di Azure. Questo causa un problema quando si tenta di accedere a un account di archiviazione di un tenant diverso configurato con endpoint privati, perché DNS di Azure risponderà alla query per il nome pubblico dell'account di archiviazione con un CNAME che non esiste nella zona DNS privata. Una soluzione alternativa per questo problema consiste nel creare un endpoint privato tra tenant nell'ambiente per connettersi a tale account di archiviazione.

Per configurare l'inoltro DNS usando il resolver privato DNS di Azure, eseguire questo script nei server DNS locali. Sostituire <resolver-ip> con l'indirizzo IP dell'endpoint in ingresso del sistema di risoluzione.

$privateResolver = "<resolver-ip>"

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

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

Verifica che l'inoltro DNS funzioni

Prima di testare se i forwarder DNS funzionano, svuota la cache DNS sulla tua workstation locale usando Clear-DnsClientCache. Per verificare se è possibile risolvere correttamente il nome di dominio completo dell'account di archiviazione, usare Resolve-DnsName o 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

Se la risoluzione del nome è risolta, l'indirizzo IP risolto corrisponde all'indirizzo IP privato dell'endpoint privato del tuo account di archiviazione.

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

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

Se si monta una condivisione file SMB, è anche possibile usare il Test-NetConnection comando per verificare che una connessione TCP possa essere stabilita correttamente nell'account di archiviazione.

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

Vedere anche