Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Możesz użyć połączenia wirtualnej sieci prywatnej (VPN) typu punkt-lokacja, aby zainstalować udziały plików platformy Azure spoza platformy Azure bez wysyłania danych za pośrednictwem otwartego Internetu. Połączenie sieci VPN typu punkt-lokacja to połączenie sieci VPN między platformą Azure a poszczególnym komputerem klienckim. Aby użyć połączenia sieci VPN typu punkt-lokacja z usługą Azure Files, należy skonfigurować połączenie sieci VPN typu punkt-lokacja dla każdej maszyny klienckiej, która ma nawiązać połączenie. Jeśli masz wiele maszyn klienckich, które muszą się łączyć z udostępnianiem plików Azure z sieci lokalnej, zamiast połączenia punkt-lokacja dla każdej maszyny klienckiej, możesz użyć połączenia sieci VPN typu lokacja-lokacja. Aby dowiedzieć się więcej, zobacz Konfigurowanie sieci VPN typu lokacja-lokacja do użycia z usługą Azure Files.
Aby zapoznać się z pełną dyskusją na temat opcji sieci dostępnych dla usługi Azure Files, zobacz Omówienie sieci usługi Azure Files.
W tym artykule szczegółowo opisano kroki konfigurowania sieci VPN typu punkt-do-sieci w systemie Linux w celu zamontowania zasobów plików Azure bezpośrednio w środowisku lokalnym.
Odnosi się do
| Model zarządzania | Model rozliczania | Poziom mediów | Redundancja | SMB | NFS |
|---|---|---|---|---|---|
| Microsoft.Storage | Wersja 2 została przygotowana | HDD (standardowa) | Lokalna sieć (LRS) |
|
|
| Microsoft.Storage | Wersja 2 została przygotowana | HDD (standardowa) | Strefa (ZRS) |
|
|
| Microsoft.Storage | Wersja 2 została przygotowana | HDD (standardowa) | Geo (GRS) |
|
|
| Microsoft.Storage | Wersja 2 została przygotowana | HDD (standardowa) | Strefa geograficzna (GZRS) |
|
|
| Microsoft.Storage | Zaprovisionowana wersja 1 | SSD klasy premium | Lokalna sieć (LRS) |
|
|
| Microsoft.Storage | Zaprovisionowana wersja 1 | SSD klasy premium | Strefa (ZRS) |
|
|
| Microsoft.Storage | Płać według zużycia | HDD (standardowa) | Lokalna sieć (LRS) |
|
|
| Microsoft.Storage | Płać według zużycia | HDD (standardowa) | Strefa (ZRS) |
|
|
| Microsoft.Storage | Płać według zużycia | HDD (standardowa) | Geo (GRS) |
|
|
| Microsoft.Storage | Płać według zużycia | HDD (standardowa) | Strefa geograficzna (GZRS) |
|
|
Wymagania wstępne
Najnowsza wersja interfejsu wiersza polecenia platformy Azure. Aby uzyskać informacje na temat sposobu instalowania interfejsu wiersza polecenia platformy Azure, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure i wybieranie systemu operacyjnego. Zamiast tego możesz użyć modułu Azure PowerShell w systemie Linux, ale instrukcje zawarte w tym artykule dotyczą interfejsu wiersza polecenia platformy Azure.
Udział plików platformy Azure, który zamierzasz zainstalować lokalnie. Udziały plików platformy Azure są wdrażane na kontach magazynu, które są konstrukcjami zarządzania reprezentującymi udostępnioną pulę magazynu, w której można wdrożyć wiele udziałów plików. Dowiedz się więcej o tym, jak wdrażać udziały plików platformy Azure i konta magazynu, w sekcji Tworzenie udziału plików platformy Azure.
Prywatny punkt końcowy dla konta magazynu zawierającego udział plików platformy Azure, który chcesz zainstalować lokalnie. Aby dowiedzieć się, jak utworzyć prywatny punkt końcowy, zobacz Konfigurowanie punktów końcowych sieci usługi Azure Files.
Instalowanie wymaganego oprogramowania
Brama sieci wirtualnej platformy Azure może zapewnić połączenia sieci VPN przy użyciu kilku protokołów sieci VPN, w tym protokołów IPsec i OpenVPN. W tym artykule pokazano, jak używać protokołu IPsec i używa pakietu strongSwan do zapewnienia obsługi w systemie Linux.
Uwaga
Te instrukcje zostały przetestowane w systemie Ubuntu 18.10 i powinny działać w systemie Ubuntu 18.04 LTS lub nowszym, a także Debian 10+. Inne dystrybucje obsługujące strongSwan (takie jak Fedora, CentOS lub openSUSE) mogą wymagać różnych nazw pakietów lub poleceń instalacji.
# For Ubuntu/Debian-based distributions (Ubuntu 18.04+, Debian 10+)
sudo apt update
sudo apt install strongswan strongswan-pki libstrongswan-extra-plugins curl libxml2-utils cifs-utils unzip
Jeśli instalacja nie powiedzie się lub wystąpi błąd, taki jak EAP_IDENTITY not supported, sending EAP_NAK, może być konieczne zainstalowanie dodatkowych wtyczek:
sudo apt install -y libcharon-extra-plugins
Wdrażanie sieci wirtualnej
Aby uzyskać dostęp do współdzielonego folderu plików Azure i innych zasobów Azure z lokalnej infrastruktury poprzez VPN punkt-do-sieci, musisz utworzyć sieć wirtualną. Połączenie sieci VPN typu punkt-lokacja ustanawia bezpieczny tunel między lokalną maszyną kliencką z systemem Linux i tą siecią wirtualną platformy Azure.
Poniższy skrypt tworzy sieć wirtualną platformy Azure z trzema podsieciami: jeden dla punktu końcowego usługi konta magazynu, jeden dla prywatnego punktu końcowego konta magazynu, który jest wymagany do uzyskiwania dostępu do konta magazynu lokalnie bez tworzenia niestandardowego routingu dla publicznego adresu IP konta magazynu, który może ulec zmianie, oraz jeden dla bramy sieci wirtualnej, która zapewnia usługę sieci VPN.
# Variables - replace <region>, <resource-group>, and <desired-vnet-name> with your values
REGION="<region>"
RESOURCE_GROUP_NAME="<resource-group>"
VIRTUAL_NETWORK_NAME="<desired-vnet-name>"
Utwórz sieć wirtualną:
# Requires: REGION, RESOURCE_GROUP_NAME, VIRTUAL_NETWORK_NAME defined above
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 '"')
Utwórz podsieci dla punktów końcowych usługi, prywatnych punktów końcowych i bramy:
# Requires: RESOURCE_GROUP_NAME, VIRTUAL_NETWORK_NAME defined above
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 '"')
Sprawdź: Uruchom az network vnet subnet list --resource-group $RESOURCE_GROUP_NAME --vnet-name $VIRTUAL_NETWORK_NAME --output table i potwierdź, że pojawią się trzy podsieci: ServiceEndpointSubnet, PrivateEndpointSubnet, i GatewaySubnet.
Tworzenie certyfikatów na potrzeby uwierzytelniania sieci VPN
W przypadku połączeń sieci VPN z lokalnych maszyn klienckich z systemem Linux do uwierzytelniania za pomocą bramy sieci wirtualnej należy utworzyć dwa certyfikaty:
- Certyfikat główny udostępniany bramie maszyny wirtualnej
- Certyfikat klienta podpisany przy użyciu certyfikatu głównego i zainstalowany na każdej maszynie klienckiej
Ustaw zmienne certyfikatu i utwórz katalog roboczy:
# Variables
ROOT_CERT_NAME="P2SRootCert"
USERNAME="client" # Client certificate identity (not a machine login)
PASSWORD="1234" # Password for the client certificate PKCS#12 file
mkdir temp
cd temp
Wygeneruj certyfikat główny:
# Requires: ROOT_CERT_NAME defined above; run from temp directory
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)
Wygeneruj certyfikat klienta podpisany przez certyfikat główny:
# Requires: USERNAME, PASSWORD defined; rootCert.pem and rootKey.pem from previous step
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"
Sprawdź: Uruchom ls -la *.pem client.p12 i potwierdź, że istnieją pięć plików: rootKey.pem, , rootCert.pemclientKey.pem, clientCert.pemi client.p12.
Wdrażanie bramy sieci wirtualnej
Brama sieci wirtualnej platformy Azure to usługa, z którą łączy się lokalna maszyna kliencka z systemem Linux. Wdrożenie tej usługi wymaga dwóch składników:
- Publiczny adres IP, który identyfikuje bramę do maszyn klienckich.
- Utworzony wcześniej certyfikat główny, który uwierzytelnia maszyny klienckie przy użyciu certyfikatów klienta.
Uwaga
Wdrażanie bramy sieci wirtualnej platformy Azure może potrwać do 45 minut. Podczas wdrażania tego zasobu ten skrypt blokuje ukończenie wdrożenia.
Połączenia punkt-do-lokacji IKEv2/OpenVPN nie są obsługiwane z SKU bramy Basic. Ten skrypt używa jednostki SKU VpnGw1 dla bramy sieci wirtualnej, która jest minimalną wymaganą jednostkę SKU dla połączeń IKEv2. Publiczny adres IP może używać SKU typu Podstawowa z dynamicznym przypisaniem.
# Variables - replace <desired-vpn-name-here> with your value
VPN_NAME="<desired-vpn-name-here>"
PUBLIC_IP_ADDR_NAME="$VPN_NAME-PublicIP"
Utwórz publiczny adres IP bramy:
# Requires: RESOURCE_GROUP_NAME, REGION from 'Deploy a virtual network'; VPN_NAME, PUBLIC_IP_ADDR_NAME defined above
# Note: Basic SKU with dynamic allocation is sufficient for the public IP; the gateway SKU (VpnGw1) is what matters for IKEv2 support
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 '"')
Utwórz bramę sieci wirtualnej:
# Requires: RESOURCE_GROUP_NAME, REGION, VIRTUAL_NETWORK_NAME from 'Deploy a virtual network'; VPN_NAME, PUBLIC_IP_ADDR defined above
# Note: VpnGw1 is the minimum SKU required for IKEv2/OpenVPN; Basic SKU doesn't support point-to-site IKEv2
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-type "Vpn" \
--vpn-type "RouteBased" \
--address-prefixes "172.16.201.0/24" \
--client-protocol "IkeV2" > /dev/null
Przekaż certyfikat główny do bramy:
# Requires: RESOURCE_GROUP_NAME from 'Deploy a virtual network'; VPN_NAME defined above; ROOT_CERT_NAME, ROOT_CERTIFICATE from 'Create certificates'
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
Sprawdź: Uruchom az network vnet-gateway show --resource-group $RESOURCE_GROUP_NAME --name $VPN_NAME --query "provisioningState" i potwierdź, że dane wyjściowe to "Succeeded".
Konfigurowanie klienta sieci VPN
Brama sieci wirtualnej platformy Azure tworzy pakiet do pobrania z plikami konfiguracji wymaganymi do zainicjowania połączenia sieci VPN na lokalnej maszynie klienckiej z systemem Linux. Poniższy skrypt kopiuje certyfikat klienta do katalogów certyfikatów strongSwan (/etc/ipsec.d/) i konfiguruje ipsec.conf plik z wartościami pobranego pakietu konfiguracji.
# Requires: RESOURCE_GROUP_NAME from 'Deploy a virtual network'; VPN_NAME from 'Deploy virtual network gateway'
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
Wyodrębnij wartości konfiguracji sieci VPN:
# Requires: vpnClient.zip extracted in current directory
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)
Skopiuj certyfikaty do katalogów strongSwan:
# Requires: USERNAME from 'Create certificates'; client.p12 (client certificate) from temp directory
INSTALL_DIR="/etc/"
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"
Skonfiguruj połączenie IPsec:
# Requires: VIRTUAL_NETWORK_NAME from 'Deploy a virtual network'; VPN_SERVER, VPN_TYPE, ROUTES extracted above; INSTALL_DIR defined above
sudo tee -a "${INSTALL_DIR}ipsec.conf" <<EOF
conn $VIRTUAL_NETWORK_NAME
keyexchange=$VPN_TYPE
type=tunnel
leftfirewall=yes
left=%any
leftauth=eap-tls
leftid=%client
right=$VPN_SERVER
rightid=%$VPN_SERVER
rightsubnet=$ROUTES
leftsourceip=%config
auto=add
EOF
Skonfiguruj tajne klucze protokołu IPsec i nawiąż połączenie sieci VPN:
# Requires: PASSWORD from 'Create certificates'; INSTALL_DIR, VIRTUAL_NETWORK_NAME defined above
echo ": P12 client.p12 '$PASSWORD'" | sudo tee -a "${INSTALL_DIR}ipsec.secrets" > /dev/null
sudo ipsec restart
sudo ipsec up $VIRTUAL_NETWORK_NAME
Sprawdź: Uruchom sudo ipsec status i potwierdź, że dane wyjściowe pokazują ESTABLISHED dla połączenia nazwanego po Twojej sieci wirtualnej.
Instalowanie udziału plików platformy Azure
Po skonfigurowaniu sieci VPN typu punkt-lokacja możesz zainstalować udział plików platformy Azure. Zobacz Instalowanie udziałów plików SMB w systemie Linux lub Instalowanie udziału plików NFS w systemie Linux.
Sprawdź:df -h | grep <mount-point> Uruchom (zastąp <mount-point> ścieżką montowania) i upewnij się, że udział plików platformy Azure jest wyświetlany z oczekiwanym rozmiarem.