Bir önceki bölümde VLAN'ları ve switch'ler arası trafiği taşıyan Trunk hatlarını yapılandırmıştık. Kurumsal ağlarda tek bir bağlantının kopmasıyla tüm ağın çökmesini önlemek için switch'leri birbirine yedekli yollarla (redundant paths) bağlarız. Ancak Layer 2 dünyasında, IP paketlerindeki gibi bir TTL (Time to Live) alanı yoktur. Yani bir Ethernet çerçevesi (frame) hedefi bulamazsa ağda sonsuza kadar dönebilir.
Bu durum, saniyeler içinde tüm ağı felç eden Yayın Fırtınalarına (Broadcast Storm) ve MAC adresi tablosunun altüst olmasına (MAC Table Instability) yol açar. Ağımızı bu felaketten koruyan mekanizma ise Spanning Tree Protocol (STP) protokolüdür. Bu yazıda STP'nin çalışma mantığına, Cisco'nun modern ağlarda tercih edilen Rapid PVST+ moduna ve kenar port güvenliği için hayati önem taşıyan PortFast/BPDU Guard ikilisine bakacağız.
Spanning Tree Nasıl Çalışır?
STP, ağdaki yedekli yolları tespit eder, aralarından bir "Kök Köprü" (Root Bridge) seçer ve döngü oluşturabilecek alternatif yolları mantıksal olarak kapatır (Blocking moduna alır). Asıl hat koptuğunda ise kapalı olan portu otomatik olarak açarak (Forwarding moduna alarak) iletişimin kesintisiz sürmesini sağlar.
Klasik STP'nin (802.1D) bir portu açması 30 ila 50 saniye sürebilir. Bu, modern kurumsal ağlar için kabul edilemez bir süredir. Bu yüzden Cisco cihazlarda varsayılan olarak gelen klasik modu daha hızlı yakınsayan (convergence) Rapid PVST+ (Per-VLAN Spanning Tree) moduna çekmeliyiz.
Rapid PVST+ Konfigürasyonu ve Root Bridge Seçimi
Ağınızdaki en güçlü, omurga (Core/Distribution) switch'in Root Bridge olması gerekir. Eğer bunu şansa bırakırsanız, ağdaki en eski veya en zayıf switch Root Bridge seçilebilir ve tüm ağ trafiği o zayıf cihaz üzerinden akmaya çalışır.
Adım 1: STP Modunu Değiştirme
Ağdaki tüm switch'lerde STP modunu Rapid-PVST olarak güncelliyoruz:
Merkez-SW1(config)# spanning-tree mode rapid-pvstAdım 2: Root Bridge Belirleme
Bir switch'in Root Bridge olabilmesi için Bridge Priority (Köprü Önceliği) değerinin en düşük olması gerekir. Varsayılan değer 32768'dir. Merkez switch'imizi VLAN 10 ve 20 için ana köprü, yedek switch'imizi ise ikincil köprü yapalım:
! Merkez Switch Üzerinde:
Merkez-SW1(config)# spanning-tree vlan 10,20 root primary
! Bu komut priority değerini otomatik olarak 24576'ya çeker.
! Alternatif olarak manuel değer de verebilirsiniz (4096'nın katları olmalıdır):
Merkez-SW1(config)# spanning-tree vlan 10,20 priority 4096Yedek omurga switch'iniz için ise şu komutu kullanabilirsiniz:
Yedek-SW2(config)# spanning-tree vlan 10,20 root secondaryPortFast: Son Kullanıcıyı Bekletmeme
Bir bilgisayar veya sunucu switch portuna takıldığında, STP döngü kontrolü yapmak için o portu sırasıyla Listening ve Learning aşamalarından geçirir. Bu süreçte cihaz IP alamaz ve ağa bağlanamaz.
Bilgisayarların ağda bir döngü yaratma ihtimali olmadığından, bu portların doğrudan Forwarding (İletim) moduna geçmesini isteriz. Buna PortFast (veya modern adıyla Edge Port) denir.
Merkez-SW1(config)# interface gigabitEthernet 1/0/1
Merkez-SW1(config-if)# switchport mode access
Merkez-SW1(config-if)# switchport access vlan 10
Merkez-SW1(config-if)# spanning-tree portfastBPDU Guard: Ağın Sınırlarını Korumak
PortFast harika bir konfor sağlar ancak büyük bir güvenlik riski barındırır. Eğer bir kullanıcı, PortFast tanımlı bir odadaki duvarda bulunan network prizine evinden getirdiği kontrolsüz bir switch'i takar ve o switch'in diğer portunu da yanındaki prize bağlarsa, ağınızda anında devasa bir Layer 2 loop oluşur ve tüm şirket ağı çöker.
Bunu önlemek için BPDU Guard kullanılır. Eğer PortFast tanımlı bir porttan bir STP paketi (BPDU - Bridge Protocol Data Unit) gelirse, switch "Buraya bir switch takıldı, bu bir siber tehdit veya kullanıcı hatasıdır" der ve portu anında kapatır (Err-disable moduna alır).
Cisco CLI
Merkez-SW1(config-if)# spanning-tree bpduguard enable
Merkez-SW1(config-if)# exitKurumsal İpucu (Global Etkinleştirme): PortFast ve BPDU Guard'ı tüm access portlarında tek tek açmak yerine global olarak tek bir komutla etkinleştirebilirsiniz. Bu komut, switch üzerindeki tüm access portlarında bu özellikleri otomatik olarak aktif eder, trunk portlara ise dokunmaz:
Merkez-SW1(config)# spanning-tree portfast edge default Merkez-SW1(config)# spanning-tree portfast edge bpduguard default
Err-Disable Durumundan Kurtarma
BPDU Guard tarafından kapatılan bir portu tekrar açmak için port arayüzüne girip shutdown ardından no shutdown yapmak gerekir. Ancak bunu otomatikleştirmek de mümkündür:
Merkez-SW1(config)# error-disable recovery cause bpduguard
Merkez-SW1(config)# error-disable recovery interval 300
! Port kapatıldıktan 300 saniye (5 dakika) sonra otomatik olarak tekrar açılmayı dener.Doğrulama Komutları
Ağınızın STP topolojisini ve hangi portun hangi rolde (Root, Alternate, Designated) olduğunu görmek için:
Merkez-SW1# show spanning-tree
! Sadece belirli bir VLAN için bakmak isterseniz:
Merkez-SW1# show spanning-tree vlan 10Hatalı bağlantı sebebiyle BPDU Guard tarafından kapatılan (err-disable) portları listelemek için:
Merkez-SW1# show interfaces status err-disabledSTP mimarisini optimize ederek ağımızı döngülerden arındırdık ve kenar portlarımızı güvenli hale getirdik. Ancak bazen iki switch arasındaki tek bir Trunk hattının bant genişliği (örneğin 1 Gbps) yetersiz kalabilir.
Serimizin bir sonraki bölümünde, birden fazla fiziksel hattı mantıksal olarak birleştirerek hem bant genişliğini katlamayı hem de link seviyesinde yedeklilik sağlamayı hedefleyen EtherChannel (LACP) Konfigürasyonunu ele alacağız.
