Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
È possibile usare una connessione VPN (Virtual Private Network) da punto a sito (P2S) per montare le condivisioni file di Azure dall'esterno di Azure, senza inviare dati tramite Internet aperto. Una connessione VPN da punto a sito è una connessione VPN tra Azure e un singolo client. Per usare una connessione VPN da sito a sito con File di Azure, è necessario configurare una connessione VPN da sito a sito per ogni client che vuole connettersi. Se è necessario connettere molti client alle condivisioni file di Azure dalla rete locale, è possibile usare una connessione VPN da sito a sito invece di una connessione da punto a sito per ogni client. Per altre informazioni, vedere Configurare una VPN da sito a sito per l'uso con File di Azure.
Per una descrizione completa delle opzioni di rete disponibili per File di Azure, è consigliabile leggere Panoramica della rete per File di Azure prima di procedere con questo articolo.
L'articolo illustra in dettaglio i passaggi per configurare una VPN da punto a sito in Linux per montare le condivisioni file di Azure direttamente in locale.
Si applica a
Modello di gestione | Modello di fatturazione | Livello supporti | Ridondanza | Piccole e Medie Imprese (PMI) | NFS |
---|---|---|---|---|---|
Microsoft.Storage | Con provisioning v2 | HDD (standard) | Locale | ![]() |
![]() |
Microsoft.Storage | Con provisioning v2 | HDD (standard) | Della zona | ![]() |
![]() |
Microsoft.Storage | Con provisioning v2 | HDD (standard) | Geografica | ![]() |
![]() |
Microsoft.Storage | Con provisioning v2 | HDD (standard) | GeoZone (GZRS) | ![]() |
![]() |
Microsoft.Storage | Con provisioning v1 | SSD (Premium) | Locale | ![]() |
![]() |
Microsoft.Storage | Con provisioning v1 | SSD (Premium) | Della zona | ![]() |
![]() |
Microsoft.Storage | Pagamento in base al consumo | HDD (standard) | Locale | ![]() |
![]() |
Microsoft.Storage | Pagamento in base al consumo | HDD (standard) | Della zona | ![]() |
![]() |
Microsoft.Storage | Pagamento in base al consumo | HDD (standard) | Geografica | ![]() |
![]() |
Microsoft.Storage | Con pagamento in base al consumo | HDD (standard) | GeoZone (GZRS) | ![]() |
![]() |
Prerequisiti
Versione più recente dell'interfaccia della riga di comando di Azure. Per informazioni su come installare l'interfaccia della riga di comando di Azure, vedere Installare l'interfaccia della riga di comando di Azure PowerShell e selezionare il sistema operativo. Se si preferisce usare il modulo Azure PowerShell in Linux, è possibile. Tuttavia, le istruzioni seguenti sono per l'interfaccia della riga di comando di Azure.
Una condivisione file di Azure che si vuole montare in locale. Le condivisioni file di Azure vengono distribuite all'interno di account di archiviazione, ovvero costrutti di gestione che rappresentano un pool condiviso di archiviazione in cui è possibile distribuire più condivisioni file. Per altre informazioni su come distribuire condivisioni file di Azure e account di archiviazione, vedere Creare una condivisione file di Azure.
Endpoint privato per l'account di archiviazione contenente la condivisione file di Azure da montare in locale. Per informazioni su come creare un endpoint privato, vedere Configurazione degli endpoint di rete di File di Azure.
Installare il software necessario
Il gateway di rete virtuale di Azure può fornire connessioni VPN usando diversi protocolli VPN, tra cui IPsec e OpenVPN. Questo articolo illustra come usare IPsec e usa il pacchetto strongSwan per fornire il supporto in Linux.
Verificato con Ubuntu 18.10.
sudo apt update
sudo apt install strongswan strongswan-pki libstrongswan-extra-plugins curl libxml2-utils cifs-utils unzip
INSTALL_DIR="/etc/"
Se l'installazione non riesce o si verifica un errore, ad esempio EAP_IDENTITY non supportato, inviando EAP_NAK, potrebbe essere necessario installare plug-in aggiuntivi:
sudo apt install -y libcharon-extra-plugins
Distribuire una rete virtuale
Per accedere alla condivisione file di Azure e ad altre risorse di Azure dall'ambiente locale tramite una VPN da punto a sito, è necessario creare una rete virtuale o un VNet. È possibile considerare la connessione VPN da sito a sito creata come un bridge tra il computer Linux locale e questa rete virtuale di Azure.
Lo script seguente crea una rete virtuale di Azure con tre subnet: una per l'endpoint di servizio dell'account di archiviazione, una per l'endpoint privato dell'account di archiviazione, necessaria per accedere all'account di archiviazione locale senza creare un routing personalizzato per l'indirizzo IP pubblico dell'account di archiviazione che può cambiare e uno per il gateway di rete virtuale che fornisce il servizio VPN.
Ricordarsi di sostituire <region>
, <resource-group>
e <desired-vnet-name>
con i valori appropriati per l'ambiente.
REGION="<region>"
RESOURCE_GROUP_NAME="<resource-group>"
VIRTUAL_NETWORK_NAME="<desired-vnet-name>"
VIRTUAL_NETWORK=$(az network vnet create \
--resource-group $RESOURCE_GROUP_NAME \
--name $VIRTUAL_NETWORK_NAME \
--location $REGION \
--address-prefixes "192.168.0.0/16" \
--query "newVNet.id" | tr -d '"')
SERVICE_ENDPOINT_SUBNET=$(az network vnet subnet create \
--resource-group $RESOURCE_GROUP_NAME \
--vnet-name $VIRTUAL_NETWORK_NAME \
--name "ServiceEndpointSubnet" \
--address-prefixes "192.168.0.0/24" \
--service-endpoints "Microsoft.Storage" \
--query "id" | tr -d '"')
PRIVATE_ENDPOINT_SUBNET=$(az network vnet subnet create \
--resource-group $RESOURCE_GROUP_NAME \
--vnet-name $VIRTUAL_NETWORK_NAME \
--name "PrivateEndpointSubnet" \
--address-prefixes "192.168.1.0/24" \
--query "id" | tr -d '"')
GATEWAY_SUBNET=$(az network vnet subnet create \
--resource-group $RESOURCE_GROUP_NAME \
--vnet-name $VIRTUAL_NETWORK_NAME \
--name "GatewaySubnet" \
--address-prefixes "192.168.2.0/24" \
--query "id" | tr -d '"')
Creare certificati per l'autenticazione VPN
Per consentire l'autenticazione delle connessioni VPN dai computer Linux locali per accedere alla rete virtuale, è necessario creare due certificati:
- Un certificato root, fornito al gateway della macchina virtuale
- Un certificato client, firmato con il certificato radice
Lo script seguente crea i certificati necessari.
ROOT_CERT_NAME="P2SRootCert"
USERNAME="client"
PASSWORD="1234"
mkdir temp
cd temp
sudo ipsec pki --gen --outform pem > rootKey.pem
sudo ipsec pki --self --in rootKey.pem --dn "CN=$ROOT_CERT_NAME" --ca --outform pem > rootCert.pem
ROOT_CERTIFICATE=$(openssl x509 -in rootCert.pem -outform der | base64 -w0 ; echo)
sudo ipsec pki --gen --size 4096 --outform pem > "clientKey.pem"
sudo ipsec pki --pub --in "clientKey.pem" | \
sudo ipsec pki \
--issue \
--cacert rootCert.pem \
--cakey rootKey.pem \
--dn "CN=$USERNAME" \
--san $USERNAME \
--flag clientAuth \
--outform pem > "clientCert.pem"
openssl pkcs12 -in "clientCert.pem" -inkey "clientKey.pem" -certfile rootCert.pem -export -out "client.p12" -password "pass:$PASSWORD"
Distribuire il gateway di rete virtuale
Il gateway di rete virtuale di Azure è il servizio a cui si connette il client Linux locale. La distribuzione di questo servizio richiede due componenti di base:
- Un indirizzo IP pubblico che identifica il gateway per i tuoi client ovunque si trovino nel mondo.
- Certificato radice creato in precedenza usato per autenticare i client
Ricordarsi di sostituire <desired-vpn-name-here>
con il nome desiderato per queste risorse.
Annotazioni
La distribuzione del gateway di rete virtuale di Azure può richiedere fino a 45 minuti. Durante la distribuzione di questa risorsa, questo script bash impedisce il completamento della distribuzione.
Le connessioni IKEv2/OpenVPN da punto a sito non sono supportate con lo SKU Basic . Questo script usa lo SKU VpnGw1 per il gateway di rete virtuale.
VPN_NAME="<desired-vpn-name-here>"
PUBLIC_IP_ADDR_NAME="$VPN_NAME-PublicIP"
PUBLIC_IP_ADDR=$(az network public-ip create \
--resource-group $RESOURCE_GROUP_NAME \
--name $PUBLIC_IP_ADDR_NAME \
--location $REGION \
--sku "Basic" \
--allocation-method "Dynamic" \
--query "publicIp.id" | tr -d '"')
az network vnet-gateway create \
--resource-group $RESOURCE_GROUP_NAME \
--name $VPN_NAME \
--vnet $VIRTUAL_NETWORK_NAME \
--public-ip-addresses $PUBLIC_IP_ADDR \
--location $REGION \
--sku "VpnGw1" \
--gateway-typ "Vpn" \
--vpn-type "RouteBased" \
--address-prefixes "172.16.201.0/24" \
--client-protocol "IkeV2" > /dev/null
az network vnet-gateway root-cert create \
--resource-group $RESOURCE_GROUP_NAME \
--gateway-name $VPN_NAME \
--name $ROOT_CERT_NAME \
--public-cert-data $ROOT_CERTIFICATE \
--output none
Configurare il client VPN
Il gateway di rete virtuale di Azure crea un pacchetto scaricabile con i file di configurazione necessari per inizializzare la connessione VPN nel computer Linux locale. Lo script seguente inserisce i certificati creati nel punto corretto e configura il ipsec.conf
file con i valori corretti del file di configurazione nel pacchetto scaricabile.
VPN_CLIENT=$(az network vnet-gateway vpn-client generate \
--resource-group $RESOURCE_GROUP_NAME \
--name $VPN_NAME \
--authentication-method EAPTLS | tr -d '"')
curl $VPN_CLIENT --output vpnClient.zip
unzip vpnClient.zip
VPN_SERVER=$(xmllint --xpath "string(/VpnProfile/VpnServer)" Generic/VpnSettings.xml)
VPN_TYPE=$(xmllint --xpath "string(/VpnProfile/VpnType)" Generic/VpnSettings.xml | tr '[:upper:]' '[:lower:]')
ROUTES=$(xmllint --xpath "string(/VpnProfile/Routes)" Generic/VpnSettings.xml)
sudo cp "${INSTALL_DIR}ipsec.conf" "${INSTALL_DIR}ipsec.conf.backup"
sudo cp "Generic/VpnServerRoot.cer_0" "${INSTALL_DIR}ipsec.d/cacerts"
sudo cp "${USERNAME}.p12" "${INSTALL_DIR}ipsec.d/private"
sudo tee -a "${installDir}ipsec.conf" <<EOF
conn $VIRTUAL_NETWORK_NAME
keyexchange=$VPN_TYPE
type=tunnel
leftfirewall=yes
left=%any
leftauth=eap-tls
leftid=%client
right=$vpnServer
rightid=%$vpnServer
rightsubnet=$routes
leftsourceip=%config
auto=add
EOF
echo ": P12 client.p12 '$PASSWORD'" | sudo tee -a "${INSTALL_DIR}ipsec.secrets" > /dev/null
sudo ipsec restart
sudo ipsec up $VIRTUAL_NETWORK_NAME
Montare la condivisione file di Azure
Dopo aver configurato la VPN da punto a sito, è possibile montare la condivisione file di Azure. Vedere Montare condivisioni file SMB in Linux o Montare una condivisione file NFS in Linux.