Wer in seinem Netzwerk einen Überblick über die Systeme erhalten will, sollte genau wissen wo welcher Computer, Drucker oder ein sonstiges Netzwerkgerät angeschlossen ist. Der einfachste Weg ist, beim Anschluss sich direkt die Netzwerkdose und den Switchport zu notieren. Das LLDP Protokoll hilft uns hier.Doch wie sieht es damit aus, zusätzliche Informationen auszulesen. Wie zum Beispiel die VLAN ID oder den Namen des Switches. Diese könnt ihr euch zwar mit notieren, aber eine VLAN ID ist schnell geändert.
LLDP Protokoll / CDP Protokoll
Das Layer 2 Protokoll Link Layer Discovery Protocol (LLDP) ist herstellerunabhängig. Es dient zur Identifizierung von Nachbargeräten im Netzwerk. Der auf dem Netzwerkgerät laufende LLDP-Agent sendet in periodischen Abständen von 30 Sekunden Informationen. Definiert ist der Standard in der IEEE 802.1AB.
Dem gegenüber steht das proprietäre Protokoll Cisco Discovery Protocol (CDP) welches ebenfalls auf Layer 2 sendet. Dieses wie der Name schon sagt, wurde es von Cisco entwickelt. Die Nachrichten werden auch wieder vom Switch verteilt an den jeweiligen Port. Und beinhalten wie auch beim Informationen über den Switch selber und den Anschluss.
Wie so ein Paket aussieht kann man es bequem über Wireshark mitschneiden oder über tcpdump mit den entsprechenden Parametern filtern. Vorher muss man aber noch die DeviceID über Powershell abfragen. Dazu einfach die MACAddress hier ersetzen und die ID in den tcpdump Befehl übertragen.
Get-WmiObject -Query "SELECT * FROM Win32_NetworkAdapterConfiguration" | ? {$_.MACAddress -eq "FF:FF:FF:00:00:00"} | select SettingID
Das sieht dann dementsprechend so aus.
tcpdump.exe -i \Device\{0178694A-E2B2-45C7-B8A4-6454419B33F6} -nn -v -s 1500 -c 1 (ether[12:2]==0x88cc or ether[20:2]==0x2000)
Der tcpdump Befehl schneidet beide Protokolle mit, LLDP und CDP. Je nach Netzwerkumgebung erscheint die Ausgabe dann anders. Im Beispiel hier ist eine LLDP Ausgabe zu sehen.
11:33:38.375470 LLDP, length 260 Chassis ID TLV (1), length 7 Subtype MAC address (4): 94:00:00:00:00:00 Port ID TLV (2), length 2 Subtype Local (7): 1 Time to Live TLV (3), length 2: TTL 120s Port Description TLV (4), length 1: 1 System Name TLV (5), length 11: Switch-21 System Description TLV (6), length 156 HP J9855A 2530-48G-2SFP+ Switch, revision YA.16.03.0004, ROM YA.15.19 (/ws/swbuildm/rel_tacoma_qaoff/code/build/lakes(swbuildm_rel_tacoma_qaoff_rel_tacoma)) System Capabilities TLV (7), length 4 System Capabilities [Bridge] (0x0004) Enabled Capabilities [Bridge] (0x0004) Management Address TLV (8), length 14 Management Address length 7, AFI 802 (6): 94:00:00:00:00:00 Interface Index Interface Numbering (2): 0 Organization specific TLV (127), length 6: OUI Ethernet bridged (0x0080c2) Port VLAN Id Subtype (1) port vlan id (PVID): 4711 Organization specific TLV (127), length 9: OUI IEEE 802.3 Private (0x00120f) MAC/PHY configuration/status Subtype (1) autonegotiation [supported, enabled] (0x03) PMD autoneg capability [10BASE-T hdx, 10BASE-T fdx, 100BASE-TX hdx, 100BASE-TX fdx, Asym and Sym PAUSE for fdx, 1000BASE-T fdx] (0x6c11) MAU type 1000BASET fdx (0x001e) Organization specific TLV (127), length 7: OUI IEEE 802.3 Private (0x00120f) Power via MDI Subtype (2) MDI power support [PSE], power pair signal, power class class0 Organization specific TLV (127), length 7: OUI ANSI/TIA (0x0012bb) LLDP-MED Capabilities Subtype (1) Media capabilities [LLDP-MED capabilities, network policy, location identification, extended power via MDI-PSE] (0x000f) Device type [network connectivity] (0x04) Organization specific TLV (127), length 6: OUI Unknown (0x0016b9) 0x0000: 0016 b902 0001 End TLV (0), length 0
Informationen aufbereiten
Die Ausgabe enthält alles was benötigt wird. Diese müssen wir nur noch auf die wichtigsten Elemente beschränken. Dieses habe ich über Powershell gelöst und einfach die ganze tcpdump Ausgabe in eine Datei umgeleitet. Aus dieser Suche ich mir anhand der Parameter die richtige Stelle und speicher mir die Daten zwischen. So kann ich die folgenden Daten extrahieren:
- Konfigurierter Switch Name
- Model (teilweise mit Firmware Informationen)
- VLAN am Port
- Port
Mein Powershell Script beendet den tcpdump auch nach 60 Sekunden. Wenn also nach zwei Intervallen kein LLDP Paket empfangen wurde. Die verarbeiteten Daten werden in eine INI-Datei gespeichert. Diese wird zur weiteren Verarbeitung in der baramundi Management Suite genutzt.
Variablen anpassen
Damit das Script bei euch lauffähig ist, müsst ihr die Variablen anpassen. Ihr findet im Script die Zeilen 28-32. Angepasst muss der Speicherort der tcpdump.exe, eine eventuell generierte INI Datei und eure MAC-Adresse.
Im Download ist zusätzlich die tcpdump.exe enthalten die ihr benötigt.
Download “LLDP Informationen auslesen und anzeigen” Get-LLDP.zip – 1291-mal heruntergeladen – 515,13 kB