¿Cómo puedo capturar el tráfico en los switches Cisco IOS?


23

Para investigar un problema en la comunicación de cliente a servidor, necesito capturar paquetes para su análisis. Sin embargo, no está permitido instalar un analizador de paquetes, como Wireshark o tcpdump, en el cliente o servidor. El cliente está conectado a un Catalyst 3560 y el servidor a un switch Catalyst 3750.

¿Puedo conectar mi computadora portátil a un puerto de conmutación para capturar el tráfico con el analizador de paquetes de mi computadora portátil y cómo?


Hice la misma pregunta de respuesta automática para Brocade aquí: networkengineering.stackexchange.com/questions/672/… Se siente un poco raro ... :)
Benjamin A.

@BenjaminA. ¡Excelente! ¡Gracias por la solución para Brocade y por agregar el enlace aquí!
Stefan

¿Existe una configuración en la sesión que permita que el PC / servidor de captura siga optando por IP desde DHCP?
mickeyHR

¿Alguna respuesta te ayudó? Si es así, debe aceptar la respuesta para que la pregunta no siga apareciendo para siempre, buscando una respuesta. Alternativamente, puede proporcionar y aceptar su propia respuesta.
Ron Maupin

Respuestas:


34

Se puede supervisar el puerto de conmutación del cliente o el puerto de conmutación del servidor. Un tercer puerto de conmutación se puede configurar como un puerto espejo . Esto significa que este puerto espejo recibirá copias de todos los paquetes en el puerto original correspondiente, mientras que el tráfico original no se verá afectado.

Por ejemplo, en el Catalyst 3560:

  1. Ingrese al modo de configuración:

    conf t
    
  2. Defina la fuente y establezca el número de sesión:

    monitor session 1 source interface fa 0/24
    

    Aquí, el número de sesión puede ser del 1 al 66, también puede especificar una VLAN o un canal ethernet. Además, los rangos de interfaz fa 0/25 - 26son posibles y la lista de interfaces, por ejemplo fa 0/24,fa 0/26, si desea supervisar varios clientes al mismo tiempo. Además, repitiendo el comando puede agregar puertos o eliminar usando no. No es posible mezclar puertos y VLAN en la misma sesión, otra restricción es que no puede usar un puerto de destino como puerto de origen.

  3. Defina el puerto de destino:

    monitor session 1 destination interface gi 0/1
    

    Puede usar un puerto normal, pero no una VLAN. De manera similar a lo anterior, un puerto de destino no puede ser un puerto de origen: un puerto utilizado aquí puede ser un puerto de origen o de destino, y solo de una sesión. Nuevamente, puede especificar múltiples puertos como el anterior.

  4. Es posible que desee exitconfigurar el modo y guardar la configuración.

  5. Puede echar un vistazo a su sesión definida: aquí hay varios puertos, probados como anteriormente:

    #show monitor session 1
    Session 1
    ---------
    Type                   : Local Session
    Source Ports           :
        Both               : Fa0/24,Fa0/25-26
    Destination Ports      : Fa0/48,Gi0/1
        Encapsulation      : Native
              Ingress      : Disabled
    

    Puede ver una encapsulación aquí; opcionalmente, puede configurarla replicatepara replicar el método de encapsulación de la interfaz de origen, como agregar encapsulation replicatedespués de la interfaz de origen. Además, se puede especificar una dirección ( tx, rx, both), VLAN de filtro y mucho más. La Ingress: Disabledlínea significa que el conmutador no aceptará ninguna trama que le presente su dispositivo de captura en un puerto de destino. Para obtener detalles más precisos y restricciones adicionales y configuraciones predeterminadas, consulte la referencia de comandos de la versión IOS de su conmutador.

Una vez que configuró el puerto de origen y de destino, puede capturar el tráfico utilizando su computadora portátil conectada al puerto de destino, por ejemplo con Wireshark.

El número de sesiones de origen puede ser limitado, por ejemplo, el 3560 admite un máximo de 2.

Después de la captura, no olvide eliminar esta configuración de sesión.


1
Puede dejar la sesión de monitor en su lugar y simplemente deshabilitar el enlace en la NIC de su monitor de host. Los paquetes no serán capturados y enviados a un enlace que está inactivo. En un servidor de Windows, tengo dos NIC con una llamada SPAN. Cuando no quiero que el switch realice la captura de gastos generales, solo entro en las propiedades de red y deshabilité la NIC de SPAN. (Por lo general, los puertos de origen se cambian, pero las estancias de puerto de destino de la misma, así que sé que voy a reflejar de nuevo para el mismo host de destino en el futuro.)
generalnetworkerror

Para deshabilitar una sesión de monitor, use# no monitor session 1
wimh

17

Si su tráfico pasa por un enrutador que ejecuta Cisco IOS 12.4 (20) T o superior, otra posibilidad es utilizar la función Embedded Packet Capture.

Esta característica NO está disponible en plataformas de conmutadores como el 3560 o 3750.

Lo que hace esta característica es capturar y guardar un pequeño archivo PCAP en el enrutador que puede descargar y analizar con Wireshark.

A pocos enlaces con detalles .


77
... y ESTO es exactamente el motivo por el que está bien cuando las personas publican y luego responden sus propias preguntas: porque a otros usuarios se les pide que ingresen y agreguen algo nuevo. Dulce.
Craig Constantine

Mientras estamos en eso, el ASA siempre ha tenido esta característica, utilizando el comando de captura . Fue heredado del PIX, que lo tenía desde 6.2 en adelante.
James Sneeringer

5

Me gustaría agregar ELAM en la mezcla. ELAM es compatible con PFC3 (6500, 7600).

Debe tener habilitado el 'servicio interno', pero es una característica bastante segura de ejecutar, lo he ejecutado en redes de producción y aún no he tenido un impacto negativo.

Esencialmente, lo que hace ELAM es mostrar lo que se envió para el procesamiento de búsqueda a PFC a través de DBUS (BUS de datos) y qué dio el PFC como resultado de búsqueda en RBUS (BUS de resultados).

  1. mostrar plat cap elam asic superman slot DFC / PFC_SLOT_YOU_WANT_TO_LOOK
  2. muestre plat cap elam trigger dbus ipv4 si ip_sa = 192.0.2.1
  3. mostrar inicio de plat cap elam
  4. mostrar datos de plat cap elam

Para los desencadenantes hay ayuda en línea, IP_SA == Dirección de origen de IP, IP_DA == Dirección de destino de IP, hay muchos otros disponibles. SI lo que desea verificar no está disponible, puede hacer coincidir datos + máscara para datos arbitrarios en el primer 64B.
El disparador arbitrario es un poco incómodo, pero puede salvar la vida, lo usará así:

muestre la plataforma captura elam dispare dbus otros si data = DATA1 DATA2 DATAn [MASK1 MASK2 MASKn]

Los datos comienzan desde DMAC. Digamos que queremos capturar la pila MPLS entrante de [0 1951], pero no nos interesan las direcciones MAC, podríamos hacer esto:

muestre la plataforma elam dispare dbus otros si datos = 0 0 0 0x88470000 0x00000079 0xF0000000 [0 0 0 0xffffffff 0xf000ffff 0xf0000000]


El resultado de ejemplo podría ser:

7600#show platform capture elam data
DBUS data:
SEQ_NUM                          [5] = 0x1D
QOS                              [3] = 1
QOS_TYPE                         [1] = 0
TYPE                             [4] = 0 [ETHERNET]
STATUS_BPDU                      [1] = 0
IPO                              [1] = 1
NO_ESTBLS                        [1] = 0
RBH                              [3] = b000   ! port-channel hash
CR                               [1] = 1      ! recirculated
TRUSTED                          [1] = 1
NOTIFY_IL                        [1] = 0
NOTIFY_NL                        [1] = 0
DISABLE_NL                       [1] = 0
DISABLE_IL                       [1] = 0
DONT_FWD                         [1] = 0
INDEX_DIRECT                     [1] = 0
DONT_LEARN                       [1] = 0
COND_LEARN                       [1] = 0
BUNDLE_BYPASS                    [1] = 0
QOS_TIC                          [1] = 1
INBAND                           [1] = 0
IGNORE_QOSO                      [1] = 0
IGNORE_QOSI                      [1] = 0
IGNORE_ACLO                      [1] = 0
IGNORE_ACLI                      [1] = 0
PORT_QOS                         [1] = 0
CACHE_CNTRL                      [2] = 0 [NORMAL]
VLAN                             [12] = 4086
SRC_FLOOD                        [1] = 0
SRC_INDEX                        [19] = 0xC0          ! divmod64(0xc0) = 3,0, add 1 to each, 4/1 == our physical port
LEN                              [16] = 102
FORMAT                           [2] = 0 [IP]
MPLS_EXP                         [3] = 0x0
REC                              [1] = 0
NO_STATS                         [1] = 0
VPN_INDEX                        [10] = 0x7F
PACKET_TYPE                      [3] = 0 [ETHERNET]
L3_PROTOCOL                      [4] = 0 [IPV4]
L3_PT                            [8] = 1 [ICMP]
MPLS_TTL                         [8] = 0
SRC_XTAG                         [4] = 0xF
DEST_XTAG                        [4] = 0xA
FF                               [1] = 0
MN                               [1] = 0
RF                               [1] = 1
SC                               [1] = 0
CARD_TYPE                        [4] = 0x0
DMAC                             = 8843.e1de.22c0
SMAC                             = 0000.0000.0000
IPVER                            [1] = 0 [IPV4]
IP_DF                            [1] = 1
IP_MF                            [1] = 0
IP_HDR_LEN                       [4] = 5
IP_TOS                           [8] = 0x0
IP_LEN                           [16] = 84
IP_HDR_VALID                     [1] = 1
IP_CHKSUM_VALID                  [1] = 1
IP_L4HDR_VALID                   [1] = 1
IP_OFFSET                        [13] = 0
IP_TTL                           [8] = 63
IP_CHKSUM                        [16] = 0xBCF1
IP_SA                            = x.x.x       ! to protect the guilty
IP_DA                            = y.y.y.y     ! to protect the guilty
ICMP_TYPE                        [8] = 0x8
ICMP_CODE                        [8] = 0x0
ICMP_DATA [104]
0000:  A0 8B 18 A5 00 39 46 35 BF 51 00 6F 3C            ".....9F5.Q.o<"
CRC                              [16] = 0x71B3

RBUS data:
SEQ_NUM                          [5] = 0x1D
CCC                              [3] = b100 [L3_RW]  ! normal L3_RW, we know it was not dropped, L2/mls policed etc
CAP1                             [1] = 0
CAP2                             [1] = 0
QOS                              [3] = 0
EGRESS                           [1] = 0
DT                               [1] = 0 [IP]
TL                               [1] = 0 [B32]
FLOOD                            [1] = 1
DEST_INDEX                       [19] = 0x3E8    ! same as VLAN, but not always    
VLAN                             [12] = 1000     ! you may need to check internal vlan     
RBH                              [3] = b111      ! again, port-channel hash
RDT                              [1] = 0
GENERIC                          [1] = 0
EXTRA_CICLE                      [1] = 0
FABRIC_PRIO                      [1] = 0
L2                               [1] = 0
FCS1                             [8] = 0x1
IP_TOS_VALID                     [1] = 1
IP_TOS_OFS                       [7] = 15
IP_TOS                           [8] = 0x0
IP_TTL_VALID                     [1] = 1
IP_TTL_OFS                       [7] = 22
IP_TTL                           [8] = 62
IP_CSUM_VALID                    [1] = 1
IP_CSUM_OFS                      [7] = 24
IP_CSUM                          [16] = 0xBDF1
DELTA_LEN                        [8] = 0
REWRITE_INFO
 i0  - replace bytes from ofs 0 to ofs 11 with seq 'D0 D0 FD 09 34 2D 88 43 E1 DE 22 C0'.   ! this is the actual L2 rewrite data, so you should obviously see DMAC and SMAC here 
FCS2                             [8] = 0x0
7600#

Casi todas las plataformas más grandes tienen este tipo de capturas de bajo nivel para paquetes de tránsito, que son excepcionalmente útiles cuando necesita verificar que HW está haciendo lo que dice la configuración, a veces hay defectos de software y hace algo más de lo esperado.
Sé que en GSR puedes ver el tránsito en la memoria, en Juniper Trio también hay una herramienta bastante buena para ello. Brocade puede hacerlo. Es bastante desconcertante que no estén documentados en las páginas de los proveedores.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.