Wie kann ich den Datenverkehr auf Cisco IOS-Switches erfassen?

23

Um ein Problem bei der Client-Server-Kommunikation zu untersuchen, muss ich Pakete zur Analyse erfassen. Es ist jedoch nicht zulässig, einen Paketanalysator wie Wireshark oder tcpdump auf einem Client oder Server zu installieren. Der Client ist mit einem Catalyst 3560 und der Server mit einem Catalyst 3750-Switch verbunden.

Kann ich meinen Laptop an einen Switchport anschließen, um den Datenverkehr mit dem Packet Analyzer meines Laptops zu erfassen, und wie?

Stefan
quelle
Ich habe Brocade hier dieselbe Frage gestellt: networkengineering.stackexchange.com/questions/672/… Fühlt sich irgendwie komisch an ... :)
Benjamin A.
@BenjaminA. Groß! Vielen Dank für die Lösung für Brocade und das Hinzufügen des Links hier!
Stefan
Befindet sich in der Sitzung eine Konfiguration, mit der der aufzeichnende PC / Server weiterhin IP-Adressen von DHCP beziehen kann?
MickeyHR
Hat dir eine Antwort geholfen? In diesem Fall sollten Sie die Antwort akzeptieren, damit die Frage nicht für immer auftaucht und nach einer Antwort sucht. Alternativ können Sie auch Ihre eigene Antwort eingeben und annehmen.
Ron Maupin

Antworten:

34

Der Client-Switchport oder der Server-Switchport kann überwacht werden. Ein dritter Switchport kann als Spiegelport konfiguriert werden . Dies bedeutet, dass dieser Spiegelport Kopien aller Pakete auf dem entsprechenden ursprünglichen Port empfängt, während der ursprüngliche Datenverkehr nicht beeinträchtigt wird.

Beispiel für den Catalyst 3560:

  1. Konfigurationsmodus aufrufen:

    conf t
    
  2. Definieren Sie die Quelle und legen Sie die Sitzungsnummer fest:

    monitor session 1 source interface fa 0/24
    

    Hier kann die Sitzungsnummer zwischen 1 und 66 liegen. Sie können auch ein VLAN oder einen Ethernet-Kanal angeben. Außerdem sind Schnittstellenbereiche wie fa 0/25 - 26möglich und Schnittstellenlisten wie fa 0/24,fa 0/26, wenn Sie mehrere Clients gleichzeitig überwachen möchten. Durch Wiederholen des Befehls können Sie auch Ports hinzufügen oder mithilfe von entfernen no. Das Mischen von Ports und VLANs in derselben Sitzung ist nicht möglich. Eine weitere Einschränkung besteht darin, dass Sie keinen Zielport als Quellport verwenden können.

  3. Definieren Sie den Zielport:

    monitor session 1 destination interface gi 0/1
    

    Sie können einen normalen Port, aber kein VLAN verwenden. Ähnlich wie oben kann ein Zielport kein Quellport sein: Ein hier verwendeter Port kann entweder ein Quell- oder ein Zielport sein und nur eine Sitzung umfassen. Auch hier können Sie wie oben mehrere Ports angeben.

  4. Möglicherweise möchten Sie den exitKonfigurationsmodus und speichern Sie die Konfiguration.

  5. Sie können einen Blick auf Ihre definierte Sitzung werfen - hier mehrere Ports, wie oben beschrieben:

    #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
    

    Hier sehen Sie eine Kapselung - optional können Sie sie so einstellen, replicatedass die Kapselungsmethode der Quellschnittstelle repliziert wird, z. B. durch Hinzufügen encapsulation replicatenach der Quellschnittstelle. Darüber hinaus können Sie eine Richtung angeben ( tx, rx, both), Filter VLANs und vieles mehr. Die Ingress: DisabledLeitung bedeutet, dass der Switch keine Frames akzeptiert, die von Ihrem Aufnahmegerät an einem Zielport angezeigt werden. Weitere Informationen zu diesen Feinheiten sowie zu weiteren Einschränkungen und Standardeinstellungen finden Sie in der Befehlsreferenz der IOS-Version Ihres Switches.

Nachdem Sie den Quell- und Zielport konfiguriert haben, können Sie den Datenverkehr mit Ihrem Laptop erfassen, der mit dem Zielport verbunden ist, beispielsweise mit Wireshark.

Die Anzahl der Quell-Sessions kann begrenzt werden, zum Beispiel unterstützt der 3560 maximal 2.

Vergessen Sie nach der Erfassung nicht, diese Sitzungskonfiguration zu entfernen.

Stefan
quelle
1
Sie können die Monitorsitzung beibehalten und einfach den Link auf der Netzwerkkarte Ihres Host-Monitors deaktivieren. Pakete werden nicht erfasst und über einen ausgefallenen Link gesendet. Auf einem Windows-Server habe ich zwei Netzwerkkarten mit einer SPAN. Wenn ich nicht möchte, dass der Switch den Erfassungsaufwand übernimmt, gehe ich einfach zu den Netzwerkeigenschaften und deaktiviere die SPAN-NIC. (Normalerweise werden die Quellports geändert, aber der Zielport bleibt gleich, sodass ich weiß, dass ich in Zukunft wieder auf denselben Zielhost spiegeln werde.)
generalnetworkerror
Verwenden # no monitor session 1
Sie
17

Wenn Ihr Datenverkehr zufällig über einen Router geleitet wird, auf dem Cisco IOS 12.4 (20) T oder höher ausgeführt wird, können Sie auch die Funktion "Embedded Packet Capture" verwenden.

Diese Funktion ist auf Switch-Plattformen wie dem 3560 oder 3750 NICHT verfügbar.

Diese Funktion erfasst und speichert eine kleine PCAP-Datei auf dem Router, die Sie mit Wireshark herunterladen und analysieren können.

Ein paar Links mit Details .

Mike Marotta
quelle
7
... und DAS ist genau der Grund, warum es in Ordnung ist, wenn Leute ihre eigenen Fragen posten und dann beantworten: Weil andere Benutzer aufgefordert werden, sich einzuschalten und etwas Neues hinzuzufügen. Süss.
Craig Constantine
Während wir gerade dabei sind, hatte der ASA diese Funktion immer mit dem Befehl capture . Es wurde von der PIX geerbt, die es ab 6.2 hatte.
James Sneeringer
5

Ich möchte ELAM in die Mischung aufnehmen. ELAM wird von PFC3 (6500, 7600) unterstützt.

Sie müssen 'service internal' aktiviert haben, aber es ist eine ziemlich sichere Funktion, die ich in Produktionsnetzwerken verwendet habe und die noch keine negativen Auswirkungen hatte.

Im Wesentlichen zeigt ELAM Ihnen, was für eine Nachschlageverarbeitung über DBUS (Daten-BUS) an PFC gesendet wurde und was die PFC als Nachschlageergebnis in RBUS (Ergebnis-BUS) ausgegeben hat.

  1. zeige Plat Cap Elam Asic Superman Slot DFC / PFC_SLOT_YOU_WANT_TO_LOOK
  2. zeige plat cap elam trigger dbus ipv4 wenn ip_sa = 192.0.2.1
  3. Plat Cap Elam Start anzeigen
  4. Plat Cap Elam Daten anzeigen

Für die Trigger gibt es eine Online-Hilfe, IP_SA == IP-Quelladresse, IP_DA == IP-Zieladresse, viele andere sind verfügbar. WENN das, was Sie überprüfen möchten, nicht verfügbar ist, können Sie auf dem ersten 64B eine Daten- + Maskenübereinstimmung für beliebige Daten durchführen.
Der willkürliche Auslöser ist etwas umständlich, kann aber lebensrettender sein. Sie werden ihn folgendermaßen verwenden:

zeige Plattform Capture Elam Trigger dbus andere wenn Daten = DATA1 DATA2 DATAn [MASK1 MASK2 MASKn]

Daten starten von DMAC. Angenommen, wir möchten den eingehenden MPLS-Stapel von [0 1951] abfangen, aber die MAC-Adressen interessieren uns nicht. Wir könnten dies tun:

zeige Plattformerfassung elam Trigger dbus andere wenn Daten = 0 0 0 0x88470000 0x00000079 0xF0000000 [0 0 0 0xffffffff 0xf000ffff 0xf0000000]


Beispielausgabe könnte sein:

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#

Nahezu alle größeren Plattformen verfügen über diese Art von Low-Level-Erfassung für Transitpakete. Dies ist besonders nützlich, wenn Sie überprüfen müssen, ob HW die angegebenen Konfigurationsschritte ausführt, manchmal Softwarefehler vorliegen und etwas anderes als erwartet ausgeführt wird.
Ich weiß, dass man in GSR Transit im Speicher sehen kann, in Juniper Trio gibt es auch ein ganz nettes Werkzeug dafür. Brocade kann das. Es ist ziemlich verwunderlich, dass sie nicht auf Anbieterseiten dokumentiert sind.

ytti
quelle