Azure ExpressRoute Yapılandırması: Adım Adım Kurulum ve Yönetim Rehberi

Şirketin kritik iş uygulamaları artık Azure’da çalışıyor ama internet üzerinden gelen gecikme ve güvenlik endişeleri sizi rahatsız ediyor. İşte tam bu noktada Azure ExpressRoute devreye giriyor. ExpressRoute, şirket ağınızı Microsoft Azure’a özel bir bağlantı hattı üzerinden bağlamanızı sağlayan, internet trafiğini bypass eden bir çözüm. Büyük bankalar, sağlık kurumları ve üretim şirketleri bu teknolojiyi hem düşük gecikme hem de öngörülebilir bant genişliği için kullanıyor. Bu yazıda ExpressRoute’u sıfırdan kurup yönetmeyi, Azure CLI ve PowerShell komutlarıyla pratik örneklerle ele alacağız.

ExpressRoute Nedir ve Ne Zaman Kullanılır

ExpressRoute, şirketinizin veri merkezini, ofis ağını veya ortak yerleşim tesisini Microsoft’un ağına doğrudan bağlayan özel bir WAN bağlantısıdır. Standart site-to-site VPN’den farkı şu: VPN trafiği şifreli de olsa yine internet üzerinden gider. ExpressRoute ise tamamen ayrı bir fiber optik altyapı üzerinde çalışır.

Hangi senaryolarda ExpressRoute tercih edilmeli:

  • Yüksek veri transferi gereksinimleri: Aylık terabaytlarca veri Azure’a veya Azure’dan taşıyorsanız
  • Düşük gecikme hassasiyeti: Gerçek zamanlı finansal işlemler, ERP sistemleri, VDI altyapıları
  • Düzenleyici uyumluluk: KVKK, BDDK, ISO 27001 kapsamında veri güvenliği gereksinimleri
  • Tutarlı bant genişliği: İnternet bağlantısının yoğun saatlerde daraldığı ortamlar
  • Hibrit bulut mimarisi: On-premise ve Azure kaynaklarının sıkı entegrasyonu gerektiğinde

Bant genişliği seçenekleri 50 Mbps’ten 10 Gbps’e kadar çıkıyor. Türkiye’de ExpressRoute sağlayıcıları arasında Turkcell, Türk Telekom ve çeşitli uluslararası operatörler yer alıyor.

Ön Hazırlık ve Gereksinimler

ExpressRoute kurulumuna başlamadan önce birkaç şeyi netleştirmeniz gerekiyor. Önce Azure aboneliğinizde gerekli kaynak sağlayıcılarının kayıtlı olduğundan emin olun.

# Azure CLI ile giriş yapın
az login

# Aboneliğinizi seçin
az account set --subscription "Sirket-Production-Subscription"

# Kaynak sağlayıcılarını kontrol edin
az provider show --namespace Microsoft.Network --query "registrationState"

# Kayıtlı değilse kaydedin
az provider register --namespace Microsoft.Network
az provider register --namespace Microsoft.Peering

Ayrıca şirket tarafında bir BGP kapasiteli router veya CE (Customer Edge) cihazı gerekiyor. Cisco ASR, Juniper MX serisi ya da yazılım tabanlı çözümler işe yarıyor. BGP AS numaranızı ve kullanacağınız VLAN ID’leri önceden belirleyin.

Resource Group ve Temel Yapı Oluşturma

İyi bir organizasyon için önce kaynak grubunu ve ağ yapısını kuralım.

# Kaynak grubu oluştur
az group create 
  --name rg-expressroute-prod 
  --location westeurope 
  --tags Environment=Production Owner=NetworkTeam

# Virtual Network oluştur
az network vnet create 
  --resource-group rg-expressroute-prod 
  --name vnet-hub-prod 
  --address-prefix 10.100.0.0/16 
  --subnet-name GatewaySubnet 
  --subnet-prefix 10.100.255.0/27 
  --location westeurope

# Workload subnet ekle
az network vnet subnet create 
  --resource-group rg-expressroute-prod 
  --vnet-name vnet-hub-prod 
  --name snet-workloads 
  --address-prefix 10.100.1.0/24

Önemli not: GatewaySubnet ismi tam olarak bu şekilde olmalı, değiştiremezsiniz. Ve /27 veya daha büyük bir prefix kullanın, Microsoft bunu zorunlu tutuyor.

ExpressRoute Circuit Oluşturma

ExpressRoute circuit, servis sağlayıcınızla fiziksel bağlantıyı temsil eden mantıksal nesnedir. Önce circuit’i oluşturup ardından sağlayıcıya provisioning bilgilerini iletiyorsunuz.

# ExpressRoute circuit oluştur
az network express-route create 
  --resource-group rg-expressroute-prod 
  --name er-circuit-prod-westeu 
  --location westeurope 
  --bandwidth 1000 
  --peering-location "Amsterdam" 
  --provider "Equinix" 
  --sku-family MeteredData 
  --sku-tier Premium 
  --tags Environment=Production CostCenter=IT

# Circuit durumunu kontrol et
az network express-route show 
  --resource-group rg-expressroute-prod 
  --name er-circuit-prod-westeu 
  --query "{ProvisioningState:provisioningState, CircuitProvisioningState:circuitProvisioningState, ServiceKey:serviceProviderProperties.serviceProviderName}" 
  --output table

Bu komutu çalıştırdıktan sonra bir Service Key üretilir. Bu anahtarı servis sağlayıcınıza iletmeniz gerekiyor. Sağlayıcı kendi tarafında yapılandırmayı tamamladıktan sonra circuit durumu NotProvisioned dan Provisioned a geçecek.

SKU seçenekleri hakkında:

  • sku-family MeteredData: Her GB için ücret ödersiniz, düşük veri kullanımı için avantajlı
  • sku-family UnlimitedData: Sabit ücret, yüksek veri transferi için tercih edilir
  • sku-tier Standard: Azure public bölgelere erişim
  • sku-tier Premium: Global Azure bölgelerine ve Microsoft 365’e ek erişim

BGP Peering Yapılandırması

ExpressRoute iki tip peering destekler: Private Peering (Azure sanal ağlarına erişim) ve Microsoft Peering (Microsoft 365 ve Azure public hizmetlerine erişim). Çoğu kurumsal senaryo için Private Peering yeterli oluyor.

# Private Peering yapılandır
az network express-route peering create 
  --resource-group rg-expressroute-prod 
  --circuit-name er-circuit-prod-westeu 
  --peering-type AzurePrivatePeering 
  --peer-asn 65001 
  --primary-peer-subnet 192.168.100.0/30 
  --secondary-peer-subnet 192.168.100.4/30 
  --vlan-id 100 
  --shared-key "GucluBirParola2024!"

# Peering durumunu doğrula
az network express-route peering show 
  --resource-group rg-expressroute-prod 
  --circuit-name er-circuit-prod-westeu 
  --peering-type AzurePrivatePeering 
  --query "{State:state, PeerASN:peerASN, PrimarySubnet:primaryPeerAddressPrefix}"

Buradaki /30 subnet’ler çok önemli. Her link için 4 IP’li bir subnet kullanıyorsunuz: ilk ve son IP ağ/broadcast, ortadaki ikisi ise iki yönlü BGP için kullanılıyor. Primary ve secondary, redundancy için iki ayrı fiziksel bağlantıyı temsil ediyor.

Microsoft Peering gerekiyorsa ayrıca bir public IP bloğu ve Routing Registry kaydı lazım:

# Microsoft Peering için (opsiyonel)
az network express-route peering create 
  --resource-group rg-expressroute-prod 
  --circuit-name er-circuit-prod-westeu 
  --peering-type MicrosoftPeering 
  --peer-asn 65001 
  --primary-peer-subnet 203.0.113.0/30 
  --secondary-peer-subnet 203.0.113.4/30 
  --vlan-id 200 
  --advertised-public-prefixes "203.0.113.0/24" 
  --customer-asn 65001 
  --routing-registry-name ARIN

Virtual Network Gateway Oluşturma

Circuit hazır, şimdi Azure tarafındaki gateway’i kuruyoruz. Bu gateway, ExpressRoute circuit’ini sanal ağınıza bağlayan köprü.

# Gateway için public IP oluştur (ExpressRoute gateway'i için gerekli)
az network public-ip create 
  --resource-group rg-expressroute-prod 
  --name pip-ergw-prod 
  --sku Standard 
  --allocation-method Static 
  --zone 1 2 3

# ExpressRoute Gateway oluştur
# Bu işlem 20-45 dakika sürebilir, sabırlı olun!
az network vnet-gateway create 
  --resource-group rg-expressroute-prod 
  --name ergw-hub-prod 
  --location westeurope 
  --public-ip-address pip-ergw-prod 
  --vnet vnet-hub-prod 
  --gateway-type ExpressRoute 
  --sku ErGw1AZ 
  --no-wait

# Gateway oluşturma durumunu takip et
az network vnet-gateway show 
  --resource-group rg-expressroute-prod 
  --name ergw-hub-prod 
  --query "provisioningState" 
  --output tsv

Gateway SKU seçenekleri bant genişliği ve özellik açısından farklılık gösteriyor:

  • ErGw1AZ: 1 Gbps, availability zone destekli, orta ölçekli ortamlar için
  • ErGw2AZ: 2 Gbps, yüksek performans gereksinimleri için
  • ErGw3AZ: 10 Gbps, kritik üretim ortamları ve yüksek throughput senaryoları için
  • ErGwScale: Yeni nesil, otomatik ölçeklenebilir, 40 Gbps’e kadar

Circuit ve Gateway Bağlantısı

Gateway oluşturma tamamlandıktan sonra onu circuit’e bağlayabilirsiniz.

# Circuit'in Resource ID'sini al
CIRCUIT_ID=$(az network express-route show 
  --resource-group rg-expressroute-prod 
  --name er-circuit-prod-westeu 
  --query id 
  --output tsv)

# Gateway'i circuit'e bağla
az network vpn-connection create 
  --resource-group rg-expressroute-prod 
  --name conn-ergw-to-circuit 
  --vnet-gateway1 ergw-hub-prod 
  --express-route-circuit2 $CIRCUIT_ID 
  --routing-weight 0

# Bağlantı durumunu kontrol et
az network vpn-connection show 
  --resource-group rg-expressroute-prod 
  --name conn-ergw-to-circuit 
  --query "{ConnectionState:connectionStatus, ProvisioningState:provisioningState, IngressBytes:ingressBytesTransferred, EgressBytes:egressBytesTransferred}"

Şirket Tarafı BGP Yapılandırması (Cisco Örneği)

Azure tarafı tamam. Şimdi on-premise router’ınızda BGP konfigürasyonunu yapmanız lazım. Cisco IOS-XE üzerinde örnek bir yapılandırma:

# Bu bir Cisco IOS-XE konfigürasyon örneğidir
# SSH ile router'a bağlanıp config terminalden uygulayın

# Temel BGP konfigürasyonu
router bgp 65001
 bgp router-id 192.168.100.1
 bgp log-neighbor-changes
 !
 ! Primary link - Azure Private Peering
 neighbor 192.168.100.2 remote-as 12076
 neighbor 192.168.100.2 description Azure-ExpressRoute-Primary
 neighbor 192.168.100.2 password GucluBirParola2024!
 neighbor 192.168.100.2 soft-reconfiguration inbound
 !
 ! Secondary link - Azure Private Peering (redundancy)
 neighbor 192.168.100.6 remote-as 12076
 neighbor 192.168.100.6 description Azure-ExpressRoute-Secondary
 neighbor 192.168.100.6 password GucluBirParola2024!
 neighbor 192.168.100.6 soft-reconfiguration inbound
 !
 address-family ipv4
  network 10.0.0.0 mask 255.0.0.0
  neighbor 192.168.100.2 activate
  neighbor 192.168.100.2 route-map AZURE-IN in
  neighbor 192.168.100.2 route-map AZURE-OUT out
  neighbor 192.168.100.6 activate
  neighbor 192.168.100.6 route-map AZURE-IN in
  neighbor 192.168.100.6 route-map AZURE-OUT out
 exit-address-family
!
! Route filter - Azure'dan gelen rotaları filtrele
ip prefix-list AZURE-PREFIXES permit 10.100.0.0/16
!
route-map AZURE-IN permit 10
 match ip address prefix-list AZURE-PREFIXES
!
route-map AZURE-OUT permit 10
 match ip address prefix-list ON-PREM-NETWORKS

AS 12076 Microsoft’un BGP AS numarasıdır, bu değişmez. Şirketinizin AS numarası ise private aralıkta (64512-65534) olmalı, kamuya açık bir AS’iniz varsa onu da kullanabilirsiniz.

Monitoring ve Diagnostik

ExpressRoute’u kurduktan sonra sürekli izleme şart. Hem Azure tarafını hem de BGP session durumunu takip etmeniz gerekiyor.

# Circuit metriklerini görüntüle
az monitor metrics list 
  --resource $(az network express-route show 
    --resource-group rg-expressroute-prod 
    --name er-circuit-prod-westeu 
    --query id -o tsv) 
  --metric "BitsInPerSecond" "BitsOutPerSecond" 
  --interval PT5M 
  --start-time 2024-01-15T00:00:00Z 
  --end-time 2024-01-15T23:59:59Z 
  --output table

# BGP öğrenilen rotaları kontrol et
az network express-route list-route-tables 
  --resource-group rg-expressroute-prod 
  --name er-circuit-prod-westeu 
  --peering-type AzurePrivatePeering 
  --path primary

# ARP tablosunu kontrol et (Layer 2 doğrulama için)
az network express-route list-arp-tables 
  --resource-group rg-expressroute-prod 
  --name er-circuit-prod-westeu 
  --peering-type AzurePrivatePeering 
  --path primary

Alert oluşturmak için:

# Circuit durumu değiştiğinde uyarı ver
az monitor alert create 
  --resource-group rg-expressroute-prod 
  --name alert-er-circuit-down 
  --target $(az network express-route show 
    --resource-group rg-expressroute-prod 
    --name er-circuit-prod-westeu 
    --query id -o tsv) 
  --condition "avg BitsInPerSecond < 1000" 
  --window-size 5m 
  --evaluation-frequency 1m 
  --action-group ag-network-ops 
  --severity 1 
  --description "ExpressRoute circuit trafik almiyor"

Global Reach ile Çoklu Lokasyon Bağlantısı

Türkiye’deki merkez ofisiniz ve Hollanda’daki veri merkeziniz varsa, Global Reach özelliğiyle bu iki lokasyonu Azure üzerinden birbiriyle bağlayabilirsiniz. Yani iki ExpressRoute circuit’i Microsoft backbone üzerinden birbirine köprülüyorsunuz.

# İkinci circuit'in Resource ID'sini al
SECOND_CIRCUIT_ID=$(az network express-route show 
  --resource-group rg-expressroute-tr 
  --name er-circuit-prod-turkey 
  --query id 
  --output tsv)

# Global Reach bağlantısı oluştur
az network express-route peering connection create 
  --resource-group rg-expressroute-prod 
  --circuit-name er-circuit-prod-westeu 
  --peering-name AzurePrivatePeering 
  --name conn-globalreach-tr-to-eu 
  --peer-circuit $SECOND_CIRCUIT_ID 
  --address-prefix "192.168.200.0/29"

Bu yapılandırmayla İstanbul ofisinden Amsterdam veri merkezine giden trafik, internet yerine Microsoft’un global MPLS ağı üzerinden akıyor. Gecikme öngörülebilir hale geliyor.

Maliyet Optimizasyonu

ExpressRoute maliyetli bir hizmet. Gereksiz harcamaları önlemek için birkaç pratik öneri:

Bant genişliği doğru seçilmeli. Çoğu şirket tahmininin üzerinde bant genişliği satın alıyor. Azure Monitor’dan gerçek kullanımı izleyerek doğru boyutu belirleyin:

# Son 30 günün ortalama kullanımını hesapla
az monitor metrics list 
  --resource $(az network express-route show 
    --resource-group rg-expressroute-prod 
    --name er-circuit-prod-westeu 
    --query id -o tsv) 
  --metric "BitsInPerSecond" "BitsOutPerSecond" 
  --aggregation Average Maximum 
  --start-time $(date -d "30 days ago" --utc +%Y-%m-%dT%H:%M:%SZ) 
  --end-time $(date --utc +%Y-%m-%dT%H:%M:%SZ) 
  --interval P1D
  • MeteredData vs UnlimitedData: Aylık 5 TB’ın altındaysa MeteredData genellikle daha ucuz
  • Kullanılmayan peering’leri silin: Microsoft Peering kurulu ama kullanmıyorsanız gereksiz maliyet
  • Farklı bölgeler için zone billing: Egress trafiği bölgeye göre farklı ücretlendiriliyor
  • Reserved capacity: Uzun vadeli taahhütlerle %30-40 indirim mümkün

Sorun Giderme Senaryoları

Gerçek hayatta en sık karşılaşılan sorunlar ve çözümleri:

BGP session kurulmuyor: Önce VLAN ID ve subnet’leri doğrulayın. Shared key her iki tarafta da aynı olmalı. MTU değerini kontrol edin, ExpressRoute 1500 byte MTU gerektirir.

Rotalar Azure’a gelmiyor: On-premise tarafında advertised prefix listesini kontrol edin. Azure’un beklediği prefix’ler BGP route-map’te izin verilmeli.

Düşük throughput: Gateway SKU’su yeterli mi? ErGw1AZ maksimum 1 Gbps destekliyor. Circuit bant genişliği yeterli mi? Her iki yönde de ölçüm yapın.

Bağlantı aralıklı kesiliyor: BFD (Bidirectional Forwarding Detection) yapılandırmasını kontrol edin. Microsoft, ExpressRoute üzerinde BFD destekliyor ve hızlı failover sağlıyor.

# Routing tablosunu doğrula
az network express-route list-route-tables 
  --resource-group rg-expressroute-prod 
  --name er-circuit-prod-westeu 
  --peering-type AzurePrivatePeering 
  --path primary 
  --query "value[].{Network:network, NextHop:nextHop, LocalPref:locPrf, Weight:weight, Path:path}" 
  --output table

# Gateway diagnostics
az network vnet-gateway show 
  --resource-group rg-expressroute-prod 
  --name ergw-hub-prod 
  --query "{SKU:sku.name, Capacity:sku.capacity, ProvisioningState:provisioningState}"

Güvenlik Hususları

ExpressRoute özel bir bağlantı sağlasa da güvenlik katmanlarını ihmal etmeyin:

  • Network Security Groups: GatewaySubnet’e NSG uygulamak önerilmez, ancak workload subnet’lerinize mutlaka uygulayın
  • Azure Firewall veya NVA: Hub-spoke mimarisinde merkezi bir firewall üzerinden trafik geçirin
  • Route filtreleri: Microsoft Peering kullanıyorsanız hangi BGP komünitelerine izin verdiğinizi açıkça belirtin
  • MACSec: Bazı ExpressRoute Direct bağlantılarında Layer 2 şifreleme destekleniyor
  • Azure Private Link ile entegrasyon: PaaS hizmetlerine erişimi özel IP üzerinden yönlendirin

Encryption konusunda önemli bir not: ExpressRoute trafiği varsayılan olarak şifrelenmez. Şifreleme gerekiyorsa IPsec over ExpressRoute yapılandırabilirsiniz. Bu hem güvenliği artırır hem de bazı compliance gereksinimlerini karşılar.

Sonuç

Azure ExpressRoute, kurumsal hibrit bulut altyapısının bel kemiğini oluşturuyor. İnternet bağlantısının öngörülemezliğinden kurtulup sabit gecikme, yüksek bant genişliği ve güvenli bağlantı elde ediyorsunuz. Kurulum süreci birçok adım içeriyor: circuit oluşturma, sağlayıcı provisioning, BGP peering, gateway kurulumu ve bağlantı testleri. Her adımda doğru yapılandırma kritik önemde.

Pratikte en çok gözden kaçan konular şunlar: Gateway SKU seçimi (sonradan değiştirmek zor ve maliyetli), BGP community filtrelerinin doğru yapılandırılması ve monitoring altyapısının baştan kurulması. ExpressRoute’u kurarken mutlaka redundant bağlantı planlayın, sağlayıcıdan iki ayrı fiziksel bağlantı isteyin ve primary/secondary failover senaryolarını test edin.

Maliyet tarafında gerçekçi olun: 1 Gbps circuit aylık birkaç bin dolar tutabiliyor. Bant genişliği ihtiyacını iyi analiz edin, MeteredData ile UnlimitedData arasındaki farkı hesaplayın. Uzun vadeli taahhütler önemli tasarruf sağlıyor. Ama doğru yapılandırıldığında ExpressRoute, kritik iş uygulamaları için internet bağlantısının yerini tutamayacağı bir güvenilirlik ve performans seviyesi sunuyor.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir