Як я можу зафіксувати трафік на комутаторах Cisco IOS?


23

Для дослідження проблеми у зв'язку з клієнтом до сервера мені потрібно взяти пакети для аналізу. Однак заборонено встановлювати аналізатор пакетів, наприклад Wireshark або tcpdump, на клієнт або сервер. Клієнт підключений до Catalyst 3560, а сервер - до комутатора Catalyst 3750.

Чи можу я підключити свій ноутбук до комутатора для збору трафіку за допомогою аналізатора пакетів ноутбука та як?


Я зробив те саме запитання на відповідь для Brocade тут: networkengineering.stackexchange.com/questions/672/… Відчуває себе дивним ... :)
Бенджамін А.

@BenjaminA. Чудово! Дякуємо за рішення для Brocade та додали посилання тут!
Стефан

Чи є конфігурація на сеансі, яка б дозволила захоплюючому ПК / серверу все ж підтримувати IP від ​​DHCP?
mickeyHR

Чи допомогла вам якась відповідь? якщо так, то слід прийняти відповідь, щоб питання не з’являлося вічно, шукаючи відповідь. Крім того, ви можете надати та прийняти власну відповідь.
Рон Моупін

Відповіді:


34

Клієнтський перемикач або серверний комутатор можуть контролюватися. Третій перемикач може бути налаштований як дзеркальний порт . Це означає, що цей дзеркальний порт отримає копії всіх пакетів на відповідному оригінальному порту, тоді як на оригінальний трафік це не вплине.

Наприклад, на Catalyst 3560:

  1. Введіть режим конфігурації:

    conf t
    
  2. Визначте джерело та встановіть номер сеансу:

    monitor session 1 source interface fa 0/24
    

    Тут номер сеансу може бути від 1 до 66, ви також можете вказати VLAN або канал Ethernet. Також fa 0/25 - 26можливі діапазони інтерфейсів, такі як можливий, і список інтерфейсів, наприклад fa 0/24,fa 0/26, якщо ви хочете контролювати декілька клієнтів одночасно. Також, повторивши команду, ви можете додати порти або видалити за допомогою no. Змішування портів та VLAN неможливо в одному сеансі. Ще одне обмеження полягає в тому, що ви не можете використовувати порт призначення як порт джерела.

  3. Визначте порт призначення:

    monitor session 1 destination interface gi 0/1
    

    Ви можете використовувати звичайний порт, але не VLAN. Як і вище, порт призначення не може бути джерелом порту: порт, який використовується тут, може бути або джерелом, або портом призначення, і лише одним сеансом. Знову ж таки, ви можете вказати кілька портів, як вище.

  4. Ви можете exitскористатися режимом конфігурації та зберегти його.

  5. Ви можете ознайомитись із визначеним сеансом - тут декілька портів, спробували як вище:

    #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
    

    Тут ви можете побачити інкапсуляцію - за бажанням ви можете встановити її replicateдля реплікації методу інкапсуляції вихідного інтерфейсу, наприклад, додавання encapsulation replicateпісля інтерфейсу джерела. Крім того, ви можете вказати напрямок ( tx, rx, both), фільтр VLAN , і багато іншого. В Ingress: Disabledкошти лінії , що перемикач не братиме яку - або рамки , представлену їй пристрій захоплення на порт призначення. Для отримання більш тонких деталей, а також для подальших обмежень та налаштувань за замовчуванням ознайомтеся з посиланням на команду версії IOS вашого комутатора.

Після налаштування джерела та порту призначення ви можете зафіксувати трафік за допомогою ноутбука, підключеного до порту призначення, наприклад за допомогою Wireshark.

Кількість джерел сеансів може бути обмежена, наприклад, 3560 підтримує максимум 2.

Після захоплення не забудьте видалити цю конфігурацію сеансу.


1
Ви можете залишити сеанс монітора на місці і просто відключити посилання в NIC монітора вашого хоста. Пакети не будуть захоплені і не надсилаються вниз по посиланню посилання. На сервері Windows у мене є подвійні NIC з одним з назвою SPAN. Коли я не хочу, щоб комутатор здійснював захоплення накладних витрат, я просто переходжу до властивостей мережі та відключив SPAN NIC. (Зазвичай порти джерела змінюються, але порт призначення залишається тим самим, тому я знаю, що в майбутньому я знову збираюся відобразити той самий хост призначення.)
generalnetworkerror

Щоб відключити використання монітора сеансу# no monitor session 1
wimh

17

Якщо трафік проходить через маршрутизатор, що працює під керуванням Cisco IOS 12.4 (20) T або більше, інша можливість полягає у використанні функції вбудованого захоплення пакетів.

Ця функція НЕ доступна на платформах комутації, як 3560 або 3750.

Ця функція полягає в захопленні та збереженні невеликого файлу PCAP на маршрутизаторі, який ви можете завантажувати та аналізувати за допомогою Wireshark.

Через кілька посилань з докладними .


7
... А це саме тому, що просто чудово, коли люди публікують, а потім відповідають на власні запитання: Тому що інші користувачі пропонують ввійти та додати щось нове. Солодке.
Крейг Костянтин

Поки ми працюємо, ASA завжди мав цю функцію, використовуючи команду захоплення . Він був успадкований від PIX, який мав його від 6.2.
James Sneeringer

5

Я хотів би додати ELAM в суміш. ELAM підтримується на PFC3 (6500, 7600).

У вас повинен бути включений "внутрішній сервіс", але це досить безпечна функція, я працював у виробничих мережах і ще не раз зазнавав негативного впливу.

По суті, те, що робить ELAM, це показує вам, що було надіслано для обробки пошуку на PFC через DBUS (BUS BUS) і що PFC дало як результат пошуку в RBUS (Результат BUS).

  1. показати платівку elam asic слот для супермена DFC / PFC_SLOT_YOU_WANT_TO_LOOK
  2. покажіть plat cap elam тригер dbus ipv4, якщо ip_sa = 192.0.2.1
  3. покажіть платну шапку Елам Старт
  4. показати дані про елі-мату

Для тригерів є онлайн-довідка, IP_SA == IP-адреса джерела, IP_DA == IP адреса призначення, багато інших доступних. Якщо те, що ви хочете перевірити, недоступне, ви можете зробити відповідність даних + маску для довільних даних на першій 64B.
Довільний тригер трохи незручний, але може бути безпечним, ви будете використовувати його так:

показати захоплення платформи elam тригер dbus інші, якщо дані = DATA1 DATA2 DATAn [MASK1 MASK2 MASKn]

Дані починаються з DMAC. Отже, скажімо, ми хочемо знайти вхідний стек MPLS [0 1951], але нас не хвилює MAC-адреси, ми могли б це зробити:

покажіть захоплення платформи elam тригер dbus інші, якщо дані = 0 0 0 0x88470000 0x00000079 0xF0000000 [0 0 0 0xffffffff 0xf000ffff 0xf0000000]


Приклад виведення може бути:

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#

Насправді всі більші платформи мають цей тип низькорівневих захоплень для транзитних пакетів, які є надзвичайно корисними, коли потрібно перевірити, чи HW виконує те, що говорить конфігурація, іноді є дефекти програмного забезпечення, і це робить щось інше, ніж очікувалося.
Я знаю, що в GSR ви можете бачити транзит в пам'яті, в Juniper Trio є досить хороший інструмент для цього. Брокат може це зробити. Це зовсім неприємно, що вони не зафіксовані на сторінках постачальників.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.