Cisco LLDP (Link Layer Discovery Protocol)

LLDP (Link Layer Discovery Protocol – Bağlantı Katmanı Keşif Protokolü) : IEEE tarafından geliştirilen, bağlı cihazların birbirleri hakkında bilgi edinmesini sağlayan protokoldür.  Cihazların hangi porttan (interface) bağlı olduğunu, cihazın türünü (swtich, router vs), cihazların işletim sistemi gibi birçok konuda bilgi sağlar.

Bir önceki konumuzda Cisco CDP konusunu işlemiştik. Bu konumuzda da aynı işlemleri yapacağız. Tek fark, kullanacağımız komutlarda cdp yerine lldp parametresini kullanacağız. Bir önceki konuda yer alan örnek topoloji üzerinden konuyu inceleyeceğiz.

lldp nedir

R1

interface Ethernet0/0
ip address 192.168.1.1 255.255.255.252
!
interface Ethernet0/1
ip address 192.168.2.1 255.255.255.0

R2

interface Ethernet0/0
ip address 192.168.3.1 255.255.255.252

SW

interface Vlan1
ip address 192.168.2.10 255.255.255.0

Routerlara interface IP ve Switche de yönetim IP’si verdim.  Topolojimizde kullandığımız cihazlar Cisco olduğu için CDP çalışacak ve keşiflerini yapacaktır. Bu yüzden LLDP’yi etkinleştirmek gerekecektir. İki protokol aktif olarak kullanılabilir. Eğer sadece LLDP kullanılmak isteniyorsa, CDP kapatılabilir.

CDP kapatma (isteğe bağlı)

R1(config)#no cdp run
LLDP aktifleştirme
configure terminal
(config)#lldp run

Tüm cihazlarda LLDP’yi aktif ettikten sonra komutlarımıza bakalım.

show lldp neighbors

show lldp neighbors

Komşular hakkında kısa bir bilgi almak için bu komut kullanılır. Çıktıya baktığımızda, komşumuzun Device ID’sinin (hostname), hangi portumuzun bağlı olduğunu, kaç saniyedir ayakta olduğunu, türünü ve komşumuzun hangi portunun bize bağlı olduğunu görebiliriz.

Komşuluklar hakkında daha detaylı bilgi almak için ise komuta detail parametresini eklememiz gerekecek.

show lldp neighbors detail

show lldp neighbors detail

Artık komşular hakkında daha fazla detaya sahibiz. SW’nin tek komşusu R1 olduğu için R1 hakkında detayları görebiliyoruz. Çıktıya baktığımızda, R1’in et0/1 portuna bağlı olduğumuzu, port IP’sinin ne 192.168.2.1 olduğunu ve işletim sistemi gibi bilgileri görebiliyoruz.

Port (interface) bazında komşuları görmek

Örneğimizde fazla cihaz olmadığı için çıktıyı okuduğumuzda zorlanmadık. Çok fazla bağlantının olduğu durumlarda port bazında komşu bilgilerine bakmak çıktıyı daha okunabilir hale getirecektir. Port bazında komşulukları görmek için show lldp neighbors komutundan sonra interface adını belirtmemiz yeterli olacaktır. Örnek olarak SW’in ethernet 0/0 portuna bakalım.

show lldp neighbors ethernet 0/0

show lldp neighbors interface

Bu bilgi bana yeterli gelmedi, ben biraz daha fazla bilgi edinmek istiyorum derseniz eğer; port belirtildikten sonra detail parametresini kullanmak gerekecek.

show lldp neighbors ethernet 0/0 detail

show lldp neighbors interface detail

LLDP ile komşulukları nasıl görüntüleyebileceğimizi kısaca gördük. Bir de LLDP protokolümüzün hangi değerlerde çalıştığını görelim:

show lldp

show lldp

Bu komutla çalışan LLDP protokolünün temel yapılandırmasını görmüş olduk. Çıktıya baktığımızda her 30 saniyede bir LLDP paketlerinin gönderildiğini, komşulukların 120 boyunca komşuluk tablosunda tutulduğunu öğrenmiş olduk. Bu değerler istek doğrultusunda değiştirilebilir; bu süreleri uzatabilir ya da kısaltabilirsiniz.

Bu işlemi yapmak için config modda olmamız gerekecek.

holdtime ayarlamak için lldp holdtime komutu kullanılabilir. Holdtime için 0-65535 arasında değer girilebilir ve bu değer saniye cinsindendir.

SW(config)#lldp holdtime ?
<0-65535> Length of time (in sec) that receiver must keep this packet

LLDP mesajlarının süresinin ayarlamak için ise lldp timer komutu kullanılır. 5-65534 arasında değer girilebilir ve bu değer saniye cinsindendir.

SW(config)#lldp timer ?
<5-65534> Rate at which LLDP packets are sent (in sec)

LLDP kullanımını kapatmak

Yazının başında LLDP’yi aktif etmiştik. LLDP’yi komple kapatabilir ya da interface bazında kapatabiliriz.

LLDP’yi iki şekilde pasif edebiliriz:

Birincisi, tüm LLDP paketlerini kesmek için global config modda no lldp run k0mutu ile yapılabilir. Bu durumda hiçbir şekilde LLDP mesajları atılmayacak ve komşuluk bilgileri edinilmeyecektir.  Bu komuttan sonra tüm komşuluk tablosu silinecek ve yeni komşuluklar yapılamayacaktır.

SW(config)#no lldp run

İkincisi, interface bazında LLDP pasif edilebilir. Bu durumda tüm LLDP bilgi alışverişi değil de, sadece ilgili porttaki LLDP mesajları kesilmiş olur. Bunu yapmak için ilgili portun konfigürasyonuna girip no lldp recieve  ve no lldp transmit komutunu kullanmak yeterli olacaktır.

Örnek olarak SW ile R1 arasındaki LLDP kapatma işlemi şu şekilde olacaktır:

SW(config)#interface ethernet 0/0
SW(config-if)#no lldp recieve
SW(config-if)#no lldp transmit

NOT: recieve ve transmit parametrelerinin aynı anda kullanılması veri alışverişini tamamen kesecektir. Eğer sadece no lldp recieve komutu kullanılsaydı, LLDP mesajları alınmayacak ama LLDP mesajları hala gönderilmeye devam edilecekti. SW üzerinden açıklamak gerekirse; SW cihazı R1’i komşu olarak göremeyecek ama R1 cihazı SW’yi komşu olarak görmeye devam edecekti. Eğer sadece no lldp transmit komutu kullanılsaydı bu seferde tam tersi bir durum olacak ve SW cihazı R1’i komşu olarak görebilecekken, R1 cihazı SW’yi komşu olarak göremeyecekti.

Bu komuttan sonra LLDP mesajları atılmayacaktır ancak komşuluk tablosunda holdtime süresi bitene kadar komşuluklar görünecektir.

Cisco cihazlarda temel LLDP kullanımı bu şekildedir.

Cisco CDP (Cisco Discovery Protocol)

CDP (Cisco Discovery Protocol) : Cisco tarafından geliştirilen ve Cisco cihazlarda default olarak bulunan, bağlı cihazların birbirleri hakkında bilgi edinmesini sağlayan protokoldür. Cihazların hangi porttan (interface) bağlı olduğunu, cihazın türünü (swtich, router vs), cihazların işletim sistemi gibi birçok konuda bilgi sağlar.

Küçük bir örnek üzerinden protokole göz atalım.

Ben şu şekilde bir yapılandırma yaptım:

cisco cdp nedir

R1

interface Ethernet0/0
ip address 192.168.1.1 255.255.255.252
!
interface Ethernet0/1
ip address 192.168.2.1 255.255.255.0

R2

interface Ethernet0/0
ip address 192.168.3.1 255.255.255.252

SW

interface Vlan1
ip address 192.168.2.10 255.255.255.0

Routerlara interface IP ve Switche de yönetim IP’si verdim. CDP ile ilgili hiçbir şey yapmadım. Ama CDP Cisco’da varsayılan olarak açık olduğu için protokol çalışacak ve keşiflerini yapacaktır. Biraz show komutları ile CDP neler bulmuş ona bakalım.

show cdp neighbors

show cdp neighbors

Bu komut adından da anlaşılacağı üzere komşuları gösterir. Çıktıya baktığımızda, komşumuzun Device ID’sinin (hostname), hangi portumuzun bağlı olduğunu, kaç saniyedir ayakta olduğunu, türünü, işletim sistemini ve komşumuzun hangi portunun bize bağlı olduğunu görebiliriz.

Örnekte R1’in iki komşusu olduğunu ve bunlar hakkında bilgileri edinmiş olduk. Peki ya daha fazla bilgiye ihtiyacım varsa ne olacak? Bu durumda komuta yeni bir parametre daha eklemem gerekecek. Komşular hakkında daha fazla detay almak için detail parametresi ile kullanmam gerekecek. 

show cdp neighbors detail

show cdp neighbors detail
show cdp neighbors detail

Evet, artık komşularım hakkında daha fazla detaya sahibim. Artık komşularımın hangi IP adresini kullandığını ve işletimin sisteminin detaylarına kadar görebiliyorum. Çıktıya baktığımızda komşu Switchin yönetim IP’sinin 192.168.2.10 olduğunu, Ethernet0/1 portundan bağlı olduğumu, switchin ise bize Ethernet0/0 portundan bağlı olduğunu ve hatta bu bağlantının half duplex olduğuna kadar görebiliyorum. Çok güzel değil mi?

Port (interface) bazında komşuları görmek

Şimdiye kadar tüm portlardaki komşulukları gördük. Örnekte iki tane bağlantı olduğu için çıktıyı okumak zor değildi. Eğer çok fazla bağlantının olduğu bir cihazda bu komutları çalıştırmış olsaydık işimiz biraz daha zor olurdu. Bundan dolayı işi biraz daha kolaylaştırmak için port bazında çıktıya bakmak daha iyi olacaktır. Port bazında komşulukları görmek için show cdp neighbors komutundan sonra interface adını belirtmemiz yeterli olacaktır. Örnek olarak R1’in ethernet 0/0 portuna bakalım.

show cdp neighbors ethernet 0/0

show cdp neighbors interface

Bu bilgi bana yeterli gelmedi, ben biraz daha fazla bilgi edinmek istiyorum derseniz eğer; port belirtildikten sonra detail parametresini kullanmak gerekecek. 

show cdp neighbors ethernet 0/0 detail

show cdp neighbors interface detail

CDP ile komşulukları nasıl görüntüleyebileceğimizi kısaca gördük. Bir de CDP protokolümüzün hangi değerlerde çalıştığını görelim:

show cdp

show cdp

Bu komutla çalışan CDP protokolünün temel yapılandırmasını görmüş olduk. Çıktıya baktığımızda her 60 saniyede bir CDP paketlerinin gönderildiğini, komşulukların 180 boyunca komşuluk tablosunda tutulduğunu öğrenmiş olduk. Bu değerler istek doğrultusunda değiştirilebilir; bu süreleri uzatabilir ya da kısaltabilirsiniz.

Bu işlemi yapmak için config modda olmamız gerekecek. 

holdtime ayarlamak için cdp holdtime komutu kullanılabilir. Holdtime için 10-255 arasında değer girilebilir ve bu değer saniye cinsindendir.

R1(config)#cdp holdtime ?
<10-255> Length of time (in sec) that receiver must keep this packet

CDP mesajlarının süresinin ayarlamak için ise cdp timer komutu kullanılır. 5-254 arasında değer girilebilir ve bu değer saniye cinsindendir.

R1(config)#cdp timer ? 
<5-254> Rate at which CDP packets are sent (in sec)

CDP kullanımını kapatmak

CDP’nin nimetlerinden faydalandık ama her zaman cihazların bilgilerini paylaşmak istemeyebiliriz. Örneğin R2’nin dış networkte olduğunu farz edelim. Dış networkte bulunan bir cihazın benim cihazımla ilgili bilgiler almamasını isteyebilirim. Bu durumda CDP’yi pasif edebilir ve bilgi akışını kesebilirim.

CDP’yi iki şekilde pasif/aktif edebiliriz:

Birincisi, tüm CDP paketlerini kesmek için global config modda no cdp run komutu ile yapılabilir. Bu durumda hiçbir şekilde CDP mesajları atılmayacak ve komşuluk bilgileri edinilmeyecektir.  Bu komuttan sonra tüm komşuluk tablosu silinecek ve yeni komşuluklar yapılamayacaktır.

R1(config)#no cdp run

İkincisi, interface bazında CDP pasif edilebilir. Bu durumda tüm CDP bilgi alışverişi değil de, sadece ilgili porttaki CDP mesajları kesilmiş olur. Bunu yapmak için ilgili portun konfigürasyonuna girip no cdp enable komutunu kullanmak yeterli olacaktır.

Örnek olarak R1 ile R2 arasındaki CDP kapatma işlemi şu şekilde olacaktır:

R1(config)#interface ethernet 0/0
R1(config-if)#no cdp enable

Bu komuttan sonra CDP mesajları atılmayacaktır ancak komşuluk tablosunda holdtime süresi bitene kadar komşuluklar görünecektir.

CDP kullanımını açmak

CDP kullanımını açmak için global config modda cdp run komutunu çalıştırmak yeterli olacaktır.

R1(config)#cdp run

Port bazında CDP etkinleştirmek için ise, ilgili portun konfigürasyonuna girip cdp enable komutunu çalıştırmak yeterli olacaktır.

R1(config)#interface ethernet 0/0
R1(config-if)#cdp enable

CDP‘nin temel kullanımı bu şekildeydi. Umarım faydalı olmuştur. 

Cisco Port-Security Yapılandırması

Portlara belirlenen sayı kadar  host ve istenilirse belirlenen cihazın bağlanmasını sağlayan güvenlik önlemidir. Güvenlik MAC adresi ile sağlanmaktadır. MAC adresi el ile girilebileceği gibi, switch tarafından dinamik olarak öğrenilip kaydedilmesi de sağlanabilir ki genelde de dinamik olan yöntem seçilir. Çünkü büyük ağlarda tek tek MAC adresi girmek uzun zaman alacağı ve kontrolünün zor olacağı için pek tercih edilmez.

Küçük bir örnek ile başlayalım.

Örnekte, aynı subnet ve networkte olan bilgisayarlar bulunmaktadır. Switchte herhangi bir yapılandırma olmadığı için 11 ve 12 nolu IP adresine sahip bilgisayarlar birbirlerine paket gönderip alabilirler.  (11’den 12’ye ping attım ve sonuç aşağıdaki gibi)

Yapılandırmamıza başlayım. 11 nolu IP adresine sahip olan bilgisayar fastEthernet 0/1 nolu portuna bağlı. Config moda girerek yapılandırmaya başlayalım.

Switch(config)#interface fastEthernet 0/1
Switch(config-if)#switchport mode access  (portu Access yaptık)
Switch(config-if)#switchport port-security (port-security aktifleştirdik)

Switch(config-if)#switchport port-security ? ile kullanabileceğimiz komutlara bakalım.

Temel olarak 4 tane komut bulunuyor.

aging

aging komutu ile MAC adresinin ne kadar süre ile tutulacağı gibi ayarlamalar yapılabiliyor. Komut ayarların aging time diye bir komut bulunuyor ve bu komut ile öğrenilen MAC adresinin kaç dakika switch hafızasında tutulacağı belirtiliyor. 1 ila 1440 arasında değer girilebiliyor.

switchport port-security mac-address

Bu bölümde MAC adresinin statik veya dinamik şekilde ayarlanması sağlanabiliyor.

switchport port-security maximum

Bu alanda en fazla kaç tane MAC adresinin girilebileceği ayarlanabiliyor. 1 ila 132 adet arasında MAC adresi girilebilir. Default olarak 1’dir.

switchport port-security violation (ihlal)

Bu alanda (violation) ihlal olduğunda ne gibi aksiyon alınması gerektiği ayarlanıyor. Default olarak shutdown işlemi yapılır.

Protect modunda ihlal olduğu zaman syslog mesajı gönderilmez. Öğrenilen MAC adresli cihaz porta tekrar takıldığında paket iletimi başlar.

Restrict modunda ihlal olduğu zaman syslog mesajı üretilir. Öğrenilen MAC adresli cihaz porta tekrar takıldığında paket iletimi başlar.

Shutdown : ihlal gerçekleştiğinde port kapatılır. İhlal ortadan kalksa dahi, ağ yönetici tarafından port açılmadığı sürece paket gönderim ve alımı yapılmaz.

Biz örnekte MAC adresinin dinamik olarak öğrenildiği, en fazla 1 adresin olduğu ve ihlal gerçekleştiğinde portun kapatılması şeklinde yapılandırma yapacağız ve sonucu göreceğiz.

Switch(config-if)#switchport port-security mac-address sticky
Switch(config-if)#switchport port-security maximum 1
Switch(config-if)#switchport port-security violation shutdown

Yapılandırma tamam. Şimdi fa0/1 portuna 13 nolu IP adresine sahip bilgisayarı bağlayacağım ve 12 nolu bilgisayara ping atmayı deneyeceğim.

Görüldüğü gibi ping atılamamakta ve packet tracera baktığımda da 13 nolu IP adresinin olduğu portun kapalı olduğu görülmekte.

Porta öğrenilen MAC adresinin olduğu bilgisayarı taksam da port açılmayacaktır. Ağ yöneticisi tarafından ilgili portun açılması gerekmektedir.  Portu açmak için ise önce shutdown komutuyla kapatıp sonra no shutdown komuyla açmak gerekmektedir. Direkt no shutdown komutuyla portu açsanız bile port açılmayacaktır.

Konu uzamasın diye Protect ve restrict modlarıyla ilgili örnek yapmayacağım. Bu modlarda öğrenilen MAC adresli cihaz dışında başka bir cihaz takıldığında port tamamen kapatılmaz, sadece paketler drop edilir.

Not : Çok özel bir durum olmadığı sürece port kapatma seçeneği tercih edilmez.

Port-security show komutları

show port-security

Komut çıktısına baktığımızda hangi portta port-securitynin aktif olduğunu, kaç tane MAC adresinin öğrenildiğini, kaç tane ihlalin (vilation) olduğunu ve ihlal aksiyonunun ne olduğunu görebiliyoruz.

show port-security address

Bu komutla öğrenilen MAC adresini, hangi portta olduğun ve VLAN bilgilerini görebiliyoruz.

show port-security interface

Bu komut ile interface bazında port-security detaylarını görebiliyoruz. Örnek yapılandırma yaptığımız porta bakmak gerekirse;

Switch#show port-security interface fastEthernet 0/1

Cisco VTP (Vlan Trunk Protocol) Konfigürasyonu

VTP (VLAN Trunking Protocol) Cisco tarafından geliştirilen ve Cisco’ya özel bir protokoldür. Bu protokol sayesinde, bir switchte oluşturulan VLAN’lar diğer switchler ile  paylaşılır. Özellikle çok fazla switch ve VLAN’ın olduğu durumlarda zamandan tasarruf sağlar.

VTP’de Server, Transparent ve Client mod olmak üzere üç tane mod bulunmaktadır ve tüm switchler varsayılan olarak Server moddadır.

Paylaşılan veriler sadece VLAN ID ve VLAN ismidir. Portların access ve trunk gibi durumları paylaşılmaz.

VTP modları:

> Server mod : istenildiği gibi VLAN oluşturma ve silme işlemleri yapılabilir. Transparent mod ve client moddaki switchlerden etkilenmez. Client moddaki switche veri gönderir.

> Transparent mod : Diğer moddaki switchler ile VLAN bilgilerini alma-gönderme gibi işlemi yoktur, yani bağımsızdır. VLAN oluşturma ve silme işlemleri yapılabilir.

> Client mod : Sadece Server modda bulunan switchten gelen veriler bulunur. Herhangi bir şekilde VLAN silme ya da ekleme yapılamaz.

Küçük bir örnekle yapılandırmayı yapalım.

Yapılandırmaya geçmeden önce switch’lerin aralarındaki bağlantıyı TRUNK yapmayı unutmayalım.

Gelelim VTP yapılandırmasına: Yapacağımız işlem çok basit; vtp mode ayarını belirleyip domain adı ve parola belirliyoruz. (Yapılan domain adı ve parola tüm switchlerde aynı olmalı)

1#

Server mod switch için yapılandırmayı yapalım:

SERVER-sw(config)#vtp mode server
Device mode already VTP Server for VLANS.
SERVER-sw(config)#vtp domain salihaltuntas.com
SERVER-sw(config)#vtp password 12345

VTP mod server olarak seçmek istediğimizde gördüğünüz gibi VTP modunun zaten SERVER modda olduğuna dair uyarı geldi. Yazının başında da belirtmiştim; tüm switchler varsayılan olarak server moddadır.

2#

Transparent mod switch için yapılandırmayı yapalım:

TRANSPARENT-sw(config)#vtp mode transparent
Setting device to VTP Transparent mode for VLANS.
TRANSPARENT-sw(config)#vtp domain salihaltuntas.com
TRANSPARENT-sw(config)#vtp password 12345

3#

Client mod switch için yapılandırmayı yapalım:

CLIENT-sw(config)#vtp mode client
Setting device to VTP Client mode for VLANS.
CLIENT-sw(config)#vtp domain salihaltuntas.com
CLIENT-sw(config)#vtp password 12345

Yapılandırmamızı yaptık, gelelim testimize. Server modda olan switch’te VLAN10, 20 ve 30 oluşturacağım. Devamında Transparent mod ve Client modda olan switch’te neler olmuş ona bakalım.

SERVER-sw(config)#vlan 10
SERVER-sw(config-vlan)#name KAT-1
SERVER-sw(config-vlan)#vlan 20 
SERVER-sw(config-vlan)#name KAT-2
SERVER-sw(config-vlan)#vlan 30 
SERVER-sw(config-vlan)#name KAT-3

show vlan brief parametresi ile switch’lere bakalım:

Server switch’te oluşturulan VLAN’lar Client switch’te de oluşturulmuş.

Transparent switch’te ise hiçbir değişim olmayacaktır.

Transparent modda olan switch’te herhangi bir şey yokken, Client modda olan switchte serverdan gelen VLAN’lar eklendi.

4#

Transparent modda olan switch’te vlan oluşturalım ve diğer switch’lerde neler olmuş görelim.

TRANSPARENT-sw(config)#vlan 40
TRANSPARENT-sw(config-vlan)#name KAT-4

Görüldüğü üzere Transparent modda olan switch’te yapılan değişiklik diğer switch’lerde hiçbir etki etmedi.

5#

Son olarak Client modda olan switch’te VLAN ekleme ve çıkartma yapmaya çalışalım.

Görüldüğü gibi VLAN eklemeye veya çıkarmaya çalıştığımda Client modda olduğu için VLAN konfigürasyonunun yapılamayacağına dair uyarı geldi. Eğer client modda olan bir swtich’te VLAN eklemek ya da çıkarılmak isteniyorsa, switch’in modu transparent yapılmalı.

6#

VTP için kullanabileceğimiz show parametrelerine göz atalım.

show vtp status komutu ile switchlerdeki VTP durumuna bakılabilir.

6.1#

show vtp password komutu ile VTP yapılandırmasında kullanılan parolaya bakılabilir.

6.2#

show vtp interface komutu ile VTP mesajlarının alınıp/gönderileceği interface’ler görüntülenebilir.

Güvenlik açısından sadece switch’ler arasındaki bağlantıda VTP aktif tutulmalıdır. Olası VTP ataklarında büyük sorunlar ile karşılaşılabilir. Bunu engellemek için switch bağları harici interface’lerde VTP kapatılmalıdır. VTP kapatılacak interface için ise, ilgili interface’ye girip no vtp komutunu çalıştırmak yeterli olacaktır.

Yazıyı beğendiyseniz sosyal medya hesaplarınızda paylaşarak ve aşağıda bulunan oylama kısmında puan vererek destek olabilirsiniz.

Başka bir yazıda görüşmek dileğiyle…