Hlavní navigace

LLDP a CDP aneb kde se v síti schovává tučňák

Petr Macek 1. 10. 2014

Ne každá síť je dobře zdokumentovaná a každý důležitý kabel či optický spoj popsán. U větších sítí pak může nastat situace, že nikdo neví, co je kam zapojené. Někde v síti je třeba linuxový server a k němu teď potřebujeme dotáhnout další VLAN. Jenže ke kterému přepínači je server připojený? Který port je uplink?

Asi nejznámější jsou protokoly CDP (Cisco Discovery Protocol) a LLDP (Link Layer Discovery Protocol). Jak název prvního napovídá, jedná se o proprietární protokol firmy Cisco. Dnes je ale podporován (alespoň částečně) i dalšími výrobci, např. Mikrotik nebo HP. Mikrotik používá i vlastní protokol MNDP (MikroTik Neighbor Discovery Protocol), kterým se ale zabývat nebudeme. LLDP je otevřený a je specifikován specifikován v IEEE 802.1AB. Proto je také podporován více výrobci, např. již zmiňovaným HP nebo Juniper. Samozřejmě existuje i softwarová implementace, kterou můžeme nainstalovat na Linux/Unix nebo i Windows.

Protože se v případě CDP a LLDP jedná o podobné protokoly, uvedu zde proto pouze jeden popis a zmíním rozdíly. Jedná se o protokoly druhé vrstvy a slouží ke zjišťování informací o přímo připojených zařízeních. Zařízení vysílá pomocí multicastu periodicky (typicky 30 nebo 60 vteřin) přes svá síťová rozhraní oznámení. Jedná se o jednosměrnou komunikaci, nedochází k žádnému potvrzování přijatého oznámení.

V oznámení může být poměrně dost informací, povinné jsou:

  • ID zařízení (MAC adresa)
  • ID portu, přes které bylo oznámení odeslané
  • TTL – doba platnosti

Dále se mohou posílat informace o názvu zařízení, verzi softwaru, IP, VLAN apod.

Každý záznam má časově omezenou platnost. Po přijetí nového oznámení se platnost prodlouží. Pokud oznámení přestane přicházet, tak je po vypršení času takové zařízení zapomenuto. Oznámení se může rozesílat nejen periodicky, ale i při nějaké změně na zařízení nebo jeho portu, a tím dříve se protistrana dozví o změně.

Okolní zařízení tato oznámení poslouchají a udržují si informace z nich získané. Protože zaznamenávají i informaci, přes který port které oznámení přišlo, můžeme zjistit, co je kam v nejbližším okolí zapojené a jaké má vlastnosti. Tyto informace o zjištěných sousedech zařízení nikam dále nešíří, pouze může vysílat informace samo o sobě stejným způsobem. Protokol se tedy o žádné sbírání a zpracovávání dat z celé sítě nestará, k tomu potřebujeme další software.

Slíbil jsem praktickou ukázku, takže si nainstalujeme nějaké nástroje na LLDP na Linux a FreeBSD a ukážeme si základní příkazy na Ciscu a HP prvcích. V Linuxu lze použít program lldpd. Nenechte se zmást názvem, démon podporuje i CDP. Instalace v Ubuntu je snadná:

pm@pm-desktop:~$ sudo apt-get install lldpd

Výchozí konfigurace postačuje, spustíme:

pm@pm-desktop:~$ sudo service lldpd start

A na aktivním prvku můžeme za chvíli vidět podobný výpis:

LLDP neighbor-information of port 112[Ethernet3/0/8]:
  Neighbor index   : 1
  Update time      : 255 days,15 hours,38 minutes,55 seconds
  Chassis type     : MAC address
  Chassis ID       : 5404-a648-cd36
  Port ID type     : MAC address
  Port ID          : 5404-a648-cd36
  Port description : eth0
  System name        : pm-desktop
  System description : Ubuntu 14.04 LTS Linux 3.13.0-34-generic #60-Ubuntu SMP Wed Aug 13 15:45:27 UTC 2014 x86_64
  System capabilities supported : Bridge,WlanAccessPoint,Router
  System capabilities enabled   :

  Management address type           : ipV4
  Management address                : 192.168.222.52
  Management address interface type : IfIndex
  Management address interface ID   : 2
  Management address OID            :

  Auto-negotiation supported : Yes
  Auto-negotiation enabled   : Yes
  OperMau                    : speed(100)/duplex(Full)

  Link aggregation supported : Yes
  Link aggregation enabled   : No
  Aggregation port ID        : 0

Výpis okolí v Linuxu provedeme příkazem lldpctl:

pm@pm-desktop:~$ lldpctl
-------------------------------------------------------------------------------
LLDP neighbors:
-------------------------------------------------------------------------------
Interface:    eth0, via: LLDP, RID: 1, Time: 0 day, 00:02:24
  Chassis:
    ChassisID:    mac 00:12:a9:8d:d1:c0
    SysName:      5500-EI
    SysDescr:     Switch 5500-EI
    MgmtIP:       192.168.222.11
    Capability:   Bridge, on
    Capability:   Router, on
  Port:
    PortID:       ifname Ethernet3/0/8
    PortDescr:    Ethernet3/0/8
    MFS:          1522
    PMD autoneg:  supported: yes, enabled: yes
      Adv:          10Base-T, HD: yes, FD: yes
      Adv:          100Base-T4
      Adv:          1000Base-X, HD: yes, FD: yes
      MAU oper type: 100BaseTXFD - 2 pair category 5 UTP, full duplex mode
    MDI Power:    supported: no, enabled: no, pair control: no
      Device type:  PD
      Power pairs:  signal
      Class:        class 0
  VLAN:         1, pvid: yes VLAN 0001
  PPVID:        1, supported: yes, enabled: no
-------------------------------------------------------------------------------

Jak vidíte z obou výpisů, dozvíme se poměrně dost informací o Linuxu i přepínači.

Ve FreeBSD je možné použít Openlldp:

root@gate # cd /usr/ports/net-mgmt/openlldp
root@gate ports # make install

Do /etc/rc.conf přidat spouštění démona a zvolit síťovou kartu, na které má pracovat:

lldpd_enable="YES"
lldpd_flags="-i em0"

A spustit

root@gate ports /usr/local/etc/rc.d/lldpd start

Příkazem lldpneighbors získáme podobný výsledek jako u Linuxu.

Konfigurace na straně přepínačů už nechám na čtenářích. Jak na to najdete u Cisca a u HP/H3C.

Jak tedy informace získávat a dále je zpracovávat? To, co jsme si ukázali, nám může pomoci ke zjištění, kde je co zapojené, když ale začneme sbírat informace ze všech prvků, teoreticky můžeme zjistit topologii celé sítě. Bohužel tak jednoduché to vždy není. Problém mohou způsobit třeba přepínače bez managementu nebo vypnutý discovery protokol na zařízení. Lze také nastavit, zda má třeba jen poslouchat nebo naopak vysílat.

Informace o stavu LLDP protokolu jsou dostupné přes SNMP. Nic nám tedy nebrání si informace (nejčastěji z přepínačů) zjistit. Potřebná OID:

  • MAC adresa zařízení – 1.0.8802.1.1.2.1.3.2.0
  • Tabulka lokálních portů – 1.0.8802.1.1.2.1.3.7
  • Tabulka nalezených zařízení – 1.0.8802.1.1.2.1.4

Informací je samozřejmě více (je uložená i konfigurace, statistiky…). Co vše můžete zjistit, se dozvíte třeba na mibdepot.com.

Ukázka údajů vyčtených ze SNMP: toto jsou protistrany, vidíte MAC adresy zařízení, názvy portů a zařízení.

iso.0.8802.1.1.2.1.4.1.1.4.672033169.19.1 = INTEGER: 4
iso.0.8802.1.1.2.1.4.1.1.4.672033181.18.1 = INTEGER: 4
iso.0.8802.1.1.2.1.4.1.1.4.1770055068.14.1 = INTEGER: 4
iso.0.8802.1.1.2.1.4.1.1.4.2185294313.11.1 = INTEGER: 4
iso.0.8802.1.1.2.1.4.1.1.5.672033169.19.1 = Hex-STRING: 00 12 A9 8D D1 C0
iso.0.8802.1.1.2.1.4.1.1.5.672033181.18.1 = Hex-STRING: 00 12 A9 8D D1 C0
iso.0.8802.1.1.2.1.4.1.1.5.1770055068.14.1 = Hex-STRING: 00 1B 21 6D 76 20
iso.0.8802.1.1.2.1.4.1.1.5.2185294313.11.1 = Hex-STRING: 2C 41 38 28 A8 82
iso.0.8802.1.1.2.1.4.1.1.6.672033169.19.1 = INTEGER: 5
iso.0.8802.1.1.2.1.4.1.1.6.672033181.18.1 = INTEGER: 5
iso.0.8802.1.1.2.1.4.1.1.6.1770055068.14.1 = INTEGER: 5
iso.0.8802.1.1.2.1.4.1.1.6.2185294313.11.1 = INTEGER: 3
iso.0.8802.1.1.2.1.4.1.1.7.672033169.19.1 = STRING: "GigabitEthernet1/0/25"
iso.0.8802.1.1.2.1.4.1.1.7.672033181.18.1 = STRING: "GigabitEthernet2/0/25"
iso.0.8802.1.1.2.1.4.1.1.7.1770055068.14.1 = STRING: "em0"
iso.0.8802.1.1.2.1.4.1.1.7.2185294313.11.1 = Hex-STRING: 2C 41 38 28 A8 82
iso.0.8802.1.1.2.1.4.1.1.8.672033169.19.1 = STRING: "GigabitEthernet1/0/25"
iso.0.8802.1.1.2.1.4.1.1.8.672033181.18.1 = STRING: "GigabitEthernet2/0/25"
iso.0.8802.1.1.2.1.4.1.1.8.1770055068.14.1 = STRING: "em0"
iso.0.8802.1.1.2.1.4.1.1.8.2185294313.11.1 = STRING: "Port 1"
iso.0.8802.1.1.2.1.4.1.1.9.672033169.19.1 = STRING: "5500-EI"
iso.0.8802.1.1.2.1.4.1.1.9.672033181.18.1 = STRING: "5500-EI"
iso.0.8802.1.1.2.1.4.1.1.9.1770055068.14.1 = STRING: "gate.kostax.cz."
iso.0.8802.1.1.2.1.4.1.1.9.2185294313.11.1 = STRING: "H3C-wifi AP 1 p>-CN32B011BZ"
iso.0.8802.1.1.2.1.4.1.1.10.672033169.19.1 = STRING: "Switch 5500-EI"
iso.0.8802.1.1.2.1.4.1.1.10.672033181.18.1 = STRING: "Switch 5500-EI"

LLDP a CDP využívají i některé programy, např. HP iMC nebo Cisco network administrator. Patrně existuje i nějaký open-source software, který se tomuto věnuje, ale nemám s žádným zkušenost. Pokud ji máte vy, podělte se v diskusi pod článkem.

Kvůli bezpečnosti není vhodné oznámení odesílat mimo naši síť. Špatně nastavený směrovač o sobě může do internetu říkat svou IP adresu a verzi software a tím usnadnit útočníkovi práci. V případě linuxového lldpd je možné nastavit, jaké informace se budou posílat a třeba verzi systému a jádra je možné vynechat nebo změnit. Discovery protokoly toho umí ještě o trochu více, o tom třeba někdy příště.

Našli jste v článku chybu?

2. 10. 2014 12:39

Nemit bordel v siti je skvele, ale setkavam se sitemi (statni sprava i soukr.), kde proste bordel je a nikdo nevi, co kam vede a jak je udelano. Tam mi tyhle veci docela pomahaji. Pustim si na prvku LLDP a postupne rozkryvam :-)

S odkazy mate pravdu. Vzal jsem prvni, ktery se mi nasel. Mozna by se dal najit hezci :-)

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Vitalia.cz: Chtějí si léčit kvasinky. Lék je jen v Německu

Chtějí si léčit kvasinky. Lék je jen v Německu

Vitalia.cz: Tesco: Chudá rodina si koupí levné polské kuře

Tesco: Chudá rodina si koupí levné polské kuře

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

DigiZone.cz: Recenze Prostřeno: cirkus postižených

Recenze Prostřeno: cirkus postižených

Lupa.cz: Teletext je „internetem hipsterů“

Teletext je „internetem hipsterů“

Vitalia.cz: Mondelez stahuje rizikovou čokoládu Milka

Mondelez stahuje rizikovou čokoládu Milka

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život

Vitalia.cz: Drahé i levné. Tyhle potraviny nosili na charitu

Drahé i levné. Tyhle potraviny nosili na charitu

Root.cz: Certifikáty zadarmo jsou horší než za peníze?

Certifikáty zadarmo jsou horší než za peníze?

Podnikatel.cz: Hledáte investora? Neunáhlete se

Hledáte investora? Neunáhlete se

Podnikatel.cz: Babiš: E-shopy z EET možná vyjmeme

Babiš: E-shopy z EET možná vyjmeme

Lupa.cz: UX přestává pro firmy být magie

UX přestává pro firmy být magie

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

Podnikatel.cz: Podnikatelům dorazí varování od BSA

Podnikatelům dorazí varování od BSA

120na80.cz: Na ucho teplý, nebo studený obklad?

Na ucho teplý, nebo studený obklad?

DigiZone.cz: Rádio Šlágr má licenci pro digi vysílání

Rádio Šlágr má licenci pro digi vysílání

Měšec.cz: Za palivo zaplatíte mobilem (TEST)

Za palivo zaplatíte mobilem (TEST)

Lupa.cz: Insolvenční řízení kvůli cookies? Vítejte v ČR

Insolvenční řízení kvůli cookies? Vítejte v ČR

120na80.cz: Jak oddálit Alzheimera?

Jak oddálit Alzheimera?