Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Você pode usar uma conexão VPN ponto a site (P2S) para montar seus compartilhamentos de arquivos do Azure a partir de fora do Azure, sem enviar dados pela Internet aberta. Uma conexão VPN ponto a site é uma conexão VPN entre o Azure e um cliente individual. Para usar uma conexão VPN P2S com arquivos do Azure, você precisa configurar uma conexão VPN P2S para cada cliente que deseja se conectar. Se muitos clientes precisarem se conectar aos seus compartilhamentos de arquivo do Azure de suas redes locais, você poderá usar uma VPN S2S (site a site) em vez de uma conexão ponto a site para cada um deles. Para saber mais, confira Configurar uma VPN site a site para usar com os Arquivos do Azure.
É altamente recomendável que você leia a visão geral da rede dos Arquivos do Azure antes de continuar com este artigo para uma discussão completa sobre as opções de rede disponíveis para arquivos do Azure.
O artigo detalha as etapas para configurar uma VPN ponto a site no Linux para montar compartilhamentos de arquivos do Azure diretamente no local.
Aplica-se a
Modelo de gestão | Modelo de cobrança | Camada de mídia | Redundância | PME | NFS |
---|---|---|---|---|---|
Microsoft.Storage | Provisionado v2 | HDD (padrão) | Local (LRS) | ![]() |
![]() |
Microsoft.Storage | Provisionado v2 | HDD (padrão) | Zona (ZRS) | ![]() |
![]() |
Microsoft.Storage | Provisionado v2 | HDD (padrão) | Localização geográfica (GRS) | ![]() |
![]() |
Microsoft.Storage | Provisionado v2 | HDD (padrão) | GeoZone (GZRS) | ![]() |
![]() |
Microsoft.Storage | Provisionado v1 | SSD (de alta qualidade) | Local (LRS) | ![]() |
![]() |
Microsoft.Storage | Provisionado v1 | SSD (de alta qualidade) | Zona (ZRS) | ![]() |
![]() |
Microsoft.Storage | Pago conforme o uso | HDD (padrão) | Local (LRS) | ![]() |
![]() |
Microsoft.Storage | Pago conforme o uso | HDD (padrão) | Zona (ZRS) | ![]() |
![]() |
Microsoft.Storage | Pago conforme o uso | HDD (padrão) | Localização geográfica (GRS) | ![]() |
![]() |
Microsoft.Storage | Pago conforme o uso | HDD (padrão) | GeoZone (GZRS) | ![]() |
![]() |
Pré-requisitos
A versão mais recente da CLI do Azure. Para obter informações sobre como instalar a CLI do Azure, consulte Instalar a CLI do Azure PowerShell e selecionar seu sistema operacional. Se preferir usar o módulo do Azure PowerShell no Linux, você poderá. No entanto, as instruções abaixo são para a CLI do Azure.
Um compartilhamento de arquivos do Azure que você gostaria de montar localmente. Os compartilhamentos de arquivos do Azure são implantados em contas de armazenamento, que são constructos de gerenciamento que representam um pool compartilhado de armazenamento no qual você pode implantar vários compartilhamentos de arquivos. Você pode aprender mais sobre como implantar compartilhamentos de arquivo do Azure e contas de armazenamento em Criar um compartilhamento de arquivo do Azure.
Um ponto de extremidade privado para a conta de armazenamento contendo o compartilhamento de arquivo do Azure que você deseja montar localmente. Para saber como criar um ponto de extremidade privado, confira Configuração de pontos de extremidades de rede do serviço Arquivos do Azure.
Instalar o software necessário
O gateway de rede virtual do Azure pode fornecer conexões VPN usando vários protocolos VPN, incluindo IPsec e OpenVPN. Este artigo mostra como usar o IPsec e usa o pacote strongSwan para fornecer o suporte no Linux.
Verificado com o 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 a instalação falhar ou você receber um erro como EAP_IDENTITY sem suporte, enviando EAP_NAK, talvez seja necessário instalar plug-ins extras:
sudo apt install -y libcharon-extra-plugins
Implantar uma rede virtual
Para acessar o compartilhamento de arquivos do Azure e outros recursos do Azure do local por meio de uma VPN ponto a site, você deve criar uma rede virtual ou VNet. Você pode pensar na conexão VPN P2S criada como uma ponte entre seu computador Linux local e essa rede virtual do Azure.
O script a seguir cria uma rede virtual do Azure com três sub-redes: uma para o ponto de extremidade de serviço da sua conta de armazenamento, uma para o ponto de extremidade privado da sua conta de armazenamento, que é necessária para acessar a conta de armazenamento local sem criar roteamento personalizado para o IP público da conta de armazenamento que pode ser alterada e outra para o gateway de rede virtual que fornece o serviço VPN.
Lembre-se de substituir <region>
, <resource-group>
e <desired-vnet-name>
com os valores apropriados para seu 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 '"')
Criar certificados para autenticação VPN
Para que as conexões VPN de seus computadores Linux locais sejam autenticadas para acessar sua rede virtual, você deve criar dois certificados:
- Um certificado raiz, que é fornecido para o gateway de máquina virtual
- Um certificado do cliente, que é assinado com o certificado raiz
O script a seguir cria os certificados necessários.
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"
Implantar o gateway de rede virtual
O gateway de rede virtual do Azure é o serviço ao qual seu cliente Linux local se conecta. A implantação desse serviço requer dois componentes básicos:
- Um endereço IP público que identifica o gateway para seus clientes onde quer que eles estejam no mundo.
- O certificado raiz criado anteriormente que é usado para autenticar seus clientes
Lembre-se de substituir <desired-vpn-name-here>
pelo nome que você deseja para esses recursos.
Observação
A implantação do gateway de rede virtual do Azure pode levar até 45 minutos. Enquanto esse recurso está sendo implantado, esse script bash impede que a implantação seja concluída.
Não há suporte para conexões P2S IKEv2/OpenVPN com o SKU Básico . Esse script usa o SKU vpnGw1 para o gateway de rede virtual.
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
Configurar o cliente VPN
O gateway de rede virtual do Azure cria um pacote para download com arquivos de configuração necessários para inicializar a conexão VPN em seu computador Linux local. O script a seguir coloca os certificados criados no local correto e configura o ipsec.conf
arquivo com os valores corretos do arquivo de configuração no pacote para download.
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
Montar o compartilhamento de arquivo do Azure
Depois de configurar sua VPN Ponto a Site, você pode montar seu compartilhamento de arquivos do Azure. Consulte Montar compartilhamentos de arquivos SMB para Linux ou Montar compartilhamento de arquivos NFS para Linux.