Proxmox kurulumunuzu tamamladınız, VM’ler çalışıyor, her şey yolunda görünüyor. Ama ağ tarafında hala klasik Linux bridge ile Linux VLAN ile idare etmeye çalışıyorsunuz. Onlarca VLAN, onlarca tenant, her birinin izole edilmesi gereken ağı… Bir noktada elle yönetmek imkansız hale geliyor. İşte tam bu noktada Proxmox’un SDN (Software Defined Networking) özelliği devreye giriyor.
SDN Nedir ve Proxmox’ta Ne İşe Yarar?
SDN, ağ altyapısını donanımdan soyutlayarak yazılım katmanında yönetmenizi sağlar. Proxmox bağlamında düşündüğünüzde bu şu anlama gelir: VLAN’larınızı, subnet’lerinizi, yönlendirme kurallarınızı merkezi bir arayüzden yönetirsiniz. Her node’a gidip ayrı ayrı /etc/network/interfaces düzenlemenize gerek kalmaz.
Proxmox SDN, 7.0 sürümünden itibaren stabil olarak kullanılabilir durumda. Önceki sürümlerde de mevcuttu ama “tech preview” etiketiyle geliyordu. Şu an birçok production ortamında kullanılıyor.
Proxmox SDN’nin temel bileşenleri şunlardır:
- Zone: Ağ sınırlarını tanımlar. Simple, VLAN, QinQ, VXLAN, EVPN gibi tipleri vardır.
- VNet: Zone içinde oluşturulan sanal ağlardır. VM’ler bu VNet’lere bağlanır.
- Subnet: VNet içindeki IP adres aralıklarını ve DHCP/DNS ayarlarını tanımlar.
Kurulum Öncesi Gereksinimler
Proxmox SDN, bazı ek paketlere ihtiyaç duyar. Özellikle EVPN gibi gelişmiş zone tiplerini kullanacaksanız FRRouting gereklidir.
apt update
apt install libpve-network-perl ifupdown2 -y
EVPN kullanacaksanız FRRouting da kurulmalı:
apt install frr frr-pythontools -y
Kurulumdan sonra FRR servisini etkinleştirin:
systemctl enable frr
systemctl start frr
Proxmox cluster ortamında SDN kullanıyorsanız, tüm node’larda bu paketlerin kurulu olması gerekir. Tek node için de SDN gayet iyi çalışır, cluster olması şart değil.
Web Arayüzünden SDN’yi Aktifleştirmek
Paket kurulumundan sonra Proxmox web arayüzünü yenileyin. Sol menüde Datacenter altında SDN sekmesini göreceksiniz. Eğer görmüyorsanız pveproxy servisini yeniden başlatın:
systemctl restart pveproxy
SDN konfigürasyonu /etc/pve/sdn/ dizininde tutulur ve cluster genelinde senkronize edilir. Bu dizini doğrudan inceleyebilirsiniz:
ls /etc/pve/sdn/
# zones.cfg vnets.cfg subnets.cfg controllers.cfg
Zone Oluşturma: Simple Zone ile Başlayalım
En basit senaryo ile başlayalım. Birkaç VM’iniz var ve bunları izole bir ağda çalıştırmak istiyorsunuz. Simple Zone tam da bu iş için.
Web arayüzünden: Datacenter > SDN > Zones > Add > Simple
Komut satırından oluşturmak isterseniz:
pvesh create /cluster/sdn/zones
--zone homelab-simple
--type simple
--nodes pve1,pve2
zone: Zone’un adı, benzersiz olmalı type: Zone tipi (simple, vlan, qinq, vxlan, evpn) nodes: Bu zone’un hangi node’larda aktif olacağı
Şimdi bu zone içinde bir VNet oluşturalım:
pvesh create /cluster/sdn/vnets
--vnet vnet-dmz
--zone homelab-simple
--alias "DMZ Network"
VNet oluşturduktan sonra subnet ekleyelim:
pvesh create /cluster/sdn/vnets/vnet-dmz/subnets
--subnet 192.168.100.0/24
--type subnet
--gateway 192.168.100.1
--dhcp-range start-address=192.168.100.100,end-address=192.168.100.200
--dnszoneprefix dmz
Son olarak konfigürasyonu uygulayın:
pvesh set /cluster/sdn --apply 1
Bu komut tüm node’larda ağ yapılandırmasını günceller. Her node’da ayrı ayrı çalıştırmanıza gerek yok.
VLAN Zone ile Mevcut Altyapıyla Entegrasyon
Pek çok ortamda fiziksel switch’ler zaten VLAN bazlı konfigüre edilmiş durumda. Bu durumda VLAN Zone kullanmak daha mantıklı.
Diyelim ki şirket ağınızda VLAN 10 Development, VLAN 20 Production, VLAN 30 Management olarak ayrılmış durumda. Proxmox node’unuz bond0 üzerinden trunk bağlantısıyla switch’e bağlı.
pvesh create /cluster/sdn/zones
--zone corp-vlans
--type vlan
--bridge bond0
--nodes pve1,pve2,pve3
Şimdi her VLAN için bir VNet oluşturalım:
# Development VLAN
pvesh create /cluster/sdn/vnets
--vnet vnet-dev
--zone corp-vlans
--tag 10
--alias "Development Network"
# Production VLAN
pvesh create /cluster/sdn/vnets
--vnet vnet-prod
--zone corp-vlans
--tag 20
--alias "Production Network"
# Management VLAN
pvesh create /cluster/sdn/vnets
--vnet vnet-mgmt
--zone corp-vlans
--tag 30
--alias "Management Network"
Konfigürasyonu uygulayın:
pvesh set /cluster/sdn --apply 1
Artık bir VM oluştururken ağ arayüzü olarak vnet-dev, vnet-prod veya vnet-mgmt seçebilirsiniz. Arka planda Proxmox otomatik olarak VLAN tag’ini ayarlar.
VXLAN Zone ile Multi-Node Senaryosu
Birden fazla fiziksel sunucunuz varsa ve bu sunuculardaki VM’lerin aynı Layer 2 ağında görünmesini istiyorsanız VXLAN tam da bunun için.
Diyelim üç node’unuz var ve her birinde çalışan VM’lerin aynı broadcast domain’inde olmasını istiyorsunuz. Layer 2 overlay ağı kurmak için:
pvesh create /cluster/sdn/zones
--zone vxlan-overlay
--type vxlan
--peers 10.10.0.1,10.10.0.2,10.10.0.3
--nodes pve1,pve2,pve3
peers: VXLAN tünelinin oluşturulacağı node IP adresleri. Genellikle node’ların management veya storage ağı IP’leri kullanılır.
pvesh create /cluster/sdn/vnets
--vnet vnet-vxlan-prod
--zone vxlan-overlay
--tag 100
--alias "VXLAN Production"
VXLAN zone’unda dikkat edilmesi gereken nokta: node’lar arasında UDP 4789 portuna izin verilmesi gerekir.
# Firewall kuralları (her node'da)
iptables -A INPUT -p udp --dport 4789 -j ACCEPT
iptables -A OUTPUT -p udp --dport 4789 -j ACCEPT
EVPN Zone ile Enterprise Seviyesi Yapılandırma
EVPN (Ethernet VPN), BGP protokolünü kullanarak VXLAN overlay ağlarını çok daha sofistike bir şekilde yönetir. Büyük veri merkezi ortamları için ideal.
Önce FRRouting controller’ı oluşturuyoruz:
pvesh create /cluster/sdn/controllers
--controller frr-bgp
--type evpn
--asn 65000
--peers 10.10.0.1,10.10.0.2,10.10.0.3
asn: BGP Autonomous System Number. Private AS için 64512-65534 aralığı kullanılabilir. peers: BGP peer olarak iletişim kuracak node IP’leri.
EVPN zone oluşturun:
pvesh create /cluster/sdn/zones
--zone evpn-zone
--type evpn
--controller frr-bgp
--vrf-vxlan 4000
--nodes pve1,pve2,pve3
vrf-vxlan: VRF (Virtual Routing and Forwarding) için kullanılacak VXLAN VNI numarası.
VNet ve subnet ekleyin:
pvesh create /cluster/sdn/vnets
--vnet vnet-evpn-tenant1
--zone evpn-zone
--tag 1000
--alias "Tenant 1 Network"
pvesh create /cluster/sdn/vnets/vnet-evpn-tenant1/subnets
--subnet 10.100.1.0/24
--type subnet
--gateway 10.100.1.1
--dhcp-range start-address=10.100.1.10,end-address=10.100.1.250
Gerçek Dünya Senaryosu: Hosting Ortamı
Birkaç müşterisi olan küçük bir hosting şirketi yönettiğinizi düşünün. Her müşterinin tamamen izole ağda çalışması gerekiyor. Üç Proxmox node’u, iki fiziksel switch.
Bu senaryo için önerilen mimari:
Zone yapısı:
zone-mgmt: Management için Simple Zone, sadece Proxmox yönetim trafiğizone-customer: Her müşteri için ayrı VLAN’lar barındıran VLAN Zonezone-storage: Storage trafiği için ayrı zone
# Management zone
pvesh create /cluster/sdn/zones
--zone zone-mgmt
--type simple
--nodes pve1,pve2,pve3
# Customer VLAN zone
pvesh create /cluster/sdn/zones
--zone zone-customer
--type vlan
--bridge vmbr0
--nodes pve1,pve2,pve3
# Müşteri A için VLAN 100
pvesh create /cluster/sdn/vnets
--vnet vnet-customer-a
--zone zone-customer
--tag 100
--alias "Customer A Network"
pvesh create /cluster/sdn/vnets/vnet-customer-a/subnets
--subnet 172.16.100.0/24
--type subnet
--gateway 172.16.100.1
--dhcp-range start-address=172.16.100.10,end-address=172.16.100.100
# Müşteri B için VLAN 200
pvesh create /cluster/sdn/vnets
--vnet vnet-customer-b
--zone zone-customer
--tag 200
--alias "Customer B Network"
pvesh create /cluster/sdn/vnets/vnet-customer-b/subnets
--subnet 172.16.200.0/24
--type subnet
--gateway 172.16.200.1
--dhcp-range start-address=172.16.200.10,end-address=172.16.200.100
pvesh set /cluster/sdn --apply 1
Bu yapıyla müşteri A’nın VM’leri hiçbir zaman müşteri B’nin ağını göremez. Yeni müşteri eklemeniz gerektiğinde tek yapmanız gereken yeni bir VLAN tag’i ile VNet oluşturmak.
SDN Firewall Entegrasyonu
Proxmox SDN’nin en güçlü yanlarından biri, Proxmox Firewall ile entegrasyonudur. VNet seviyesinde firewall kuralları tanımlayabilirsiniz.
Web arayüzünden Datacenter > SDN > VNets > vnet-prod > Firewall bölümünden kural ekleyebilirsiniz.
Komut satırından:
# VNet üzerinde firewall aktifleştir
pvesh set /cluster/sdn/vnets/vnet-prod
--nf 1
# Gelen HTTP trafiğine izin ver
pvesh create /nodes/pve1/firewall/rules
--type in
--action ACCEPT
--proto tcp
--dport 80
--source 0.0.0.0/0
--comment "Allow HTTP"
Sorun Giderme
SDN ile çalışırken karşılaşabileceğiniz yaygın sorunlar ve çözümleri:
VNet’ler VM ağ listesinde görünmüyor:
# SDN konfigürasyonunu yeniden uygula
pvesh set /cluster/sdn --apply 1
# Network interfaces durumunu kontrol et
ip link show | grep vnet
# Proxmox ağ servisini yeniden başlat
systemctl restart networking
VXLAN/EVPN bağlantı sorunları:
# VXLAN interface'lerini kontrol et
bridge fdb show | grep vxlan
# FRR durumunu kontrol et (EVPN için)
systemctl status frr
vtysh -c "show bgp summary"
vtysh -c "show evpn vni"
DHCP çalışmıyor:
SDN DHCP özelliği için dnsmasq kullanılır. Servis durumunu kontrol edin:
systemctl status dnsmasq
# Log'ları inceleyin
journalctl -u dnsmasq -n 50
# Subnet DHCP konfigürasyonunu doğrula
cat /etc/pve/sdn/vnets.cfg
Konfigürasyon tutarsızlıklarını gidermek:
# SDN konfigürasyonunu doğrula
pvesh get /cluster/sdn
# Tüm node'larda senkronizasyonu zorla
for node in pve1 pve2 pve3; do
ssh root@$node "pvesh set /cluster/sdn --apply 1"
done
SDN Konfigürasyonunu Yedekleme ve Taşıma
SDN konfigürasyonu /etc/pve/sdn/ altında düz metin olarak tutulur. Bu dosyaları backup almanız yeterli:
# Yedekleme
tar czf proxmox-sdn-backup-$(date +%Y%m%d).tar.gz /etc/pve/sdn/
# Konfigürasyon dosyalarını incele
cat /etc/pve/sdn/zones.cfg
cat /etc/pve/sdn/vnets.cfg
cat /etc/pve/sdn/subnets.cfg
Bir zone’u elle düzenlemek gerekirse bu dosyaları doğrudan düzenleyebilirsiniz. Değişiklik sonrası:
# Konfigürasyonu yükle ve uygula
pvesh set /cluster/sdn --apply 1
Performance Tuning
SDN performansını etkileyen bazı kernel parametreleri:
# /etc/sysctl.d/99-sdn-tuning.conf dosyasına ekleyin
# VXLAN için UDP buffer boyutlarını artır
net.core.rmem_max = 26214400
net.core.wmem_max = 26214400
# Bridge forward tablosunu optimize et
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-ip6tables = 0
# Uygulamak için
sysctl --system
VXLAN kullandığınızda MTU değerlerine dikkat edin. VXLAN başlıkları 50 byte ek yük getirir. Fiziksel ağınızın MTU’su 1500 ise VXLAN interface’leriniz 1450 olmalı:
# VXLAN interface MTU ayarı
ip link set vxlan100 mtu 1450
Bu ayarı kalıcı yapmak için ilgili network interface konfigürasyonuna ekleyin veya bir systemd-networkd kuralı oluşturun.
Sonuç
Proxmox SDN, özellikle çok kiracılı ortamlarda veya karmaşık ağ topolojilerinde yönetim yükünü ciddi oranda azaltıyor. Her node’a SSH açıp bridge konfigürasyonu yapmakla geçen zamanı, SDN’yi bir kez doğru konfigüre ettikten sonra neredeyse sıfıra indirebilirsiniz.
Başlangıç için Simple Zone ile başlayıp altyapınız büyüdükçe VLAN, VXLAN veya EVPN’e geçişi değerlendirebilirsiniz. EVPN’in öğrenme eğrisi yüksek ama büyük ortamlarda sağladığı esneklik tartışmasız.
En çok dikkat edilmesi gereken nokta: SDN konfigürasyonunu uyguladıktan sonra mutlaka test edin. VM’lerden ping atın, DHCP lease’lerin alındığını doğrulayın, VLAN izolasyonunu test edin. Production’a almadan önce bir test ortamında deneyip alışmak, ileride yaşanabilecek baş ağrılarının önüne geçer.