Mengonfigurasi VPN Titik-ke-Situs (P2S) di Linux untuk digunakan dengan Azure Files
Anda dapat menggunakan koneksi VPN point-to-situs (P2S) untuk memasang berbagi file Azure Anda dari luar Azure, tanpa mengirim data melalui internet terbuka. Koneksi VPN Titik-ke-Situs adalah koneksi VPN antara Azure dan klien individual. Untuk menggunakan sambungan VPN P2S dengan Azure Files, sambungan VPN P2S perlu dikonfigurasi untuk setiap klien yang ingin terhubung. Jika memiliki banyak klien yang perlu disambungkan ke berbagi file Azure dari jaringan lokal, Anda dapat menggunakan koneksi VPN Situs-ke-Situs (S2S), bukan koneksi Titik-ke-Situs untuk setiap klien. Untuk mempelajari lebih lanjut, lihat Konfigurasikan Site-to-Site VPN untuk digunakan dengan Azure Files.
Kami sangat menyarankan Anda membaca Gambaran umum jaringan Azure Files sebelum melanjutkan artikel panduan ini untuk diskusi yang lengkap tentang opsi jaringan yang tersedia untuk Azure Files.
Artikel ini menjabarkan langkah-langkah untuk mengonfigurasi Point-to-Site VPN untuk memasang berbagi file Azure lokal secara langsung.
Berlaku untuk
Jenis berbagi File | SMB | NFS |
---|---|---|
Berbagi file standar (GPv2), LRS/ZRS | ||
Berbagi file standar (GPv2), GRS/GZRS | ||
Berbagi file premium (FileStorage), LRS/ZRS |
Prasyarat
Versi terbaru dari Azure CLI. Untuk informasi tentang cara menginstal Azure CLI, lihat Menginstal Azure PowerShell CLI dan memilih sistem operasi Anda. Jika Anda lebih suka menggunakan modul Azure PowerShell di Linux, Anda dapat melakukannya. Namun, instruksi di bawah ini adalah untuk Azure CLI.
Berbagi file Azure yang ingin Anda pasang secara lokal. Berbagi file Azure disebarkan dalam akun penyimpanan, yang merupakan konstruksi pengelolaan yang memberikan gabungan penyimpanan bersama tempat Anda dapat menyebarkan beberapa berbagi serta sumber daya penyimpanan lainnya, seperti antrean atau kontainer blob. Anda bisa mempelajari lebih lanjut cara menggunakan berbagi file Azure dan akun penyimpanan di Membuat berbagi file Azure.
Titik akhir privat untuk akun penyimpanan yang berisi berbagi file Azure yang ingin Anda pasang secara lokal. Untuk mempelajari cara membuat titik akhir privat, lihat Mengonfigurasi titik akhir jaringan Azure Files.
Pasang piranti lunak yang diperlukan
Gateway jaringan virtual Azure dapat menyediakan koneksi VPN yang menggunakan beberapa protokol VPN, termasuk IPsec dan OpenVPN. Artikel ini menunjukkan cara menggunakan IPsec dan menggunakan paket strongSwan untuk memberikan dukungan di Linux.
Diverifikasi dengan Ubuntu 18.10.
sudo apt update
sudo apt install strongswan strongswan-pki libstrongswan-extra-plugins curl libxml2-utils cifs-utils unzip
INSTALL_DIR="/etc/"
Jika penginstalan gagal atau Anda mendapatkan kesalahan seperti EAP_IDENTITY tidak didukung, mengirim EAP_NAK, Anda mungkin perlu menginstal plugin tambahan:
sudo apt install -y libcharon-extra-plugins
Pilih jaringan virtual
Untuk mengakses berbagi file Azure dan sumber daya Azure lokal lainnya melalui Point-to-Site VPN, Anda harus membuat jaringan virtual, atau VNet. Koneksi P2S VPN yang akan Anda buat secara otomatis adalah jembatan penghubung antara mesin Linux lokal Anda dan jaringan virtual Azure ini.
Skrip berikut ini akan membuat jaringan virtual Azure dengan tiga subnet: satu untuk titik akhir layanan akun penyimpanan, satu untuk titik akhir privat akun penyimpanan Anda, yang diperlukan untuk mengakses akun penyimpanan lokal tanpa membuat perutean kustom untuk IP publik dari akun penyimpanan yang dapat berubah, dan satu untuk gateway jaringan virtual yang menyediakan layanan VPN.
Jangan lupa untuk mengganti <region>
, <resource-group>
, dan <desired-vnet-name>
dengan nilai yang sesuai untuk lingkungan Anda.
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 '"')
Buat sertifikat untuk autentikasi VPN
Agar koneksi VPN dari mesin Linux lokal Anda dapat diautentikasi untuk mengakses jaringan virtual, Anda harus membuat dua sertifikat: sertifikat akar, yang akan diberikan ke gateway mesin virtual, dan sertifikat klien, yang akan ditandatangani dengan sertifikat akar. Skrip berikut ini membuat sertifikat yang dibutuhkan.
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"
Sebarkan gateway jaringan virtual
Gateway jaringan virtual Azure adalah layanan tempat tujuan mesin Linux lokal Anda akan dikoneksikan. Penyebaran layanan ini memerlukan dua komponen dasar: IP publik yang akan mengidentifikasi gateway ke klien Anda di mana pun mereka berada dan sertifikat akar yang Anda buat sebelumnya yang akan digunakan untuk mengautentikasi klien Anda.
Jangan lupa untuk mengganti <desired-vpn-name-here>
dengan nama yang diinginkan untuk sumber daya ini.
Catatan
Penyebaran gateway jaringan virtual Azure memerlukan waktu hingga 45 menit. Saat sumber daya ini sedang disebarkan, skrip bash ini akan memblokir agar penyebaran selesai.
Koneksi P2S IKEv2/OpenVPN tidak didukung dengan SKU Dasar. Karenanya, skrip ini menggunakan SKU VpnGw1 untuk gateway jaringan 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
Mengonfigurasi klien VPN
Gateway jaringan virtual Azure akan membuat paket yang dapat diunduh dengan file konfigurasi yang dibutuhkan untuk menginisialisasi koneksi VPN di mesin Linux lokal Anda. Skrip berikut ini akan menempatkan sertifikat yang Anda buat di spot benar dan mengonfigurasi file ipsec.conf
dengan nilai yang benar dari file konfigurasi dalam paket yang dapat diunduh.
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
Memasang berbagi file Azure
Setelah menyiapkan VPN Point-to-Site, Anda dapat memasang berbagi file Azure. Lihat Memasang berbagi file SMB ke Linux atau Memasang berbagi file NFS ke Linux.