CDP

Cisco Discovery Protocol (CDP) je protokolem druhé vrstvy síťového modelu OSI. Jedná se o proprietární protokol používaný aktivními síťovými prvky firmy Cisco Systems. Primárním účelem tohoto protokolu je zjištění parametrů sousedních (přímo připojených) zařízení.

Pro zjištění základních informací o sousedních zařízeních (musejí mít spuštěné CDP) zadejte příkaz:

switch# show cdp neighbors

Cisco Discovery Protocol (CDP) Packets
Nedávno jsem narazil na svém Karton PC, který je jednou síťovou kartou připojen do vnitřní sítě mého ISP a stale mě zaráželo, proč je daná síťová karta tolik aktívní. Program tcpdump mi odhlail protokol Cisco Discovery Protocol (CDP), se kterým jsem se doposud nesetkal. CDP je protokolem druhé vrstvy síťového modelu OSI. Jedná se o proprietární protokol používaný aktivními síťovými prvky firmy Cisco Systems. Primárním účelem tohoto protokolu je zjištění parametrů sousedních (přímo připojených) zařízení.

Síťová zařízení se v sítí tímto protokolem identifikují. Mám tudíž možnost zjistit jak má ISP dané zařízení pojmenované. Je zjevné že daný protokol používá RouterOS MikroTik.

Ve FreeBSD jsem hledal nějaké aplikace, které s daným protokolem umí nějak pracovat. Nainstaloval jsem si je a pokusne vyzkoušel.

cdpd-1.0.2_4 A daemon to send Cisco Discovery Protocol announces over ethernet
cdpr-2.2.1 Cisco Discovery Protocol Reporter
scdp-1.0.b_3 Tool that sends CDP (CISCO Discovery Protocol) Packets

První aplikace cdpd je daemon, který odesílá informace o našem zařízení v časových intervalech.
Konfigurace je snadná.

joe /etc/rc.conf
cdpd_enable="YES"
cdpd_flags="-i xl0"

/usr/local/etc/rc.d/cdpd start

Pomocí druhé aplikace cdpr se nám přehledně vypíše první zařízení, které se max. do 60 sec. ohlasí.
[root@sklep ~]# cdpr -d xl0
cdpr - Cisco Discovery Protocol Reporter
Version 2.2.1
Copyright (c) 2002-2006 - MonkeyMental.com

Using Device: xl0
Waiting for CDP advertisement:
(default config is to transmit CDP packets every 60 seconds)
Device ID
value: Vysilac Kuks Zamek-5
Addresses
value: 192.168.110.46

Pomocí třetího prográmku scdp odešleme skrze definovaný interface správu o našem systému. Parametr -g vypíše debug informace.
[root@sklep ~]# scdp -i xl0 -g
Interface: xl0

00 0100 0ccc cccc 0050 0447 0456 00e7 aaaa
10 0300 000c 2000 01b4 d530 0001 001c 736b
20 6c65 702e 6869 6465 2e6c 756b 6173 6d61
30 6c79 2e6e 6574 0002 0011 0000 0001 0101
40 cc00 040a 0101 4200 0300 0778 6c30 0004
50 0008 0000 0010 0005 0094 4672 6565 4253
60 4420 362e 342d 5245 4c45 4153 452d 7031
70 2046 7265 6542 5344 2036 2e34 2d52 454c
80 4541 5345 2d70 3120 2333 3a20 5765 6420
90 4465 6320 3331 2030 373a 3435 3a31 3120
a0 4345 5420 3230 3038 2020 2020 2072 6f6f
b0 7440 736b 6c65 702e 6869 6465 2e6c 756b
c0 6173 6d61 6c79 2e6e 6574 3a2f 7573 722f
d0 6f62 6a2f 7573 722f 7372 632f 7379 732f
e0 534b 4c45 5020 6933 3836 0006 000b 4672
f0 6565 4253 44

Pokud chceme získat více informací je třeba použít tcpdump. Příklad použítí je zde.

[root@sklep ~]# tcpdump -nn -v -i xl0 -s 1500 -c 1 'ether[20:2] == 0x2000'
tcpdump: listening on xl0, link-type EN10MB (Ethernet), capture size 1500 bytes
09:37:26.076010 CDPv1, ttl: 120s, checksum: 376 (unverified), length 73
Device-ID (0x01), length: 18 bytes: 'Vysilac Zirec -5-8'
Address (0x02), length: 13 bytes: IPv4 (1) 192.168.95.122
Capability (0x04), length: 4 bytes: (0x00000001): Router
Version String (0x05), length: 6 bytes:
2.9.44
Platform (0x06), length: 8 bytes: 'MikroTik'
1 packets captured
41 packets received by filter
0 packets dropped by kernel

nebo pokud chceme vypisovat všechny CDP packety kontinuálně, užijeme tento příkaz.

tcpdump -nn -v -i xl0 -s 1500 'ether[20:2] == 0x2000'

Je zajimavé ze ISP o daném protokolu neví, asi jako já, přesněji zařízení jej používají taknějak samočině, patrně to je defaultní chování RouterOS MikroTik.