Megosztás a következőn keresztül:


Pont–hely (P2S) VPN konfigurálása Linuxon az Azure Fileshoz való használatra

Pont–hely (P2S) virtuális magánhálózati (VPN) kapcsolattal csatlakoztathatja azure-fájlmegosztásait az Azure-on kívülről anélkül, hogy adatokat küldene a nyílt interneten keresztül. A pont–hely TÍPUSÚ VPN-kapcsolat az Azure és egy egyéni ügyfél közötti VPN-kapcsolat. P2S VPN-kapcsolat Azure Files-kapcsolattal való használatához minden csatlakozni kívánt ügyfélhez P2S VPN-kapcsolatot kell konfigurálnia. Ha sok ügyfélnek kell csatlakoznia az Azure-fájlmegosztásokhoz a helyszíni hálózatról, az egyes ügyfelekhez pont–hely kapcsolat helyett helyek közötti (S2S) VPN-kapcsolatot használhat. További információ: Helyek közötti VPN konfigurálása az Azure Fileshoz való használatra.

Javasoljuk, hogy olvassa el az Azure Files hálózatkezelési áttekintését , mielőtt folytatná ezt a cikket az Azure Fileshoz elérhető hálózati lehetőségek teljes körű megvitatásához.

A cikk részletesen ismerteti a linuxos pont–hely VPN konfigurálását az Azure-fájlmegosztások közvetlen helyszíni csatlakoztatásához.

A következőre érvényes:

Fájlmegosztás típusa SMB NFS
Standard szintű fájlmegosztások (GPv2), LRS/ZRS Igen Nem
Standard szintű fájlmegosztások (GPv2), GRS/GZRS Igen Nem
Prémium fájlmegosztások (FileStorage), LRS/ZRS Igen Igen

Előfeltételek

  • Az Azure CLI legújabb verziója. Az Azure CLI telepítéséről további információt az Azure PowerShell CLI telepítése és az operációs rendszer kiválasztása című témakörben talál. Ha inkább az Azure PowerShell-modult szeretné használni Linuxon, akkor lehetséges. Az alábbi utasítások azonban az Azure CLI-hez tartoznak.

  • Egy Azure-fájlmegosztás, amit a helyszínen szeretne csatlakoztatni. Az Azure-fájlmegosztások a tárfiókokban vannak üzembe helyezve, amelyek olyan felügyeleti szerkezetek, amelyek egy megosztott tárkészletet képviselnek, amelyben több fájlmegosztást is üzembe helyezhet, valamint egyéb tárolási erőforrásokat, például blobtárolókat vagy üzenetsorokat. További információ az Azure-fájlmegosztások és tárfiókok Azure-fájlmegosztások és -tárfiókok azure-fájlmegosztások létrehozásában való üzembe helyezéséről.

  • A helyszíni csatlakoztatni kívánt Azure-fájlmegosztást tartalmazó tárfiók privát végpontja. A privát végpontok létrehozásáról az Azure Files hálózati végpontjainak konfigurálása című témakörben olvashat.

A szükséges szoftverek telepítése

Az Azure-beli virtuális hálózati átjáró számos VPN-protokoll használatával képes VPN-kapcsolatokat biztosítani, beleértve az IPsec-et és az OpenVPN-t. Ez a cikk bemutatja, hogyan használhatja az IPsec-et, és hogyan használhatja a strongSwan csomagot a linuxos támogatás biztosítására.

Az Ubuntu 18.10-vel ellenőrizve.

sudo apt update
sudo apt install strongswan strongswan-pki libstrongswan-extra-plugins curl libxml2-utils cifs-utils unzip

INSTALL_DIR="/etc/"

Ha a telepítés sikertelen, vagy olyan hibaüzenet jelenik meg, EAP_IDENTITY nem támogatott, EAP_NAK küldésekor előfordulhat, hogy további beépülő modulokat kell telepítenie:

sudo apt install -y libcharon-extra-plugins

Virtuális hálózat üzembe helyezése

Ahhoz, hogy az Azure-fájlmegosztást és más Azure-erőforrásokat a helyszínen, pont–hely VPN-en keresztül érje el, létre kell hoznia egy virtuális hálózatot vagy virtuális hálózatot. Az automatikusan létrehozott P2S VPN-kapcsolat hidat képez a helyszíni Linux-gép és az Azure-beli virtuális hálózat között.

A következő szkript létrehoz egy Azure-beli virtuális hálózatot három alhálózattal: egyet a tárfiók szolgáltatásvégpontjához, egyet a tárfiók privát végpontjához, amely a helyszíni tárfiók eléréséhez szükséges anélkül, hogy egyéni útválasztást hoz létre a tárfiók nyilvános IP-címéhez, amely változhat, és egyet a VPN-szolgáltatást biztosító virtuális hálózati átjáróhoz.

Ne felejtse el lecserélni <region>a , <resource-group>és <desired-vnet-name> a környezetének megfelelő értékeket.

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 '"')

Tanúsítványok létrehozása VPN-hitelesítéshez

Ahhoz, hogy a helyszíni Linux-gépekről érkező VPN-kapcsolatokat hitelesíteni lehessen a virtuális hálózat eléréséhez, két tanúsítványt kell létrehoznia:

  • Főtanúsítvány, amely a virtuálisgép-átjárónak lesz megadva
  • Ügyféltanúsítvány, amely a főtanúsítvánnyal lesz aláírva

A következő szkript létrehozza a szükséges tanúsítványokat.

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"

Virtuális hálózati átjáró üzembe helyezése

Az Azure virtuális hálózati átjáró az a szolgáltatás, amelyhez a helyszíni Linux-gépek csatlakozni fognak. A szolgáltatás üzembe helyezéséhez két alapvető összetevő szükséges:

  • Nyilvános IP-cím, amely azonosítja az ügyfelek átjáróját bárhol a világon
  • A korábban létrehozott főtanúsítvány, amely az ügyfelek hitelesítésére szolgál

Ne felejtse el lecserélni <desired-vpn-name-here> az erőforrásokhoz kívánt nevet.

Feljegyzés

Az Azure virtuális hálózati átjáró üzembe helyezése akár 45 percet is igénybe vehet. Az erőforrás üzembe helyezése közben ez a bash-szkript megakadályozza az üzembe helyezés befejezését.

A P2S IKEv2/OpenVPN-kapcsolatok nem támogatottak az alapszintű termékváltozattal. Ez a szkript a VpnGw1 termékváltozatot használja a virtuális hálózati átjáróhoz.

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

A VPN-ügyfél konfigurálása

Az Azure virtuális hálózati átjáró létrehoz egy letölthető csomagot, amely konfigurációs fájlokat tartalmaz a VPN-kapcsolat inicializálásához a helyszíni Linux-gépen. A következő szkript a megfelelő helyen helyezi el a létrehozott tanúsítványokat, és konfigurálja a ipsec.conf fájlt a letölthető csomag konfigurációs fájljának megfelelő értékeivel.

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 

Azure-fájlmegosztás csatlakoztatása

Most, hogy beállította a pont–hely VPN-t, csatlakoztathatja az Azure-fájlmegosztást. Lásd: SMB-fájlmegosztások csatlakoztatása Linuxhoz vagy NFS-fájlmegosztás csatlakoztatása Linuxhoz.

Lásd még