CDP – Cisco Discovery Protocol

Comandistica per sporcarsi le mani!

Abilitare globalmente il CDP

Il CDP è già abilitato globalmente di default sugli apparati.
Tuttavia, se è stato disabilitato, è possibile riabilitarlo con i seguenti comandi:

SW-A>enable

Password:
SW-A#configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.
SW-A(config)#cdp run
SW-A(config)#end

Disabilitare globalmente il CDP

Una delle principali ragioni per cui si potrebbe voler disabilitare il CDP sta nel fatto che, attraverso questo protocollo, un malintenzionato che si collega alla nostra rete potrebbe scoprire alcune informazioni utili a sfruttare qualche bug software, sferrare un attacco di tipo DoS attraverso il CDP oppure conoscere ad esempio quale sia la VLAN voce… Torneremo sulla sicurezza del CDP dopo ve lo prometto, ora vediamo come si disabilita!

SW-A>enable
Password:
SW-A#configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.
SW-A(config)#no cdp run
SW-A(config)#end

Verificare lo stato globale del CDP

Per conoscere se il CDP è attivo e con quali parametri opera è sufficiente il comando show cdp

SW-A>show cdp
Global CDP information:
        Sending CDP packets every 60 seconds
        Sending a holdtime value of 180 seconds
        Sending CDPv2 advertisements is  enabled

Come è possibile vedere, il comando restituisce il tempo di timer, quello di holdtime e anche la versione del protocollo CDP utilizzata. Nell’esempio è stato utilizzato il comando su uno switch con le impostazioni di default.

Abilitare il CDP sulla singola interfaccia

Nella condizione di default, con il CDP abilitato a livello globale, il protocollo è attivo su ogni singola interfaccia.
Nel caso in cui un’interfaccia non sia abilitata basterà usare il comando cdp enable in modalità interface-config

SW-A>enable
Password:
SW-A#configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.
SW-A(config)#interface <nome_interfaccia>
SW-A(config-if)#cdp enable
SW-A(config-if)#end

Se invece tentiamo di abilitare la singola interfaccia avendo il CDP disabilitato a livello globale otterremo il seguente errore che ci ricorderà come procedere:

SW-A>enable
Password:
SW-A#configure terminal
SW-A(config)#interface <nome_interfaccia>
SW-A(config-if)#cdp enable
% Cannot enable CDP on this interface, since CDP is not running

Disabilitare il CDP sulla singola interfaccia

Come visto in precedenza, diverse possono essere le motivazioni che spingono a non utilizzare il protocollo.
Per disabilitarlo a livello di singola interfaccia:

SW-A>enable
Password:
SW-A#configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.
SW-A(config)#interface <nome_interfaccia>
SW-A(config-if)#no cdp enable
SW-A(config-if)#end

Verificare lo stato del CDP sulle singole interfacce

Per verificare lo stato del CDP su tutte le singole interfacce è possibile utilizzare il comando show cdp interface (il comando riporta alla fine anche un riassunto di quante interfacce sono abilitate al CDP, quante quelle in UP e quante in DOWN)

SW-A>show cdp interface
GigabitEthernet0/0 is up, line protocol is up
  Encapsulation ARPA
  Sending CDP packets every 60 seconds
  Holdtime is 180 seconds
GigabitEthernet0/1 is up, line protocol is up
  Encapsulation ARPA
  Sending CDP packets every 60 seconds
  Holdtime is 180 seconds

[...]

GigabitEthernet3/3 is down, line protocol is down
  Encapsulation ARPA
  Sending CDP packets every 60 seconds
  Holdtime is 180 seconds

 cdp enabled interfaces : 16
 interfaces up          : 6
 interfaces down        : 10

Se invece vogliamo essere più precisi e conoscere lo stato di una singola interfaccia basterà specificarla nel comando che risponderà così nel caso di CDP abilitato:

SW-A>show cdp interface <nome_interfaccia>
<nome_interfaccia> is up, line protocol is up
  Encapsulation ARPA
  Sending CDP packets every 60 seconds
  Holdtime is 180 seconds

e così in caso contrario:

SW-A>show cdp interface <nome_interfaccia>
 CDP is not enabled on interface <nome_interfaccia>

Modificare il valore del timer

È possibile modificare l’intervallo di tempo tra due invii consecutivi delle frame CDP attraverso i seguenti comandi:

SW-A#configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.
SW-A(config)#cdp timer <tempo_timer>
SW-A(config)#end

Dove tempo_timer può variare da 5 a 254 secondi. La modifica avviene a livello globale

Modificare il valore di holdtime

È possibile anche modificare il valore di holdtime:

SW-A#configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.
SW-A(config)#cdp holdtime <tempo_holdtime>
SW-A(config)#end

Dove tempo_holdtime può variare da 10 a 255 secondi. Anche in questo caso la modifica avviene a livello globale

Impostare il CDP versione 1

Per impostare il protocollo alla versione 1 (quindi con un set più limitato di TLV) bisogna semplicemente disabilitare la versione 2:

SW-A>enable
Password:
SW-A#configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.
SW-A(config)#no cdp advertise-v2
SW-A(config)#end
SW-A#

Impostare il CDP versione 2

E la versione impostata di default sugli apparati. Nel caso fosse stata disabilitata, è possibile riabilitarla attraverso i seguenti comandi:

SW-A>enable
Password:
SW-A#configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.
SW-A(config)#cdp advertise-v2
SW-A(config)#end
SW-A#

Mostrare la tabella dei vicini

Sicuramente è il comando del CDP più utilizzato! Permette di stampare a video tutta la tabella dei vicini

SW-A>show cdp neighbors
Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge
                  S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone,
                  D - Remote, C - CVTA, M - Two-port Mac Relay

Device ID        Local Intrfce     Holdtme    Capability  Platform  Port ID
SW-C             Gig 0/3           163             R S I            Gig 0/0
SW-B             Gig 0/2           152             R S I            Gig 0/1

Come è possibile verificare, in questa tabella mancano un po’ di dettagli (ad es. gli indirizzi IP, la versione firmware, etc) circa i nostri vicini.
Se abbiamo bisogno che vengano riportate queste informazioni basterà aggiungere la keyword detail!

SW-A>show cdp neighbors detail
-------------------------
Device ID: SW-C
Entry address(es):
  IP address: 192.168.0.252
Platform: Cisco ,  Capabilities: Router Switch IGMP
Interface: GigabitEthernet0/3,  Port ID (outgoing port): GigabitEthernet0/0
Holdtime : 133 sec

Version :
Cisco IOS Software, vios_l2 Software (vios_l2-ADVENTERPRISEK9-M), Version 15.2(CML_NIGHTLY_20190423)FLO_DSGS7, EARLY DEPLOYMENT DEVELOPMENT BUILD, synced to  V152_6_0_81_E
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2019 by Cisco Systems, Inc.
Compiled Tue 23-Apr-19 04:48 by mmen

advertisement version: 2
Management address(es):
  IP address: 192.168.0.252

-------------------------
Device ID: SW-B
Entry address(es):
  IP address: 192.168.0.253
Platform: Cisco ,  Capabilities: Router Switch IGMP
Interface: GigabitEthernet0/2,  Port ID (outgoing port): GigabitEthernet0/1
Holdtime : 168 sec

Version :
Cisco IOS Software, vios_l2 Software (vios_l2-ADVENTERPRISEK9-M), Version 15.2(CML_NIGHTLY_20190423)FLO_DSGS7, EARLY DEPLOYMENT DEVELOPMENT BUILD, synced to  V152_6_0_81_E
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2019 by Cisco Systems, Inc.
Compiled Tue 23-Apr-19 04:48 by mmen

[...]

Mostrare il dettaglio di un singolo vicino

Ovviamente possiamo filtrare la visualizzazione precedente ad un solo apparato di nostro interesse:

SW-A>show cdp entry <nome_apparato>
-------------------------
Device ID: <nome_apparato>
Entry address(es):
  IP address: 192.168.0.252
Platform: Cisco ,  Capabilities: Router Switch IGMP
Interface: GigabitEthernet0/3,  Port ID (outgoing port): GigabitEthernet0/0
Holdtime : 134 sec

Version :
Cisco IOS Software, vios_l2 Software (vios_l2-ADVENTERPRISEK9-M), Version 15.2(CML_NIGHTLY_20190423)FLO_DSGS7, EARLY DEPLOYMENT DEVELOPMENT BUILD, synced to  V152_6_0_81_E
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2019 by Cisco Systems, Inc.
Compiled Tue 23-Apr-19 04:48 by mmen

advertisement version: 2
Management address(es):
  IP address: 192.168.0.252

Attenzione: se esistono più apparati con lo stesso Device-ID all’interno della nostra tabella, verranno mostrati i dettagli relativi a tutti 😉
Inoltre possiamo ulteriormente filtrare il risultato nel caso in cui ci serva sapere solo gli indirizzi IP o la versione firmware dell’apparato specificando rispettivamente le keywords protocol e version:

SW-A>show cdp entry <nome_apparato> protocol
Protocol information for <nome_apparato> :
  IP address: 192.168.0.252
SW-A>show cdp entry <nome_apparato> version

Version information for <nome_apparato> :
  Cisco IOS Software, vios_l2 Software (vios_l2-ADVENTERPRISEK9-M), Version 15.2(CML_NIGHTLY_20190423)FLO_DSGS7, EARLY DEPLOYMENT DEVELOPMENT BUILD, synced to  V152_6_0_81_E
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2019 by Cisco Systems, Inc.
Compiled Tue 23-Apr-19 04:48 by mmen