Come posso catturare il traffico sugli switch Cisco IOS?


23

Per indagare su un problema nella comunicazione client-server, devo acquisire i pacchetti per l'analisi. Tuttavia, non è consentito installare un analizzatore di pacchetti, come Wireshark o tcpdump, sul client o sul server. Il client è collegato a un Catalyst 3560 e il server a uno switch Catalyst 3750.

Posso collegare il mio laptop a uno switchport per catturare il traffico con l'analizzatore di pacchetti del mio laptop e come?


Ho fatto la stessa domanda con risposta automatica per Brocade qui: networkengineering.stackexchange.com/questions/672/… Sembra un po 'strano ... :)
Benjamin A.

@BenjaminA. Grande! Grazie per la soluzione per Brocade e per l'aggiunta del link qui!
Stefan,

Esiste una configurazione nella sessione che consentirebbe al PC / server di acquisizione di ottenere ancora l'IP dal DHCP?
mickeyHR,

Qualche risposta ti è stata d'aiuto? in tal caso, dovresti accettare la risposta in modo che la domanda non continui a comparire per sempre, alla ricerca di una risposta. In alternativa, potresti fornire e accettare la tua risposta.
Ron Maupin

Risposte:


34

È possibile monitorare lo switchport client o lo switchport server. Un terzo switchport può essere configurato come una porta mirror . Ciò significa che questa porta mirror riceverà copie di tutti i pacchetti sulla porta originale corrispondente, mentre il traffico originale non sarà interessato.

Ad esempio, sul Catalyst 3560:

  1. Entra in modalità configurazione:

    conf t
    
  2. Definire la fonte e impostare il numero di sessione:

    monitor session 1 source interface fa 0/24
    

    Qui, il numero di sessione può essere compreso tra 1 e 66, è inoltre possibile specificare una VLAN o un canale Ethernet. Inoltre, fa 0/25 - 26sono possibili intervalli di interfaccia come quelli e un elenco di interfacce, ad esempio fa 0/24,fa 0/26, se si desidera monitorare più client contemporaneamente. Inoltre, ripetendo il comando è possibile aggiungere porte o rimuovere utilizzando no. La miscelazione di porte e VLAN non è possibile nella stessa sessione, un'altra limitazione è che non è possibile utilizzare una porta di destinazione come porta di origine.

  3. Definire la porta di destinazione:

    monitor session 1 destination interface gi 0/1
    

    È possibile utilizzare una porta normale, ma non una VLAN. Analogamente a quanto sopra, una porta di destinazione non può essere una porta di origine: una porta utilizzata qui può essere una porta di origine o di destinazione e solo di una sessione. Ancora una volta, è possibile specificare più porte come sopra.

  4. È possibile che si desideri exitattivare la modalità di configurazione e salvare la configurazione.

  5. Puoi dare un'occhiata alla sessione definita: qui più porte, provate come sopra:

    #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
    

    Qui puoi vedere un incapsulamento - facoltativamente puoi impostarlo su replicateper replicare il metodo di incapsulamento dell'interfaccia di origine, ad esempio aggiungendo encapsulation replicatedopo l'interfaccia di origine. Inoltre, è possibile specificare una direzione ( tx, rx, both), VLAN filtro e di più. La Ingress: Disabledlinea indica che lo switch non accetterà alcun frame presentato dal dispositivo di acquisizione su una porta di destinazione. Per tali dettagli più fini e per ulteriori restrizioni e impostazioni predefinite, dai un'occhiata al riferimento di comando della versione IOS del tuo switch.

Dopo aver configurato la porta di origine e di destinazione, è possibile acquisire il traffico utilizzando il proprio laptop collegato alla porta di destinazione, ad esempio con Wireshark.

Il numero di sessioni di origine può essere limitato, ad esempio 3560 supporta un massimo di 2.

Dopo l'acquisizione, non dimenticare di rimuovere questa configurazione di sessione.


1
È possibile lasciare la sessione del monitor in posizione e disabilitare semplicemente il collegamento sulla scheda NIC del monitor host. I pacchetti non verranno catturati e inviati a un link inattivo. Su un server Windows, ho due schede NIC con una chiamata SPAN. Quando non voglio che lo switch esegua l'overhead di acquisizione, vado semplicemente nelle proprietà di rete e disabilito la scheda di rete SPAN. (Di solito, le porte di origine vengono modificate, ma la porta di destinazione rimane la stessa, quindi so che eseguirò nuovamente il mirroring allo stesso host di destinazione in futuro.)
generalnetworkerror

Per disabilitare una sessione di monitoraggio utilizzare# no monitor session 1
con il

17

Se il tuo traffico passa attraverso un router con Cisco IOS 12.4 (20) T o superiore, un'altra possibilità è quella di utilizzare la funzione di acquisizione dei pacchetti incorporati.

Questa funzione NON è disponibile su piattaforme switch come 3560 o 3750.

Ciò che questa funzione fa è acquisire e salvare un piccolo file PCAP sul router che è possibile scaricare e analizzare con Wireshark.

A pochi collegamenti con i dettagli .


7
... e QUESTO è esattamente il motivo per cui le persone pubblicano e quindi rispondono alle proprie domande: va bene perché gli altri utenti sono invitati a salire e aggiungere qualcosa di nuovo. Dolce.
Craig Constantine,

Mentre ci siamo, l'ASA ha sempre avuto questa funzione, usando il comando capture . Fu ereditato dal PIX, che lo aveva dal 6.2 in poi.
James Sneeringer,

5

Vorrei aggiungere ELAM nel mix. ELAM è supportato su PFC3 (6500, 7600).

È necessario abilitare il "servizio interno", ma è una funzionalità abbastanza sicura da eseguire, l'ho gestito molto nelle reti di produzione e non ho ancora avuto un impatto negativo una volta.

In sostanza, ELAM mostra ciò che è stato inviato per l'elaborazione della ricerca a PFC tramite DBUS (Data BUS) e che cosa ha dato il PFC come risultato della ricerca in RBUS (Result BUS).

  1. mostra slot plat cap elam asic superman DFC / PFC_SLOT_YOU_WANT_TO_LOOK
  2. mostra innesco elam plat cap dbus ipv4 se ip_sa = 192.0.2.1
  3. mostra inizio elam plat cap
  4. mostra i dati elam di plat cap

Per i trigger c'è una guida in linea, IP_SA == Indirizzo IP di origine, IP_DA == Indirizzo IP di destinazione, molti altri sono disponibili. Se ciò che si desidera verificare non è disponibile, è possibile eseguire la corrispondenza dati + maschera per dati arbitrari sul primo 64B.
Il trigger arbitrario è un po 'imbarazzante ma può essere più sicuro, lo userai in questo modo:

mostra il trigger elam di acquisizione della piattaforma dbus altri se data = DATA1 DATA2 DATAn [MASK1 MASK2 MASKn]

I dati iniziano da DMAC. Quindi diciamo che vogliamo catturare stack MPLS in entrata di [0 1951], ma non ci importa degli indirizzi MAC, potremmo farlo:

mostra il trigger elam di acquisizione piattaforma dbus altri se dati = 0 0 0 0x88470000 0x00000079 0xF0000000 [0 0 0 0xffffffff 0xf000ffff 0xf0000000]


L'output di esempio potrebbe essere:

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#

Praticamente tutte le piattaforme più grandi hanno questo tipo di acquisizioni di basso livello per i pacchetti di transito, che sono eccezionalmente utili quando è necessario verificare che HW stia facendo ciò che dice la configurazione, a volte ci sono difetti di software e fa qualcosa di diverso dal previsto.
So che in GSR puoi vedere il transito in memoria, in Juniper Trio c'è anche uno strumento abbastanza carino per questo. Brocade può farlo. È piuttosto sconcertante che non siano documentati nelle pagine dei fornitori.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.