Функция Sniffer EcoNAT Documentation
В систему EcoSGE по отдельному запросу может быть добавлена функция Sniffer (сниффер) для передачи копии определённого трафика во внешнюю систему мониторинга и анализа. Данная функция использует протокол инкапсуляции TZSP.
Настройка функции Sniffer производится в ветке конфигурации system.sniffer, которая по умолчанию имеет следующий вид:
EcoSGE:system.sniffer# ls
disable
log_interface default
server_ip_and_port 0.0.0.0:0
ip_address 0.0.0.0/0
gateway 0.0.0.0
source_port 1088
permanent_sniffer off
hookpoint lan
snaplen 0
strip_eb_header on
per_session_pkt_count 0
acl none
aclv6 none
В таблице ниже дано описание параметров функции Sniffer.
Параметр | Описание |
---|---|
enable | disable | Включение/выключение функции |
log_interface | Интерфейс для отправки копии трафика во внешнюю систему:
Внимание! Следует учитывать, что MTU для интерфейса MNG всегда равен 1500, в отличие от интерфейса LOG, для которого MTU задаётся параметром l2mtu в ветке конфигурации system.nat_defaults. Поэтому копии пакетов на выходе из интерфейса MNG могут быть фрагментированными. |
server_ip_and_port | <IP-адрес>:<порт> внешнего сервера, принимающего копию трафика. Внимание! Для передачи копии трафика EcoSGE использует протокол TZSP. Стандартный порт назначения для данного протокола – 37008 |
ip_address | <IP-адрес>/<маска подсети> для интерфейса LOG. Данный параметр доступен только при log_interface default |
gateway | Адрес шлюза для интерфейса LOG. Данный параметр доступен только при log_interface default. Требуется в том случае, если сервер, указанный в параметре server_ip_and_port, не находится в подсети, указанной в параметре ip_address |
source_port | Номер порта источника для интерфейса LOG. По умолчанию 1088. Данный параметр доступен только при log_interface default. Если выбран интерфейс MNG (log_interface mng), то используется случайный порт. |
permanent_sniffer | Режим работы:
|
hookpoint | Точка перехвата трафика для копирования:
От выбора точки перехвата трафика зависит то, какой IP-адрес – локальный или глобальный – будет адресом источника в копиях исходящих пакетов и адресом назначения в копиях входящих пакетов (см. примеры 3 и 4 ниже) |
snaplen | Количество байтов оригинального пакета, которые будут переданы в копии. Диапазон значений: от 0 до 65535. По умолчанию 0 (копировать весь пакет) |
strip_eb_header | Когда EcoSGE работает в связке с EcoBalancer, последний добавляет в пакеты дополнительные служебные заголовки. При значении on (по умолчанию) сниффер удаляет такие заголовки, а при значении off копирует пакеты полностью. Данный параметр доступен при наличии опции Filter Control в программном обеспечении EcoSGE |
per_session_pkt_count | Количество копируемых пакетов из каждой сессии. По умолчанию 0 (без ограничения). Данный параметр доступен при наличии опции Accounting Log в программном обеспечении EcoSGE |
acl | ACL для трафика IPv4, к которому необходимо применять функцию Sniffer. По умолчанию задано значение none, при котором сниффер будет обрабатывать весь трафик IPv4 |
aclv6 | ACL для трафика IPv6, к которому необходимо применять функцию Sniffer. По умолчанию задано значение none, при котором сниффер будет обрабатывать весь трафик IPv6 |
Внимание! Особенности одновременного использования параметров acl и aclv6:
|
Для функции Sniffer предусмотрены следующие счётчики:
- cr_sniffer_try_send_tzsp – количество попыток отправки копий пакетов;
- cr_sniffer_send_tzsp – количество успешно отправленных копий пакетов;
- cr_sniffer_copy_mbuf_error – ошибки копирования пакетов в буфер;
- cr_sniffer_packet_data_enqueue_error – ошибки записи данных о пакете в буфер.
Пример 1. Ручное управление функцией Sniffer (permanent_sniffer off):
EcoSGE:system.sniffer# sniff
Starting sniffer, export to 192.168.5.3:37008
Running...
^C
Interrupted by user
Stopping...
Если Sniffer работает в фоновом режиме (permanent_sniffer on), то в ответ на команду sniff система сообщит, что Sniffer уже запущен:
EcoSGE:system.sniffer# sniff
Sniffer already running
Пример 2. Выполнение команды sniff local:
EcoSGE:system.sniffer# sniff local
Starting sniffer, export local
2023-08-30T15:01:27+00:00 UDP 172.16.1.1:53 > 192.168.1.1:53, length 542
2023-08-30T15:01:27+00:00 UDP 172.16.1.1:53 > 192.168.1.1:53, length 542
2023-08-30T15:01:27+00:00 UDP 172.16.1.1:53 > 192.168.1.1:53, length 542
2023-08-30T15:01:29+00:00 UDP [fd00::1]:53 > [aacc::1]:53, length 62
2023-08-30T15:01:29+00:00 UDP [fd00::1]:53 > [aacc::1]:53, length 62
2023-08-30T15:01:29+00:00 UDP [fd00::1]:53 > [aacc::1]:53, length 62
В примерах 3 и 4 ниже показана информация о копиях пакетов в зависимости от выбранной точки перехвата трафика. Пакеты передавались между локальным адресом 192.168.0.2 и внешним адресом 192.168.0.3 через устройство EcoSGE, на котором настроена трансляция в глобальный адрес 3.3.3.3.
Пример 3. Информация о копии пакета при hookpoint lan:
В вышеприведённом примере можно видеть, что адресом источника (Source) исходящих пакетов 1, 3, 4, 8, 9, 10 и адресом назначения (Destination) входящих пакетов 2, 5, 6, 7, 11 является локальный адрес 192.168.0.2.
Пример 4. Информация о копии пакета при hookpoint wan:
В вышеприведённом примере можно видеть, что адресом источника (Source) исходящих пакетов 1, 3, 4, 8, 9, 10 и адресом назначения (Destination) входящих пакетов 2, 5, 6, 7, 11 является глобальный адрес 3.3.3.3.
Предусмотрена возможность запуска дополнительных экземпляров сниффера вручную с параметрами, отличными от заданных в ветке конфигурации system.sniffer. Одновременно могут работать не более 8 снифферов, включая фоновый.
Общий синтаксис команды запуска сниффера имеет вид:
sniff [acl <aclname>] [src_ip <ip_address>] [dst_ip <ip_address>] [aclv6 <aclv6name>] [src_ipv6 <ipv6_address>] [dst_ipv6 <ipv6_address>] [runtime <number>] [pkt_count <number>] [hookpoint { wan | lan }] [per_session_pkt_count <number>] [snaplen <number>] [output <pcap_file_name>] [strip_eb_header { on | off }] [local]
Назначение параметров acl, aclv6, hookpoint, per_session_pkt_count, snaplen, strip_eb_header в команде то же, что и у одноимённых параметров в ветке конфигурации system.sniffer. Внимание! Если не указать эти параметры в команде, то они будут взяты из конфигурации.
Можно видеть, что команда ручного запуска сниффера может содержать ряд дополнительных параметров, которые отсутствуют в конфигурации. Их описание дано в таблице ниже.
Параметр команды | Описание |
---|---|
src_ip | Фильтр по IPv4-адресу источника для указанного acl. Можно указать один адрес, диапазон через дефис или подсеть |
dst_ip | Фильтр по IPv4-адресу назначения для указанного acl. Можно указать один адрес, диапазон через дефис или подсеть |
src_ipv6 | Фильтр по IPv6-адресу источника для указанного aclv6. Можно указать один адрес, диапазон через дефис или подсеть |
dst_ipv6 | Фильтр по IPv6-адресу источника для указанного aclv6. Можно указать один адрес, диапазон через дефис или подсеть |
runtime | Продолжительность работы в секундах. Если также задан параметр pkt_count, то сниффер завершит работу при выполнении любого из двух условий:
|
pkt_count | Общее количество пакетов, которое необходимо обработать. Если также задан параметр runtime, то сниффер завершит работу при выполнении любого из двух условий:
|
output | Позволяет записать информацию о трафике в локальный Pcap-файл в директории /log/. Файл будет содержать информацию об оригинальных пакетах без заголовков TZSP |
local | Если указан, то сниффер будет выводить в консоль информацию об обрабатываемых пакетах (см. пример 2 выше), но при этом не будет отправлять копии пакетов на внешний сервер |
В команде учитывается порядок указания параметров. Так, например, система не примет команду sniff local runtime 10 acl aclv4. В данном случае правильной будет команда sniff acl aclv4 runtime 60 local.