Cisco ASA/Troubleshooting

Материал из Xgu.ru

Перейти к: навигация, поиск
Автор: Наташа Самойленко

На этой странице описываются механизмы и команды, которые могут использоваться для поиска неисправностей при настройке Cisco ASA.

Основное внимание уделено использованию команд capture и packet-tracer:

  • capture — позволяет перехватывать трафик, который проходит через ASA для дальнейшего анализа,
  • packet-tracer — позволяет сгенерировать пакет и показать каким образом ASA его обрабатывает (порядок выполнения различных действий и результат).

Кроме того рассматриваются такие вопросы:

  • обработка пакетов ICMP,
  • настройка логирования,
  • просмотр настроек,
  • удаление настроек,
  • debug.


Содержание

[править] Capture

Топология, которая используется для примеров на этой странице

Команда capture позволяет перехватывать трафик, который проходит через ASA для дальнейшего анализа.

Icon-caution.gif

Так как для примера выбрана тестовая среда, то количество трафика передаваемого через ASA, небольшое. В реальной сети более предпочтительно будет задавать точные критерии для перехвата трафика.

[править] Синтаксис команды

Пример использования команды capture для перехвата трафика, который идёт через интерфейс inside (test -- имя для правила capture):

ASA1(config)# capture test interface inside

Параметры команды capture (некоторые параметры доступны не во всех версиях ОС):

  • access-list <acl-name> — перехватывать пакеты, которые совпадают с указанным ACL;
  • buffer <buffer-size> — настроить размер буфера (в байтах) в который помещаются перехваченные пакеты. По умолчанию размер буфера 512 Kb;
  • circular-buffer — после заполнения буфера заполнять его сначала заново. По умолчанию буфер не перезаписывается;
  • ethernet-type <type> — перехватывать Ethernet-пакеты определенного типа. По умолчанию IP;
  • headers-only — перехватывать только заголовки 2, 3 и 4 уровней без данных. Доступен с версии 8.2;
  • interface <intf-name> — перехватывать пакеты на указанном интерфейсе. Могут быть указаны такие интерфейсы:
    • имя настроенного интерфейса,
    • asa_dataplane,
    • cplane;
  • match — перехватывать пакеты совпадающие с указанными далее критериями (критерии аналогичны синтаксису ACL);
  • packet-length <length> — максимальный размер данных, который будет перехвачен из каждого пакета. По умолчанию 68 байт, возможные значения от 14 до 9216 байт;
  • real-time — отображать перехватываемые пакеты в реальном времени. Доступен с версии 8.2;
  • trace [trace-count <count>] — позволяет отслеживать каким образом ASA обрабатывает пакеты внутри себя (если этот параметр не указан при задании правила, то при просмотре информации опция trace не будет отображать как ASA обрабатывала пакет). Параметр trace-count позволяет задать максимальное количество пакетов, которые будут отслеживаться. По умолчанию 50, диапазон значений от 1 до 1000;
  • type — перехватывать пакеты указанного типа:
    • asp-drop — перехватывать пакеты отброшенные по определенной причине,
    • isakmp — перехватывать зашифрованные и расшифрованные пакеты ISAKMP,
    • raw-data — перехватывать входящие и исходящие пакеты на одном или боле интерфейсах. Значение по умолчанию,
    • tls-proxy — перехватывать зашифрованные входящие и исходящие данные от TLS proxy на одном или более интерфейсах. Доступен с версии 8.2,
    • webvpn user <username> — перехватывать пакеты WebVPN для конкретного пользователя.

[править] Просмотр информации

Правила capture не сохраняются в конфигурации ASA. Посмотреть настроенные правила можно командой show capture.

Кроме просмотра информации непосредственно в командной строке, функция capture позволяет просматривать перехваченную информацию с помощью браузера или анализатора трафика.

Для того чтобы просмотреть информацию с помощью браузера необходимо зайти по ссылке:

https://192.168.1.1/admin/capture/web_cap

Чтобы сохранить файл и затем открыть его с помощью анализатора трафика:

https://192.168.1.1/admin/capture/web_cap/pcap

Note-icon.gif

В зависимости от того какой браузер используется и какие алгоритмы поддерживает ASA, могут возникать проблемы с просмотром указанных страниц. Ошибка при открытии страницы будет в явном виде сообщать о несоответствии используемых алгоритмов.

Файл capture можно скопировать, например, на TFTP-сервер:

ASA1(config)# copy /pcap capture:web_cap tftp                        

Source capture name [web_cap]? 

Address or name of remote host []? 192.168.25.254

Destination filename [web_cap]? 
!!!!
66 packets copied in 0.20 secs

Параметр /pcap опциональный, он используется если файл будет просматриваться с помощью анализатора трафика, например, Wireshark.

[править] Параметры просмотра

При просмотре перехваченных пакетов, можно использовать фильтры в самой команде show capture.

Просмотр пакетов, которые были перехвачены конкретным правилом:

ASA1(config)# sh capture <capture-name>

Параметры команды show capture <capture-name>:

  • access-list <acl-name> — показывать пакеты, которые совпадают с указанным ACL;
  • count <number> — показывать указанное количество пакетов;
  • decode — показывать decode information для каждого пакета;
  • detail — показывать больше информации для каждого пакета;
  • dump — показывать шестнадцатеричный dump для каждого пакета;
  • packet-number <number> — показать пакет с указанным номером;
  • trace — показать расширенную информацию об обработке пакеты внутри ASA (если этот параметр не указан при задании правила, то при просмотре информации опция trace не будет отображать как ASA обрабатывала пакет).

Note-icon.gif

В некоторых случаях команда show capture с параметрами count и packet-number отрабатывает некорректно и отображает не указанные пакеты, а все пакеты в capture или их часть. Очистка capture и повторная генерация трафика, как правило, помогают решить это. Закономерность такого поведения пока не удалось установить.

[править] Примеры просмотра информации в командной строке

Просмотр настроенных правил:

ASA1(config)# sh capture 
capture cap_icmp type raw-data access-list ICMP interface outside [Capturing - 0 bytes] 
capture cap_inside type raw-data interface inside [Capturing - 0 bytes] 

Note-icon.gif

Правила capture в процессе демонстрации вывода команд очищались, поэтому между различными командами вывод может не соответствовать.

Просмотр пакетов перехваченных правилом cap_inside, которое перехватывает весь трафик проходящий через интерфейс inside:

ASA1(config)# sh capture cap_inside

14 packets captured

   1: 14:46:11.080623 192.168.1.10 > 192.168.3.10: icmp: echo request 
   2: 14:46:11.083247 192.168.3.10 > 192.168.1.10: icmp: echo reply 
   3: 14:46:12.080638 192.168.1.10 > 192.168.3.10: icmp: echo request 
   4: 14:46:12.081309 192.168.3.10 > 192.168.1.10: icmp: echo reply 
   5: 14:46:31.081569 192.168.1.10.58226 > 192.168.3.10.80: S 4052042955:4052042955(0) win 65535 <mss 1460,nop,wscale 0, 
   6: 14:46:31.081676 192.168.3.10.80 > 192.168.1.10.58226: R 0:0(0) ack 4052042956 win 65535 
   7: 14:46:38.426171 0.0.0.0.68 > 255.255.255.255.67:  udp 300 
   8: 14:46:39.543947 0.0.0.0.68 > 255.255.255.255.67:  udp 300 
   9: 14:46:41.782857 0.0.0.0.68 > 255.255.255.255.67:  udp 300 
  10: 14:46:44.746955 192.168.1.10.58227 > 192.168.3.10.80: S 416086651:416086651(0) win 65535 <mss 1460,nop,wscale 0,no 
  11: 14:46:44.747062 192.168.3.10.80 > 192.168.1.10.58227: R 0:0(0) ack 416086652 win 65535 
  12: 14:46:45.322950 192.168.1.10.58228 > 192.168.3.10.80: S 787702359:787702359(0) win 65535 <mss 1460,nop,wscale 0,no 
  13: 14:46:45.323042 192.168.3.10.80 > 192.168.1.10.58228: R 0:0(0) ack 787702360 win 65535 
  14: 14:46:46.440452 0.0.0.0.68 > 255.255.255.255.67:  udp 300 
14 packets shown

Можно создать ACL и использовать его как фильтр для просмотра информации. Например, ACL ICMP используется для того чтобы просмотреть только ICMP-пакеты перехваченные на интерфейсе inside:

ASA1(config)# capture cap_inside interface inside
ASA1(config)# access-list ICMP extended permit icmp any any 
ASA1(config)# sh capture cap_inside access-list ICMP

33 packets captured

   1: 14:46:11.080623 192.168.1.10 > 192.168.3.10: icmp: echo request 
   2: 14:46:11.083247 192.168.3.10 > 192.168.1.10: icmp: echo reply 
   3: 14:46:12.080638 192.168.1.10 > 192.168.3.10: icmp: echo request 
   4: 14:46:12.081309 192.168.3.10 > 192.168.1.10: icmp: echo reply 
  30: 14:49:38.825610 192.168.1.10 > 192.168.3.10: icmp: echo request 
  31: 14:49:38.840853 192.168.3.10 > 192.168.1.10: icmp: echo reply 
  32: 14:49:39.825610 192.168.1.10 > 192.168.3.10: icmp: echo request 
  33: 14:49:39.826281 192.168.3.10 > 192.168.1.10: icmp: echo reply 
8 packets shown

Посмотреть первые 5 перехваченных пакетов:

ASA1(config)# sh capture cap_inside count 5

10 packets captured

   1: 15:03:16.716881 arp who-has 192.168.1.1 tell 192.168.1.10 
   2: 15:03:16.716942 arp reply 192.168.1.1 is-at 0:1b:d5:54:63:88 
   3: 15:03:16.717034 192.168.1.10 > 192.168.3.10: icmp: echo request 
   4: 15:03:16.719002 192.168.3.10 > 192.168.1.10: icmp: echo reply 
   5: 15:03:17.716851 192.168.1.10 > 192.168.3.10: icmp: echo request 
5 packets shown

Посмотреть более подробную информацию о втором перехваченном пакете:

ASA1(config)# sh capture cap_inside packet-number 2 detail 

18 packets captured

   2: 15:03:16.716942 001b.d554.6388 0019.e337.46a0 0x0806 42: arp reply 192.168.1.1 is-at 0:1b:d5:54:63:88 
1 packet shown

Посмотреть информацию о четвертом перехваченном пакете в виде шестнадцатеричного dump:

ASA1(config)# sh capture cap_inside packet-number 4 dump       

20 packets captured

   4: 15:03:16.719002 192.168.3.10 > 192.168.1.10: icmp: echo reply
0x0000   4500 0054 0023 0000 3f01 f621 c0a8 030a        E..T.#..?..!....
0x0010   c0a8 010a 0000 2c9e ff08 0000 a169 1e4b        ......,......i.K
0x0020   1ba1 0e00 0809 0a0b 0c0d 0e0f 1011 1213        ................
0x0030   1415 1617 1819 1a1b 1c1d 1e1f 2021 2223        ............ !"#
0x0040   2425 2627 2829 2a2b 2c2d 2e2f 3031 3233        $%&'()*+,-./0123
0x0050   3435 3637                                      4567 
1 packet shown

Посмотреть информацию о том как ASA обрабатывала первый перехваченный пакет внутри себя (правило cap_inside было задано с параметром trace):


[править] Пример просмотра информации в браузере

Для того чтобы просмотреть информацию с помощью браузера необходимо зайти по ссылке:

https://192.168.1.1/admin/capture/web_cap

capture web.png

[править] Пример просмотра информации в Wireshark

Чтобы сохранить файл и затем открыть его с помощью анализатора трафика:

https://192.168.1.1/admin/capture/web_cap/pcap

capture wireshark.png

[править] Удаление перехваченного трафика

Удаление трафика перехваченного правилом test:

ASA1(config)# clear capture test 

[править] Удаление правил capture

Удалить полностью правило capture:

ASA1(config)# no capture test

[править] Примеры использования

[править] HTTP-трафик с inhost на dmzhost

Например, необходимо подробнее проанализировать HTTP-трафик от хоста inhost к хосту dmzhost.

Для указания какой трафик необходимо перехватить будет использоваться ACL. Так как необходимо перехватить трафик в двух направлениях, то в ACL два правила:

ASA1(config)# access-list web extended permit tcp host 192.168.1.10 host 192.168.2.10 eq www 
ASA1(config)# access-list web extended permit tcp host 192.168.2.10 eq www host 192.168.1.10 

Правило capture создается с учётом того, что далее необходимо будет отследить порядок обработки трафика внутри ASA (параметр trace):

ASA1(config)# capture web_cap access-list web interface inside trace 

Просмотр количества трафика перехваченного правилом:

ASA1(config)# sh capture 
capture web_cap type raw-data access-list web trace interface inside [Capturing - 22010 bytes] 

Пакеты перехваченные правилом:

ASA1(config)# sh capture web_cap                      

75 packets captured

   1: 15:59:51.054226 192.168.1.10.58364 > 192.168.2.10.80: S 2544769489:2544769489(0) win 65535 <mss 1460,nop,wscale 0, 
   2: 15:59:51.055005 192.168.2.10.80 > 192.168.1.10.58364: S 408641216:408641216(0) ack 2544769490 win 8192 <mss 512,no 
   3: 15:59:51.055111 192.168.1.10.58364 > 192.168.2.10.80: . ack 408641217 win 65535 <nop,nop,timestamp 184568469 42698 
   4: 15:59:51.076000 192.168.1.10.58364 > 192.168.2.10.80: P 2544769490:2544769738(248) ack 408641217 win 65535 <nop,no 
   5: 15:59:51.078304 192.168.2.10.80 > 192.168.1.10.58364: . ack 2544769738 win 8192 <nop,nop,timestamp 42698 184568469 
   6: 15:59:51.079143 192.168.2.10.80 > 192.168.1.10.58364: P 408641217:408641340(123) ack 2544769738 win 8192 <nop,nop, 
   7: 15:59:51.079265 192.168.1.10.58364 > 192.168.2.10.80: . ack 408641340 win 65535 <nop,nop,timestamp 184568469 42698 
   8: 15:59:51.279328 192.168.1.10.58365 > 192.168.2.10.80: S 1026544276:1026544276(0) win 65535 <mss 1460,nop,wscale 0, 
   9: 15:59:51.279801 192.168.1.10.58366 > 192.168.2.10.80: S 378730474:378730474(0) win 65535 <mss 1460,nop,wscale 0,no 
  10: 15:59:51.280136 192.168.2.10.80 > 192.168.1.10.58365: S 245503144:245503144(0) ack 1026544277 win 8192 <mss 512,no 
  11: 15:59:51.280243 192.168.1.10.58365 > 192.168.2.10.80: . ack 245503145 win 65535 <nop,nop,timestamp 184568469 42698 
  12: 15:59:51.280335 192.168.1.10.58365 > 192.168.2.10.80: P 1026544277:1026544731(454) ack 245503145 win 65535 <nop,no 
  13: 15:59:51.280411 192.168.1.10.58367 > 192.168.2.10.80: S 1755707239:1755707239(0) win 65535 <mss 1460,nop,wscale 0, 
  14: 15:59:51.281021 192.168.1.10.58368 > 192.168.2.10.80: S 584614813:584614813(0) win 65535 <mss 1460,nop,wscale 0,no 
  15: 15:59:51.283432 192.168.2.10.80 > 192.168.1.10.58366: S 4160183756:4160183756(0) ack 378730475 win 8192 <mss 512,n 
  16: 15:59:51.283554 192.168.1.10.58366 > 192.168.2.10.80: . ack 4160183757 win 65535 <nop,nop,timestamp 184568469 4269 
  17: 15:59:51.283615 192.168.1.10.58366 > 192.168.2.10.80: P 378730475:378730925(450) ack 4160183757 win 65535 <nop,nop 
  18: 15:59:51.283676 192.168.2.10.80 > 192.168.1.10.58365: . ack 1026544731 win 8192 <nop,nop,timestamp 42698 184568469 
  19: 15:59:51.283936 192.168.2.10.80 > 192.168.1.10.58365: . 245503145:245503645(500) ack 1026544731 win 8192 <nop,nop, 
  20: 15:59:51.284119 192.168.2.10.80 > 192.168.1.10.58365: . 245503645:245504145(500) ack 1026544731 win 8192 <nop,nop, 
  21: 15:59:51.284210 192.168.1.10.58365 > 192.168.2.10.80: . ack 245504145 win 65500 <nop,nop,timestamp 184568469 42698 
  22: 15:59:51.287414 192.168.2.10.80 > 192.168.1.10.58367: S 4286231431:4286231431(0) ack 1755707240 win 8192 <mss 512, 

Показать 5 пакетов начиная с 10го:

ASA1(config)# sh capture web_cap packet-number 10 count 5

20 packets captured

  10: 16:03:00.100306 192.168.2.10.80 > 192.168.1.10.58372: . 1180313251:1180313751(500) ack 1904325656 win 8192 <nop,no 
  11: 16:03:00.100489 192.168.2.10.80 > 192.168.1.10.58372: P 1180313751:1180313885(134) ack 1904325656 win 8192 <nop,no 
  12: 16:03:00.100565 192.168.1.10.58372 > 192.168.2.10.80: . ack 1180313885 win 65535 <nop,nop,timestamp 184568847 4307 
  13: 16:03:00.283020 192.168.1.10.58372 > 192.168.2.10.80: P 1904325656:1904325917(261) ack 1180313885 win 65535 <nop,n 
  14: 16:03:00.285690 192.168.2.10.80 > 192.168.1.10.58372: . ack 1904325917 win 8192 <nop,nop,timestamp 43076 184568847 
5 packets shown

[править] Packet tracer

Команда packet-tracer позволяет проверить как ASA обработает пакет не генерируя при этом реальный трафик с соответствующих хостов. ASA сама создает пакет и пропускает его через себя. Вывод команды аналогичен выводу команды show capture с параметром trace (при создании правила capture тоже должен быть указан параметр trace).

В результате выполнения команды будет отображен порядок обработки указанного пакета внутри ASA и результат обработки.

Note-icon.gif

Не стоит путать утилиту с одноименным симулятором сети Cisco Packet Tracer.

В этом разделе описывается утилита ASA packet-tracer. Команда появилась в версии 7.2(1) и доступна на PIX и ASA.

Capture позволяет перехватить трафик проходящий через ASA. Однако, при тестировании настроек или поиске неисправностей не всегда есть возможность или не всегда удобно для проверки генерировать соответствующий трафик через ASA.

При поиске неисправностей packet tracer один из самых удобных инструментов. Он не разрешит ситуации с какими-то неправильными настройками на других устройствах, но, по крайней мере, позволяет проверить пройдет ли пакет через ASA и, если нет, то почему он был отброшен.

Так как packet-tracer генерирует указанный пакет, то информацию о нём можно посмотреть в различной статистике, счётчиках, таблицах трансляции. Например, если необходимо проверить работу ACL, то packet-tracer покажет прошел трафик или нет и, кроме того, в соответствующем правиле изменятся счетчики ACL в команде show access-list.

Кроме того, команда packet-tracer может использоваться в связке с capture. Даже если при перехвате трафика не использовался параметр trace, с помощью packet-tracer можно получить аналогичный вывод для реального пакета.

Note-icon.gif

Утилита packet tracer доступна и в веб-интерфейсе ASDM.

[