Obtener el puerto del switch al cual está conectado el servidor

A veces es necesario conocer el puerto del switch al que está conectado un servidor, y aunque siempre queda la opción de ir en persona, hay opciones mejores que ir al rack por bien peinado que esté.

Una opción es capturar y analizar el tráfico de red en busca de paquetes CDP (Cisco Discovery Protocol). El protocolo CDP es usado por los equipos de red para compartir información con otros equipos de red; para ello emiten paquetes, de forma regular, a la dirección multicast 01-00-0c-cc-cc-cc.

Capturar el tráfico CDP

1
tcpdump -nn -v -i enp6s0 -s 1500 -c 1 'ether host 01:00:0c:cc:cc:cc'

Los parámetros usados son:

  • -nn, evita la conversión de los protocolos y puertos a nombres.
  • -v, salida verbosa.
  • -i, especifica la interfaz de red.
  • -s, permite truncar el tamaño de los paquetes al valor indicado en bytes. El valor por defecto es 65535 bytes.
  • -c, sale del modo listen tras recibir el número de paquetes indicados, en el ejemplo tras recibir el primer paquete.
  • 'ether host 01:00:0c:cc:cc:cc', expresión de filtrado para seleccionar únicamente los paquetes destinados a la dirección multicast 01:00:0c:cc:cc:cc.

También es posible hacerlo desde Windows con WinDump, ojo se precisa tener previamente instalado WinPcap. Los parámetros son los mismos, aunque previamente es necesario obtener el ID del adaptador de red a través de windump -D, ejemplo:

1
2
3
4
5
6
7
8
C:\Users\antonio.guillen
λ windump -D
1.\Device\NPF_{1CE13849-6AE3-4D65-BB86-327DE708F61A} (Microsoft Corporation)
2.\Device\NPF_{1C5B4BB2-3D02-4992-8E8C-8C807DAA1F35} (Microsoft)
3.\Device\NPF_{FF4BD046-EA50-4427-B670-4A0494996661} (Intel(R) Ethernet Connection (3) I218-LM)
4.\Device\NPF_{7AD1944E-72DF-4A3E-A4E9-1CD0479B8B95} (Microsoft)
5.\Device\NPF_{9C21425B-FE62-4560-9BC1-4C34E730A774} (Citrix)
6.\Device\NPF_{874BDAC5-01CC-43A7-99D0-BA28427E96D4} (Microsoft)

Ejemplo desde Linux

En este ejemplo se usa tcpdump en un servidor Linux conectado al puerto Fa0/22 de un switch Cisco.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@IDS /]# tcpdump -nn -v -i enp6s0 -s 1500 -c 1 'ether host 01:00:0c:cc:cc:cc'
tcpdump: listening on enp6s0, link-type EN10MB (Ethernet), capture size 1500 bytes
16:04:41.039578 CDPv2, ttl: 180s, checksum: 692 (unverified), length 438
Device-ID (0x01), length: 8 bytes: 'SW-MAD-001'
Version String (0x05), length: 244 bytes:
Cisco IOS Software, C2960 Software (C2960-LANLITEK9-M), Version 12.2(55)SE6, RELEASE SOFTWARE (fc1)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2012 by Cisco Systems, Inc.
Compiled Mon 23-Jul-12 13:34 by prod_rel_team
Platform (0x06), length: 21 bytes: 'cisco WS-C2960-48TC-S'
Address (0x02), length: 13 bytes: IPv4 (1) 172.16.21.162
Port-ID (0x03), length: 16 bytes: 'FastEthernet0/22'
Capability (0x04), length: 4 bytes: (0x00000028): L2 Switch, IGMP snooping
Protocol-Hello option (0x08), length: 32 bytes:
VTP Management Domain (0x09), length: 0 bytes: ''
1 packet captured
2 packets received by filter
0 packets dropped by kernel

Ejemplo desde Windows

En este ejemplo, se usa WinDump en un portátil Windows conectado al puerto Gi2/0/7 de un switch Dell.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
C:\Users\antonio.guillen
λ windump -D
1.\Device\NPF_{1CE13849-6AE3-4D65-BB86-327DE708F61A} (Microsoft Corporation)
2.\Device\NPF_{1C5B4BB2-3D02-4992-8E8C-8C807DAA1F35} (Microsoft)
3.\Device\NPF_{FF4BD046-EA50-4427-B670-4A0494996661} (Intel(R) Ethernet Connection (3) I218-LM)
4.\Device\NPF_{7AD1944E-72DF-4A3E-A4E9-1CD0479B8B95} (Microsoft)
5.\Device\NPF_{9C21425B-FE62-4560-9BC1-4C34E730A774} (Citrix)
6.\Device\NPF_{874BDAC5-01CC-43A7-99D0-BA28427E96D4} (Microsoft)
C:\Users\antonio.guillen
λ windump -nn -v -i 3 -s1500 -c1 "ether host 01:00:0c:cc:cc:cc"
windump: listening on \Device\NPF_{FF4BD046-EA50-4427-B670-4A0494996661}
15:02:59.698435 CDPv2, ttl: 180s, checksum: 692 (unverified), length 65
Device-ID (0x01), length: 10 bytes: 'SW-MAD-020'
Platform (0x06), length: 6 bytes: 'N2048P'
Capability (0x04), length: 4 bytes: (0x00000001): Router
Version String (0x05), length: 7 bytes:
6.1.2.4
Address (0x02), length: 4 bytes:
Port-ID (0x03), length: 7 bytes: 'Gi2/0/7'
1 packets captured
5229 packets received by filter
0 packets dropped by kernel

Entradas de interés

Contenidos
  1. 1. Capturar el tráfico CDP
  2. 2. Ejemplo desde Linux
  3. 3. Ejemplo desde Windows