Anmerkung
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Sie können eine Point-to-Site (P2S) VPN-Verbindung (Virtuelles Privates Netzwerk) verwenden, um Ihre Azure-Dateifreigaben von außerhalb von Azure einzubinden, ohne Daten über das offene Internet zu senden. Eine P2S-VPN-Verbindung ist eine VPN-Verbindung zwischen Azure und einem einzelnen Client. Um eine P2S-VPN-Verbindung mit Azure Files zu verwenden, müssen Sie eine P2S-VPN-Verbindung für jeden Client konfigurieren, der eine Verbindung herstellen möchte. Wenn Sie über viele Clients verfügen, die sich über Ihr lokales Netzwerk mit Ihren Azure-Dateifreigaben verbinden müssen, können Sie anstelle einer P2S-Verbindung für jeden Client eine S2S-VPN-Verbindung (Site-to-Site) verwenden. Weitere Informationen finden Sie unter Konfigurieren eines S2S-VPN (Site-to-Site) zur Verwendung mit Azure Files.
Es wird dringend empfohlen, vor der Lektüre des dieses Artikels den Artikel Azure Files – Überlegungen zum Netzwerkbetrieb zu lesen, der eine umfassende Erläuterung der für Azure Files verfügbaren Netzwerkoptionen enthält.
Der Artikel beschreibt die Schritte zur Konfiguration eines P2S-VPN unter Linux, um Azure-Dateifreigaben direkt lokal einzubinden.
Gilt für:
| Verwaltungsmodell | Abrechnungsmodell | Medienebene | Redundanz | KMU | NFS |
|---|---|---|---|---|---|
| Microsoft.Storage | Bereitgestellt v2 | HDD (Standard) | Lokal (LRS) | ||
| Microsoft.Storage | Bereitgestellt v2 | HDD (Standard) | Zone (ZRS) | ||
| Microsoft.Storage | Bereitgestellt v2 | HDD (Standard) | Geo (GRS) | ||
| Microsoft.Storage | Bereitgestellt v2 | HDD (Standard) | GeoZone (GZRS) | ||
| Microsoft.Storage | Bereitgestellt v1 | SSD (Premium) | Lokal (LRS) | ||
| Microsoft.Storage | Bereitgestellt v1 | SSD (Premium) | Zone (ZRS) | ||
| Microsoft.Storage | Nutzungsbasierte Bezahlung | HDD (Standard) | Lokal (LRS) | ||
| Microsoft.Storage | Nutzungsbasierte Bezahlung | HDD (Standard) | Zone (ZRS) | ||
| Microsoft.Storage | Nutzungsbasierte Bezahlung | HDD (Standard) | Geo (GRS) | ||
| Microsoft.Storage | Nutzungsbasierte Bezahlung | HDD (Standard) | GeoZone (GZRS) |
Voraussetzungen
Die neueste Version der Azure CLI. Informationen zum Installieren der Azure CLI finden Sie unter Installieren der Azure PowerShell CLI , und wählen Sie Ihr Betriebssystem aus. Wenn Sie es vorziehen, das Azure PowerShell-Modul unter Linux zu verwenden, können Sie dies auch. Die folgenden Anweisungen gelten jedoch für Azure CLI.
Eine Azure-Dateifreigabe, die Sie lokal einbinden können. Azure-Dateifreigaben werden in Speicherkonten bereitgestellt, die Verwaltungskonstrukte sind, die einen freigegebenen Speicherpool darstellen, in dem Sie mehrere Dateifreigaben bereitstellen können. Weitere Informationen zum Bereitstellen von Azure-Dateifreigaben und Speicherkonten finden Sie unter Erstellen einer Azure-Dateifreigabe.
Ein privater Endpunkt für das Speicherkonto mit der Azure-Dateifreigabe, die Sie lokal bereitstellen möchten. Informationen zum Erstellen eines privaten Endpunkts finden Sie unter Konfigurieren von Azure Files-Netzwerkendpunkten.
Installieren der erforderlichen Software
Das virtuelle Azure-Netzwerkgateway kann VPN-Verbindungen mit mehreren VPN-Protokollen bereitstellen, einschließlich IPsec und OpenVPN. In diesem Artikel wird gezeigt, wie Sie IPsec verwenden und das strongSwan-Paket verwenden, um die Unterstützung für Linux bereitzustellen.
Überprüft mit Ubuntu 18.10.
sudo apt update
sudo apt install strongswan strongswan-pki libstrongswan-extra-plugins curl libxml2-utils cifs-utils unzip
INSTALL_DIR="/etc/"
Wenn die Installation fehlschlägt oder Sie einen Fehler erhalten (wie z. B. EAP_IDENTITY wird nicht unterstützt, EAP_NAK wird gesendet), müssen Sie möglicherweise zusätzliche Plug-Ins installieren:
sudo apt install -y libcharon-extra-plugins
Bereitstellen eines virtuellen Netzwerks
Um von einer lokalen Umgebung aus über ein P2S-VPN auf Ihre Azure-Dateifreigabe und andere Azure-Ressourcen zuzugreifen, müssen Sie ein virtuelles Netzwerk (VNET) erstellen. Sie können sich die P2S VPN-Verbindung als Brücke zwischen Ihrem lokalen Linux-Computer und diesem virtuellen Azure-Netzwerk vorstellen.
Das folgende Skript erstellt ein virtuelles Azure-Netzwerk mit drei Subnetzen: eines für den Dienstendpunkt Ihres Speicherkontos, eines für den privaten Endpunkt Ihres Speicherkontos, der für den Zugriff auf das lokale Speicherkonto erforderlich ist, ohne benutzerdefiniertes Routing für die öffentliche IP des Speicherkontos zu erstellen, das sich ändern kann, und eines für Ihr virtuelles Netzwerkgateway, das den VPN-Dienst bereitstellt.
Denken Sie daran, <region>, <resource-group> und <desired-vnet-name> durch die entsprechenden Werte für Ihre Umgebung zu ersetzen.
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 '"')
Erstellen von Zertifikaten für die VPN-Authentifizierung
Damit VPN-Verbindungen von Ihren lokalen Linux-Computern für den Zugriff auf Ihr virtuelles Netzwerk authentifiziert werden können, müssen Sie zwei Zertifikate erstellen:
- Ein Stammzertifikat, das dem Gateway des virtuellen Computers bereitgestellt wird
- Ein Clientzertifikat, das mit dem Stammzertifikat signiert ist
Das folgende Skript erstellt die erforderlichen Zertifikate.
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"
Bereitstellen eines Gateways für virtuelle Netzwerke
Das virtuelle Azure-Netzwerkgateway ist der Dienst, mit dem Ihr lokaler Linux-Client eine Verbindung herstellt. Für die Bereitstellung dieses Diensts sind zwei grundlegende Komponenten erforderlich:
- Eine öffentliche IP-Adresse, die das Gateway zu Ihren Clients identifiziert, wo immer sie sich in der Welt befinden.
- Das stammzertifikat, das Sie zuvor erstellt haben, das zum Authentifizieren Ihrer Clients verwendet wird
Denken Sie daran, <desired-vpn-name-here> durch den Namen zu ersetzen, den Sie für diese Ressourcen verwenden möchten.
Hinweis
Die Bereitstellung des virtuellen Azure-Netzwerkgateways kann bis zu 45 Minuten dauern. Während diese Ressource bereitgestellt wird, wird die Bereitstellung durch dieses Bash-Skript blockiert.
P2S IKEv2/OpenVPN-Verbindungen werden nicht mit der Standard-SKU unterstützt. Dieses Skript verwendet die VpnGw1-SKU für das virtuelle Netzwerkgateway.
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
Konfigurieren des VPN-Clients
Das virtuelle Azure-Netzwerkgateway erstellt ein herunterladbares Paket mit Konfigurationsdateien, die zum Initialisieren der VPN-Verbindung auf Ihrem lokalen Linux-Computer erforderlich sind. Das folgende Skript platziert die Zertifikate, die Sie an der richtigen Stelle erstellt haben, und konfiguriert die ipsec.conf Datei mit den richtigen Werten aus der Konfigurationsdatei im herunterladbaren Paket.
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
Einbinden einer Azure-Dateifreigabe
Nachdem Sie Ihr Point-to-Site-VPN eingerichtet haben, können Sie Ihre Azure-Dateifreigabe bereitstellen. Siehe SMB-Dateifreigaben unter Linux einbinden oder NFS-Dateifreigaben unter Linux einbinden.