Azure VPN Gateway Kurulumu ve Yapılandırması
Şirket ağınızı Azure’a bağlamak istediğinizde, VPN Gateway tam olarak ihtiyacınız olan şey. Hybrid cloud mimarisi kurmak, uzak ofisleri merkez veri merkeziyle birleştirmek ya da site-to-site bağlantı oluşturmak için Azure VPN Gateway neredeyse kaçınılmaz bir çözüm haline geldi. Bu yazıda sıfırdan başlayarak production-ready bir VPN Gateway kurulumu yapacağız. Hem Azure Portal üzerinden hem de Azure CLI ile adımları göstereceğim çünkü gerçek hayatta ikisine de ihtiyaç duyuyorsunuz.
Azure VPN Gateway Nedir ve Ne Zaman Kullanılır?
Azure VPN Gateway, Azure sanal ağınız ile şirket içi ağınız veya başka bir Azure sanal ağı arasında şifreli tüneller oluşturan bir ağ geçidi servisidir. IPsec/IKE protokollerini kullanarak güvenli bağlantı sağlar.
Tipik kullanım senaryoları şunlar:
- Site-to-Site (S2S): Şirket ofisinizdeki fiziksel VPN cihazını Azure’a bağlamak
- Point-to-Site (P2S): Bireysel kullanıcıların dizüstü bilgisayarından Azure’a bağlanması
- VNet-to-VNet: Farklı Azure bölgelerindeki sanal ağları birbirine bağlamak
- ExpressRoute ile birlikte failover: ExpressRoute bağlantısı düşerse VPN devreye girer
Ben bu yazıda en yaygın senaryo olan Site-to-Site kurulumunu anlatacağım. Ofis firewall’ı olarak Cisco ASA veya Fortinet kullanan ekiplerin sıkça karşılaştığı bir senaryo bu.
Ön Hazırlık ve Gereksinimler
Kuruluma geçmeden önce şu bilgileri hazır etmeniz gerekiyor:
- Azure subscription ve yeterli yetkiler (Network Contributor veya Owner)
- Şirket tarafındaki public IP adresi (statik olması şart)
- Şirket tarafındaki iç ağ adresi bloğu (örneğin 192.168.1.0/24)
- Azure tarafında kullanacağınız VNet adres bloğu (örneğin 10.0.0.0/16)
- İki taraf arasında çakışan IP aralığı OLMAMALI, bu kritik
Azure CLI kurulu değilse önce onu kurun:
# Ubuntu/Debian için
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
# macOS için
brew install azure-cli
# Kurulum doğrulama
az --version
# Azure'a giriş
az login
# Kullanacağınız subscription'ı ayarlayın
az account set --subscription "Subscription-Adınız"
Kaynak Grubu ve Sanal Ağ Oluşturma
Her şey bir resource group ile başlar. Tüm VPN bileşenlerini aynı resource group altında tutmak yönetimi kolaylaştırır.
# Kaynak grubu oluştur
az group create
--name rg-vpngateway-prod
--location westeurope
# Sanal ağ oluştur
az network vnet create
--resource-group rg-vpngateway-prod
--name vnet-prod-westeurope
--address-prefix 10.0.0.0/16
--location westeurope
# İş yükleri için subnet
az network vnet subnet create
--resource-group rg-vpngateway-prod
--vnet-name vnet-prod-westeurope
--name snet-workloads
--address-prefix 10.0.1.0/24
Önemli not: GatewaySubnet ismi tam olarak GatewaySubnet olmalı. Büyük/küçük harf dahil. Azure bunu otomatik olarak VPN Gateway için kullanır ve başka amaçla kullanamazsınız.
# GatewaySubnet oluştur - isim değiştirilemez
az network vnet subnet create
--resource-group rg-vpngateway-prod
--vnet-name vnet-prod-westeurope
--name GatewaySubnet
--address-prefix 10.0.255.0/27
GatewaySubnet için /27 veya /28 kullanmanızı öneririm. /29 minimum ama /27 gelecekte ExpressRoute Gateway eklemek istediğinizde size esneklik sağlar.
Public IP Adresi Oluşturma
VPN Gateway’in internete açık bir public IP’ye ihtiyacı var. Bu IP, şirket tarafındaki firewall’ın bağlanacağı adres olacak.
# VPN Gateway için public IP
az network public-ip create
--resource-group rg-vpngateway-prod
--name pip-vpngw-prod
--allocation-method Static
--sku Standard
--zone 1 2 3
--location westeurope
# IP adresini kaydedin, şirket firewall'ında kullanacaksınız
az network public-ip show
--resource-group rg-vpngateway-prod
--name pip-vpngw-prod
--query ipAddress
--output tsv
Standard SKU ve zone redundancy seçmek production için şart. Basic SKU’yu test ortamlarında kullanabilirsiniz ama production’da kesinlikle Standard ile gidin.
VPN Gateway Oluşturma
İşte en kritik adım. VPN Gateway oluşturma işlemi 25-45 dakika sürer. Bu normal, sabredin.
# VPN Gateway oluştur
az network vnet-gateway create
--resource-group rg-vpngateway-prod
--name vpngw-prod-westeurope
--location westeurope
--public-ip-address pip-vpngw-prod
--vnet vnet-prod-westeurope
--gateway-type Vpn
--vpn-type RouteBased
--sku VpnGw2AZ
--generation Generation2
--no-wait
# Oluşturma durumunu takip et
az network vnet-gateway show
--resource-group rg-vpngateway-prod
--name vpngw-prod-westeurope
--query provisioningState
--output tsv
Gateway SKU seçimi çok önemli. İşte pratik rehber:
- VpnGw1: Küçük ofisler, düşük bant genişliği ihtiyacı, ~650 Mbps
- VpnGw2: Orta ölçekli şirketler, ~1 Gbps, birden fazla site
- VpnGw3: Yüksek trafik, ~1.25 Gbps, çok sayıda eşzamanlı bağlantı
- VpnGw1AZ/2AZ/3AZ: Yukarıdakilerin availability zone destekli versiyonları
AZ suffix’li SKU’lar zone-redundant olduğu için production’da tercih edin. Fiyat farkı var ama downtime maliyetinden çok daha ucuz.
Local Network Gateway Tanımlama
Local Network Gateway, şirket tarafını Azure’a tanıtır. Şirket VPN cihazının public IP’sini ve şirket içi ağ adreslerini buraya giriyorsunuz.
# Local Network Gateway - şirket tarafını temsil eder
az network local-gateway create
--resource-group rg-vpngateway-prod
--name lgw-office-istanbul
--location westeurope
--gateway-ip-address 203.0.113.50
--local-address-prefixes 192.168.1.0/24 192.168.2.0/24
--asn 65010
--bgp-peering-address 192.168.1.254
# Birden fazla şirket lokasyonu varsa ayrı Local Gateway'ler oluşturun
az network local-gateway create
--resource-group rg-vpngateway-prod
--name lgw-branch-ankara
--location westeurope
--gateway-ip-address 203.0.113.75
--local-address-prefixes 172.16.0.0/24
--local-address-prefixes kısmına şirket içindeki tüm ağ bloklarını ekleyin. Unutursanız o ağlara erişemezsiniz ve sonradan ekleyebilirsiniz ama tüneli yeniden müzakere etmeniz gerekebilir.
VPN Bağlantısı Oluşturma
Artık her iki taraf tanımlandı. Şimdi bunları bir bağlantıyla birleştirelim.
# Paylaşımlı anahtar oluştur (güçlü bir PSK kullanın)
PSK=$(openssl rand -base64 32)
echo "PSK: $PSK"
# Bu değeri güvenli bir yerde saklayın ve şirket firewall'ına da girin
# VPN bağlantısı oluştur
az network vpn-connection create
--resource-group rg-vpngateway-prod
--name vpncon-office-istanbul
--vnet-gateway1 vpngw-prod-westeurope
--location westeurope
--shared-key "$PSK"
--local-gateway2 lgw-office-istanbul
--connection-protocol IKEv2
--dpd-timeout 45
--enable-bgp false
# Bağlantı durumunu kontrol et
az network vpn-connection show
--resource-group rg-vpngateway-prod
--name vpncon-office-istanbul
--query connectionStatus
--output tsv
IKEv2 mi IKEv1 mi? Mümkünse her zaman IKEv2 kullanın. Daha hızlı, daha güvenilir, NAT-T desteği var. Sadece eski cihazlarda IKEv1’e dönmek zorunda kalırsınız.
Özel IKE Policy Yapılandırması
Varsayılan IKE policy genellikle yeterli ama bazı firewall’lar belirli cipher suite’leri zorunlu kılıyor. Özellikle Cisco, Fortinet veya Palo Alto cihazlarıyla çalışırken bu önemli.
# Özel IPsec/IKE policy ile bağlantı güncelleme
az network vpn-connection ipsec-policy add
--resource-group rg-vpngateway-prod
--connection-name vpncon-office-istanbul
--ike-encryption AES256
--ike-integrity SHA256
--dh-group DHGroup14
--ipsec-encryption AES256
--ipsec-integrity SHA256
--pfs-group PFS14
--sa-lifetime 3600
--sa-max-size 102400000
Bu değerleri şirket firewall’ınızdaki ayarlarla birebir eşleştirin. En yaygın hata burada oluyor. Bir taraf AES128, diğer taraf AES256 istiyorsa tünel hiç kurulmaz.
BGP Yapılandırması (İleri Seviye)
Çok sayıda şube ofisiniz varsa veya dinamik routing istiyorsanız BGP kullanmalısınız. BGP ile routing tablolarını manuel yönetmek zorunda kalmazsınız.
# BGP özellikli gateway oluşturma (yeni gateway için)
az network vnet-gateway create
--resource-group rg-vpngateway-prod
--name vpngw-prod-bgp
--location westeurope
--public-ip-address pip-vpngw-prod
--vnet vnet-prod-westeurope
--gateway-type Vpn
--vpn-type RouteBased
--sku VpnGw2AZ
--generation Generation2
--asn 65515
--bgp-peering-address 10.0.255.30
--no-wait
# BGP bilgilerini görüntüle
az network vnet-gateway show
--resource-group rg-vpngateway-prod
--name vpngw-prod-bgp
--query "bgpSettings"
--output json
# BGP peer durumunu kontrol et
az network vnet-gateway list-bgp-peer-status
--resource-group rg-vpngateway-prod
--name vpngw-prod-bgp
--output table
# Öğrenilen BGP rotaları
az network vnet-gateway list-learned-routes
--resource-group rg-vpngateway-prod
--name vpngw-prod-bgp
--output table
Point-to-Site Yapılandırması
Uzaktan çalışan ekip üyeleri için P2S kurulumu da oldukça yaygın. Sertifika tabanlı kimlik doğrulama kullanalım.
# Root sertifika oluştur (şirket CA'sı yoksa)
openssl genrsa -out vpn-root-ca.key 4096
openssl req -new -x509 -days 3650 -key vpn-root-ca.key
-out vpn-root-ca.crt
-subj "/C=TR/ST=Istanbul/O=Sirketiniz/CN=VPN-Root-CA"
# Root sertifikayı base64 formatına çevir
ROOT_CERT=$(openssl x509 -in vpn-root-ca.crt -outform der | base64 | tr -d 'n')
# P2S yapılandırmasını gateway'e ekle
az network vnet-gateway update
--resource-group rg-vpngateway-prod
--name vpngw-prod-westeurope
--address-prefixes 172.31.0.0/24
--client-protocol IkeV2 OpenVPN
--root-cert-name VPN-Root-CA
--root-cert-data "$ROOT_CERT"
# İstemci sertifikası oluştur
openssl genrsa -out vpn-client.key 2048
openssl req -new -key vpn-client.key
-out vpn-client.csr
-subj "/C=TR/ST=Istanbul/O=Sirketiniz/[email protected]"
openssl x509 -req -days 365
-in vpn-client.csr
-CA vpn-root-ca.crt
-CAkey vpn-root-ca.key
-CAcreateserial
-out vpn-client.crt
Monitoring ve Troubleshooting
Kurulum bitti ama iş bitmedi. İzleme ve sorun giderme sysadmin’in günlük rutini.
# Gateway metrics - diagnostics etkinleştir
az monitor diagnostic-settings create
--name vpngw-diagnostics
--resource $(az network vnet-gateway show
--resource-group rg-vpngateway-prod
--name vpngw-prod-westeurope
--query id --output tsv)
--logs '[{"category": "GatewayDiagnosticLog", "enabled": true},
{"category": "TunnelDiagnosticLog", "enabled": true},
{"category": "RouteDiagnosticLog", "enabled": true}]'
--workspace $(az monitor log-analytics workspace show
--resource-group rg-monitoring
--workspace-name law-prod
--query id --output tsv)
# Tünel bağlantı durumlarını listele
az network vpn-connection list
--resource-group rg-vpngateway-prod
--query "[].{Name:name, Status:connectionStatus, Ingress:ingressBytesTransferred, Egress:egressBytesTransferred}"
--output table
# IKE diagnostic başlat
az network vnet-gateway vpn-client generate
--resource-group rg-vpngateway-prod
--name vpngw-prod-westeurope
--processor-architecture Amd64
Bağlantı sorunlarında kontrol etmeniz gereken sıra:
- Tünel Up ama ping çalışmıyor: NSG kurallarını kontrol edin. GatewaySubnet’e NSG eklemeyin, workload subnet’e ekleyin ve gerekli portlara izin verin
- Tünel hiç kurulmadı: PSK uyuşmazlığı veya IKE policy uyuşmazlığı. Her iki taraf loglarına bakın
- Intermittent kesintiler: DPD timeout değerlerini kontrol edin, MTU sorunları olabilir. Tunnel fragmentation etkinleştirin
- Yüksek latency: Gateway SKU yetersiz olabilir veya coğrafi mesafe sorunu
# Packet capture başlat (troubleshooting için)
az network watcher packet-capture create
--resource-group rg-vpngateway-prod
--vm vm-test-01
--name capture-vpn-traffic
--storage-account sa-captures
--filters '[{"protocol": "TCP", "remoteIPAddress": "192.168.1.0/24"}]'
Maliyet Optimizasyonu
VPN Gateway maliyetleri birikir. Şu pratik önerilere dikkat edin:
- Dev/Test ortamları için Gateway’i geceleri durdurmayın, bunu desteklemiyor. Bunun yerine daha düşük SKU kullanın
- VpnGw1 ile VpnGw2 arasındaki fark aylık yaklaşık 100-150 USD. Bant genişliği ihtiyacınızı ölçün
- Aktarım ücretleri unutulmamalı. Azure’dan çıkan trafik ücretlendirilir, giren trafik ücretsiz
- Rezervasyon yaparak 1 veya 3 yıllık taahhütle yüzde 30-40 tasarruf edebilirsiniz
- Gereksiz Local Network Gateway’leri silin. Kullanmadığınız bağlantılar için bile küçük ücretler işliyor
# Kullanılmayan kaynakları bul
az network vpn-connection list
--resource-group rg-vpngateway-prod
--query "[?connectionStatus=='NotConnected'].{Name:name, LastActivity:lastActivityAt}"
--output table
# Maliyet tahminleme için boyut bilgilerini al
az network vnet-gateway show
--resource-group rg-vpngateway-prod
--name vpngw-prod-westeurope
--query "{SKU:sku.name, Tier:sku.tier, Generation:vpnGatewayGeneration}"
--output json
Yüksek Erişilebilirlik için Active-Active Yapılandırma
Production ortamları için Active-Active mod şiddetle tavsiye edilir. Bu modda iki gateway instance çalışır ve birinin arızalanması durumunda diğeri devralır.
# İkinci public IP oluştur (Active-Active için gerekli)
az network public-ip create
--resource-group rg-vpngateway-prod
--name pip-vpngw-prod-secondary
--allocation-method Static
--sku Standard
--zone 1 2 3
--location westeurope
# Mevcut gateway'i Active-Active moda geçir
az network vnet-gateway update
--resource-group rg-vpngateway-prod
--name vpngw-prod-westeurope
--active-active true
--public-ip-address pip-vpngw-prod pip-vpngw-prod-secondary
Active-Active modda şirket tarafındaki cihazın da iki tüneli desteklemesi gerekiyor. Cisco ASA ve Fortinet bunu destekliyor, ancak konfigürasyonu biraz karmaşık.
Güvenlik Sıkılaştırma
# Zayıf cipher'ları devre dışı bırak
az network vpn-connection ipsec-policy add
--resource-group rg-vpngateway-prod
--connection-name vpncon-office-istanbul
--ike-encryption AES256
--ike-integrity SHA384
--dh-group DHGroup24
--ipsec-encryption GCMAES256
--ipsec-integrity GCMAES256
--pfs-group PFS24
--sa-lifetime 7200
--sa-max-size 1024000000
# Azure Defender for Network etkinleştir
az security pricing create
--name VirtualNetworks
--tier Standard
Güvenlik açısından dikkat edilmesi gerekenler:
- PSK uzunluğu en az 32 karakter ve rastgele olmalı. Tahmin edilebilir şeyler kullanmayın
- IKE policy’yi mümkün olan en güçlü algoritmalarla yapılandırın
- Gateway subnet’e NSG eklemeyin. Microsoft bunu desteklemiyor ve beklenmedik kesintilere yol açar
- Connection monitoring kurun, bağlantı düşerse anında haberdar olun
- Azure Private Endpoint kullanıyorsanız VPN üzerinden de erişilebildiğinden emin olun
- Audit logları Log Analytics Workspace’e gönderin ve anomali alertleri kurun
Sonuç
Azure VPN Gateway kurulumu ilk bakışta karmaşık görünse de adımları sırayla takip ettiğinizde oldukça sistematik bir süreç. Özetlemek gerekirse: resource group ve VNet oluşturun, GatewaySubnet ekleyin, gateway oluşturun (en uzun süren adım bu), local gateway ile şirket tarafını tanımlayın, PSK ile bağlantıyı kurun ve monitoring’i ihmal etmeyin.
En sık yapılan hatalar şunlar: GatewaySubnet boyutunu çok küçük tutmak, her iki taraftaki IKE policy’lerin uyuşmadığını fark edememek, şirket firewall’ındaki NAT-T ayarlarını unutmak ve aktarım ücretlerini hesaba katmamak. Bunları baştan düşünürseniz çok daha sorunsuz bir deneyim yaşarsınız.
BGP kullanımını da değerlendirin, özellikle çok lokasyonlu yapılarda routing yönetimini inanılmaz kolaylaştırıyor. Ve Production ortamı için Active-Active mod ile Standard SKU’lu zone-redundant gateway şart, ilk kurulum maliyeti daha fazla ama gece 2’de VPN bağlantısı kesilince uyanmak zorunda kalmamak paha biçilemez.
