AWS Direct Connect Yapılandırması: Adım Adım Kurulum Rehberi
Şirket ağınızı AWS’ye doğrudan bağlamak istiyorsunuz ama VPN üzerindeki gecikme ve bant genişliği sınırlamaları can sıkmaya başladı. İşte tam bu noktada AWS Direct Connect devreye giriyor. Direct Connect, veri merkeziniz ile AWS arasında özel, yüksek bant genişlikli bir ağ bağlantısı kurmanızı sağlıyor. İnterneti bypass ediyor, tutarlı gecikme sunuyor ve büyük veri transferlerinde ciddi maliyet avantajı sağlıyor. Bu yazıda sıfırdan bir Direct Connect yapılandırmasını nasıl kuracağınızı, BGP oturumlarını nasıl yöneteceğinizi ve gerçek dünya senaryolarında karşılaşacağınız sorunları nasıl çözeceğinizi ele alacağız.
Direct Connect Nedir ve Ne Zaman Kullanmalısınız?
Direct Connect, fiziksel bir ağ bağlantısıdır. AWS’nin dünya genelinde Direct Connect lokasyonları var; bu lokasyonlarda AWS ile partner ağ sağlayıcıları arasında cross-connect kurulmuş durumda. Siz de bir partner ISP veya telecom şirketi aracılığıyla kendi veri merkezinizden bu lokasyona kadar özel bir devre çekiyorsunuz.
Ne zaman Direct Connect tercih etmelisiniz?
- Aylık 1 TB üzerinde veri transferi yapıyorsanız
- 10ms altı tutarlı gecikme gerektiren uygulamalarınız varsa (ERP, gerçek zamanlı analitik)
- Güvenlik politikaları gereği trafik internetten geçemiyorsa
- Hybrid cloud mimarisi kuruyorsanız ve on-premises ile cloud arasında sürekli senkronizasyon varsa
- VPN’in bant genişliği tavanına takılıyorsanız
Direct Connect’in iki temel bağlantı tipi vardır: Dedicated Connection (1 Gbps veya 10 Gbps) ve Hosted Connection (50 Mbps ile 10 Gbps arası, partner üzerinden). Küçük ve orta ölçekli işletmeler için genellikle Hosted Connection daha ekonomik ve hızlı kurulabilir bir seçenek oluyor.
Ön Hazırlık ve Gereksinimler
Teknik adımlara geçmeden önce hazır olmanız gereken şeyler var.
Fiziksel gereksinimler:
- Direct Connect lokasyonuna yakın bir partner ISP ile sözleşme
- Single-mode fiber ve 802.1Q VLAN desteği olan bir router veya switch
- BGP (Border Gateway Protocol) desteği
- Kendi AS Number’ınız (özel ASN için 64512-65534 aralığını kullanabilirsiniz)
AWS tarafında:
- Direct Connect bağlantısı oluşturma yetkisi olan bir IAM kullanıcısı veya rolü
- Virtual Private Gateway veya Transit Gateway
- Gerekli CIDR bloklarının planlanmış olması
AWS tarafında gerekli IAM izinlerini kontrol edelim:
# IAM policy kontrolu
aws iam get-user --user-name dx-admin
# Direct Connect servisi icin gerekli izinleri listele
aws iam simulate-principal-policy
--policy-source-arn arn:aws:iam::123456789012:user/dx-admin
--action-names directconnect:CreateConnection
directconnect:CreateVirtualInterface
directconnect:DescribeConnections
--output json | jq '.EvaluationResults[].EvalDecision'
Direct Connect Bağlantısı Oluşturma
AWS Console veya CLI üzerinden bir Direct Connect bağlantısı talep etmekle başlıyoruz. Bu aşamada AWS size bir LOA-CFA (Letter of Authorization and Connecting Facility Assignment) belgesi sağlıyor. Bu belgeyi partner ISP’nize veriyorsunuz ve onlar fiziksel cross-connect’i kuruyor.
# Direct Connect baglantisi olustur
aws directconnect create-connection
--location "TU1"
--bandwidth "1Gbps"
--connection-name "prod-datacenter-dx"
--provider-name "Turk Telekom"
--region eu-west-1
# Cikti ornegi:
# {
# "connectionId": "dxcon-ffabc123",
# "connectionName": "prod-datacenter-dx",
# "connectionState": "requested",
# "bandwidth": "1Gbps"
# }
Bağlantı durumunu takip etmek önemli. Partner cross-connect’i kurduğunda durum “pending” dan “available” a geçiyor:
# Baglanti durumunu kontrol et
aws directconnect describe-connections
--connection-id dxcon-ffabc123
--query 'connections[0].{State:connectionState,Bandwidth:bandwidth,Location:location}'
--output table
# Tum Direct Connect baglantilarini listele
aws directconnect describe-connections
--query 'connections[*].{Name:connectionName,ID:connectionId,State:connectionState}'
--output json
Virtual Interface (VIF) Yapılandırması
Fiziksel bağlantı hazır olduktan sonra Virtual Interface oluşturmanız gerekiyor. Üç VIF tipi var:
Private VIF: VPC’nize erişim için, Virtual Private Gateway veya Direct Connect Gateway ile kullanılır.
Public VIF: AWS public servislerine (S3, DynamoDB, vb.) erişim için, internet üzerinden geçmeden.
Transit VIF: Transit Gateway ile kullanılır, birden fazla VPC’ye merkezi erişim sağlar.
Üretim ortamı için Transit VIF genellikle en esnek seçenek. Ama tek VPC senaryosu için Private VIF daha basit. Private VIF oluşturalım:
# Once Virtual Private Gateway olustur
aws ec2 create-vpn-gateway
--type ipsec.1
--amazon-side-asn 64512
--region eu-west-1
# VPG'yi VPC'ye bagla
aws ec2 attach-vpn-gateway
--vpn-gateway-id vgw-0abc123def456
--vpc-id vpc-0123456789abcdef
# Private Virtual Interface olustur
aws directconnect create-private-virtual-interface
--connection-id dxcon-ffabc123
--new-private-virtual-interface '{
"virtualInterfaceName": "prod-private-vif",
"vlan": 101,
"asn": 65001,
"authKey": "gizli-bgp-password-123",
"amazonAddress": "192.168.1.1/30",
"customerAddress": "192.168.1.2/30",
"addressFamily": "ipv4",
"virtualGatewayId": "vgw-0abc123def456"
}'
VLAN ID’yi partner ISP ile koordineli belirlemeniz gerekiyor. 802.1Q tagging kullanıldığından her VIF’in benzersiz bir VLAN ID’si olması şart.
Müşteri Tarafı Router Yapılandırması
Bu adım çoğu zaman en kritik ve hata yapılan nokta. Router tarafında BGP oturumu kurmak için hem BGP konfigürasyonunu hem de VLAN interface’ini doğru yapılandırmanız gerekiyor.
Cisco IOS/IOS-XE üzerinde tipik bir yapılandırma şöyle görünüyor:
# Cisco IOS ornegi (bash degil ama gosterim amaciyla)
# Bu komutlari router CLI'sinda calistiriyorsunuz
interface GigabitEthernet0/0/0
no shutdown
interface GigabitEthernet0/0/0.101
description AWS-Direct-Connect-Private-VIF
encapsulation dot1Q 101
ip address 192.168.1.2 255.255.255.252
router bgp 65001
bgp log-neighbor-changes
neighbor 192.168.1.1 remote-as 7224
neighbor 192.168.1.1 password gizli-bgp-password-123
neighbor 192.168.1.1 timers 10 30
!
address-family ipv4
neighbor 192.168.1.1 activate
neighbor 192.168.1.1 soft-reconfiguration inbound
network 10.0.0.0 mask 255.255.0.0
exit-address-family
AWS’nin AS numarası 7224’tür. BGP neighbor’ı yapılandırırken bunu kullanıyorsunuz. Authentication key’i create-private-virtual-interface komutunda belirttiğiniz authKey ile aynı olmalı.
BGP oturumunu doğrulayalım:
# AWS tarafinda BGP durumunu kontrol et
aws directconnect describe-virtual-interfaces
--virtual-interface-id dxvif-abc123
--query 'virtualInterfaces[0].{State:virtualInterfaceState,BGPState:bgpPeers[0].bgpStatus}'
--output json
Direct Connect Gateway ile Multi-VPC Bağlantısı
Gerçek dünya senaryolarında genellikle birden fazla VPC’niz oluyor: prod, staging, dev. Her biri için ayrı VIF oluşturmak yerine Direct Connect Gateway kullanarak merkezi bir yönetim sağlıyorsunuz.
# Direct Connect Gateway olustur
aws directconnect create-direct-connect-gateway
--direct-connect-gateway-name "prod-dxgw"
--amazon-side-asn 64512
# Cikti'dan gateway ID'yi al
DXGW_ID="b068c2e7-1234-5678-abcd-ef0123456789"
# Transit Gateway olustur
aws ec2 create-transit-gateway
--description "Merkezi Transit Gateway"
--options '{
"AmazonSideAsn": 64512,
"AutoAcceptSharedAttachments": "enable",
"DefaultRouteTableAssociation": "enable",
"DefaultRouteTablePropagation": "enable"
}'
--region eu-west-1
# Transit Gateway'i Direct Connect Gateway'e bagla
aws directconnect create-direct-connect-gateway-association
--direct-connect-gateway-id $DXGW_ID
--gateway-id tgw-0123456789abcdef
--add-allowed-prefixes-to-direct-connect-gateway '[
{"cidr": "10.0.0.0/8"},
{"cidr": "172.16.0.0/12"}
]'
Bu yapıda on-premises ağınızdan tek bir BGP oturumu üzerinden tüm VPC’lerinize ulaşabiliyorsunuz. Allowed prefixes kısmını dikkatli yapılandırmanız kritik; AWS bu prefix’leri on-premises tarafına advertise ediyor.
Yüksek Erişilebilirlik için Redundant Yapılandırma
Production ortamında tek bir Direct Connect bağlantısı yeterli değil. AWS’nin kendi SLA belgelerine göre bile fiziksel kesintiler olabiliyor. İki temel HA yaklaşımı var:
Aktif-Aktif (ECMP ile): İki bağlantı aynı anda kullanılır, yük paylaşımı yapılır.
Aktif-Pasif (BGP AS Path Prepending ile): Bir bağlantı primary, diğeri standby.
Aktif-Pasif için BGP local preference ve AS path prepending kullanabilirsiniz. AWS tarafına prefix’leri farklı metric’lerle advertise edelim:
# Birinci baglanti icin normal rota
# Router 1 BGP konfigurasyon ornegi (yorum satirlari)
# neighbor 192.168.1.1 route-map PRIMARY out
# route-map PRIMARY permit 10
# set local-preference 200
# Ikinci baglanti icin AS path prepending
# Router 2 BGP konfigurasyon ornegi
# neighbor 192.168.2.1 route-map SECONDARY out
# route-map SECONDARY permit 10
# set as-path prepend 65001 65001 65001
# AWS CLI ile her iki VIF'i de gozlemleyin
aws directconnect describe-virtual-interfaces
--query 'virtualInterfaces[*].{Name:virtualInterfaceName,State:virtualInterfaceState,BGP:bgpPeers[0].bgpStatus}'
--output json
Önemli not: Amazon, aynı Direct Connect lokasyonundaki iki bağlantıyı gerçek HA olarak kabul etmiyor. Farklı lokasyonlardan veya bir Direct Connect + bir Site-to-Site VPN kombinasyonu genellikle önerilen yaklaşım. VPN fallback özellikle küçük bütçelerdeki ortamlar için mükemmel bir çözüm.
Monitoring ve CloudWatch Alarmları
Direct Connect’i kurduktan sonra izlemeyi ihmal etmeyin. Birkaç kritik metrik var:
# CloudWatch'ta Direct Connect metriklerini sorgula
aws cloudwatch get-metric-statistics
--namespace "AWS/DX"
--metric-name "ConnectionBpsIngress"
--dimensions Name=ConnectionId,Value=dxcon-ffabc123
--start-time 2024-01-15T00:00:00Z
--end-time 2024-01-15T23:59:59Z
--period 3600
--statistics Average Sum
--output json
# BGP state degisiklikleri icin alarm olustur
aws cloudwatch put-metric-alarm
--alarm-name "DX-BGP-State-Alarm"
--alarm-description "Direct Connect BGP oturumu kapandi"
--namespace "AWS/DX"
--metric-name "ConnectionState"
--dimensions Name=ConnectionId,Value=dxcon-ffabc123
--statistic Minimum
--period 60
--evaluation-periods 2
--threshold 1
--comparison-operator LessThanThreshold
--alarm-actions arn:aws:sns:eu-west-1:123456789012:dx-alerts
--ok-actions arn:aws:sns:eu-west-1:123456789012:dx-alerts
Bağlantı metrikleri için izlemeniz gereken başlıca değerler:
- ConnectionState: 0 = down, 1 = up
- ConnectionBpsIngress / ConnectionBpsEgress: Anlık bant genişliği kullanımı
- ConnectionPpsIngress / ConnectionPpsEgress: Paket sayısı
- ConnectionErrorCount: CRC veya frame hataları, fiziksel katman sorunlarını işaret eder
Gerçek Dünya Senaryosu: Sorun Giderme
Bir gece monitoring alarmı çaldı ve BGP oturumu düştü. Panik yapmayın, sistematik yaklaşın.
# 1. Baglanti durumunu kontrol et
aws directconnect describe-connections
--connection-id dxcon-ffabc123
--query 'connections[0].connectionState'
# 2. VIF durumunu kontrol et
aws directconnect describe-virtual-interfaces
--virtual-interface-id dxvif-abc123
--query 'virtualInterfaces[0].{State:virtualInterfaceState,BGP:bgpPeers}'
# 3. CloudWatch Logs'tan BGP event gecmisine bak
aws logs filter-log-events
--log-group-name "/aws/directconnect/bgp"
--start-time $(date -d '2 hours ago' +%s)000
--filter-pattern "bgpStatus"
--output json | jq '.events[].message'
# 4. Son 1 saatteki hata sayisini kontrol et
aws cloudwatch get-metric-statistics
--namespace "AWS/DX"
--metric-name "ConnectionErrorCount"
--dimensions Name=ConnectionId,Value=dxcon-ffabc123
--start-time $(date -u -d '1 hour ago' '+%Y-%m-%dT%H:%M:%SZ')
--end-time $(date -u '+%Y-%m-%dT%H:%M:%SZ')
--period 300
--statistics Sum
Karşılaştığım yaygın sorunlar ve çözümleri:
- BGP oturumu kurulmuyor ama fiziksel bağlantı var: Authentication key uyuşmazlığı. Her iki tarafta da key’i resetleyin.
- Route advertise edilmiyor: BGP network statement veya redistribute komutu eksik. Router tarafında
show ip bgp summaryile kontrol edin. - Yüksek latency: MTU mismatch. Ethernet frame boyutunu her iki tarafta 1500 (veya jumbo frame kullanıyorsanız 9001) olarak eşitleyin.
- Intermittent kesintiler: Fiber kalitesi sorunu.
ConnectionErrorCountmetriğinde spike görürsünüz. Partner ISP’yi arayın.
Terraform ile Infrastructure as Code
Manual adımlar bir kez yapılır, sonra her şeyi kodla yönetmek gerekir. Direct Connect kaynaklarını Terraform ile yönetmek hem tekrarlanabilirlik hem de hata azaltma açısından kritik:
# terraform.tfvars dosyasini olustur
cat > terraform.tfvars << 'EOF'
aws_region = "eu-west-1"
connection_id = "dxcon-ffabc123"
vlan_id = 101
bgp_asn = 65001
bgp_auth_key = "gizli-bgp-password-123"
vpc_id = "vpc-0123456789abcdef"
onprem_cidr = "10.0.0.0/8"
EOF
# main.tf - Direct Connect kaynaklari
cat > main.tf << 'EOF'
provider "aws" {
region = var.aws_region
}
resource "aws_vpn_gateway" "dx_vgw" {
vpc_id = var.vpc_id
amazon_side_asn = 7224
tags = {
Name = "prod-dx-vgw"
Environment = "production"
ManagedBy = "terraform"
}
}
resource "aws_dx_private_virtual_interface" "prod" {
connection_id = var.connection_id
name = "prod-private-vif"
vlan = var.vlan_id
address_family = "ipv4"
bgp_asn = var.bgp_asn
amazon_address = "192.168.1.1/30"
customer_address = "192.168.1.2/30"
bgp_auth_key = var.bgp_auth_key
vpn_gateway_id = aws_vpn_gateway.dx_vgw.id
tags = {
Name = "prod-private-vif"
Environment = "production"
}
}
resource "aws_vpn_gateway_route_propagation" "dx_routes" {
vpn_gateway_id = aws_vpn_gateway.dx_vgw.id
route_table_id = var.route_table_id
}
EOF
# Terraform ile deploy et
terraform init
terraform plan -out=dx.tfplan
terraform apply dx.tfplan
Maliyet Optimizasyonu
Direct Connect maliyetleri iki ana kalemden oluşuyor: port saati ücreti ve veri transfer ücreti. Port saati sabit, veri transferi ise çıkan trafik bazında hesaplanıyor.
Birkaç pratik öneri:
- Data Transfer Out maliyeti Direct Connect üzerinden internetten çok daha düşük. Büyük hacimli S3 okumalarını Direct Connect Public VIF üzerinden yapılandırırsanız ciddi tasarruf sağlarsınız.
- Kullanılmayan VIF’leri hemen silin. Port saati devam eder.
- Bant genişliğini gerçek kullanıma göre boyutlandırın. 10 Gbps port için 1 Gbps kullanıyorsanız hosted connection ile başlayıp sonra büyüyebilirsiniz.
- Direct Connect SiteLink özelliğini değerlendirin. Farklı Direct Connect lokasyonları arasında AWS omurgasını kullanarak düşük maliyetli WAN alternatifi sunuyor.
Sonuç
AWS Direct Connect kurulumu göründüğünden daha fazla koordinasyon gerektiren bir proje. Fiziksel ağ tarafında partner ISP, BGP konfigürasyonu ve AWS tarafında VIF ve gateway yönetimini bir arada götürmek gerekiyor. Bu yazıda sıfırdan bir Direct Connect yapılandırmasını, HA senaryolarını, monitoring’i ve sorun giderme yaklaşımını ele aldık.
Başlangıç için en sağlıklı yol: önce Hosted Connection ile küçük bir bant genişliğinde başlayın, BGP oturumunu kararlı hale getirin, monitoring’i kurun, sonra kapasiteyi artırın. Production’a geçmeden önce mutlaka fallback olarak bir Site-to-Site VPN bulundurun; Direct Connect hazır olmadan önce o VPN sayısinde uyku uyuyabilirsiniz.
Terraform ile yönetimi ihmal etmeyin. Manuel yapılandırılan Direct Connect ortamları zamanla karmaşık hale geliyor ve bir sorun anında neyin ne olduğunu hatırlamak güçleşiyor. Her değişikliği koda yansıtmak, dokümantasyon yerine geçiyor ve ekip içi bilgi paylaşımını da kolaylaştırıyor.
