Фильтрация протоколов EcoNAT Documentation / Фильтрация протоколов
Подсистема DPI способна избирательно обрабатывать трафик определённых протоколов. Для этого необходимо в настройках DPI-списка указать обрабатываемые протоколы в параметре protocols. Можно указать один или несколько протоколов (через пробел), а также при необходимости добавлять/удалять отдельные протоколы с помощью операторов += и -=.
Список поддерживаемых протоколов выводится командой show protocols all.
Для быстрого поиска протоколов по названию введите первые буквы названия после show protocols и нажмите клавишу Tab. При наличии нескольких вариантов будет выведен список совпадений. Если вариант один, то после нажатия клавиши Tab будет выведена аббревиатура протокола. Например:
EcoSGE:system.dpi# show protocols ss [TAB]
# There are several choices:
ssdp
ssh
ssl
sscopmce
ss
Для вывода описания определённого протокола введите его аббревиатуру после команды show protocols и нажмите клавишу Enter. Например:
EcoSGE:system.dpi# show protocols ssh
name ssh
full name Secure Shell
description Secure Shell (SSH), sometimes known as Secure Socket Shell, is a UNIX-based command interface and a protocol for obtaining secure access to a remote computer.
По каждому распознанному протоколу подсистема DPI ведёт подсчёт сессий, байтов и пакетов. Счётчики можно вывести в CLI или опросить по SNMP.
Для вывода счётчиков в CLI необходимо отправить команду show protocounters { all | diff } :
- с аргументом all команда покажет суммарные значения с момента запуска системы EcoSGE;
- с аргументом diff будут показаны только изменения за последнюю минуту.
Примеры вывода:
EcoSGE:# show protocounters all
Printing proto counters...
Core total, cr_dpi_total_base_bytes: 2028
Core total, cr_dpi_total_base_pkts: 21
Core total, cr_dpi_total_ip_bytes: 2028
Core total, cr_dpi_total_ip_pkts: 21
Core total, cr_dpi_total_tcp_bytes: 2028
Core total, cr_dpi_total_tcp_pkts: 21
Core total, cr_dpi_total_smpp_sessions: 1
Core total, cr_dpi_total_smpp_bytes: 1050
Core total, cr_dpi_total_smpp_pkts: 15
Core total, cr_dpi_total_imaps_sessions: 1
Core total, cr_dpi_total_imaps_bytes: 846
Core total, cr_dpi_total_imaps_pkts: 4
EcoSGE:# show protocounters diff
Printing proto counters diff...
Core total-diff, cr_dpi_total_base_bytes: 913
Core total-diff, cr_dpi_total_base_pkts: 9
Core total-diff, cr_dpi_total_ip_bytes: 913
Core total-diff, cr_dpi_total_ip_pkts: 9
Core total-diff, cr_dpi_total_tcp_bytes: 913
Core total-diff, cr_dpi_total_tcp_pkts: 9
Core total-diff, cr_dpi_total_smpp_bytes: 493
Core total-diff, cr_dpi_total_smpp_pkts: 6
Core total-diff, cr_dpi_total_imaps_bytes: 420
Core total-diff, cr_dpi_total_imaps_pkts: 3
Данные счётчики учитывают и исходящий, и входящий трафик. Вывод команд всегда упорядочен по убыванию количества байт.
Для опроса счётчиков по SNMP следует использовать шаблон запроса 1.3.6.1.4.1.45555.1.6.<a>.<b>.<c>, где:
<a> – определяет запрашиваемое значение:
- 0 – суммарное значение с момента запуска системы EcoSGE;
- 1 – изменение за последнюю минуту;
<b> – номер (id) протокола в MIB;
<c> – подсчитываемые единицы:
- 0 – сессии,
- 1 – байты,
- 2 – пакеты.
Пример SNMP-опроса счётчиков для протокола SMPP (ID 738):
snmpwalk -v2c -c public 192.168.5.2:161 1.3.6.1.4.1.45555.1.6.0.738
SNMPv2-SMI::enterprises.45555.1.6.1.738.0.0 = Counter64: 1
SNMPv2-SMI::enterprises.45555.1.6.1.738.1.0 = Counter64: 763
SNMPv2-SMI::enterprises.45555.1.6.1.738.2.0 = Counter64: 11
Если в SNMP Manager загружен MIB-файл счётчиков для протоколов, то в SNMP-ответах вместо OID будут указаны имена счётчиков. Пример:
snmpwalk -v2c -m Proto-MIB -c public 192.168.5.2:161 1.3.6.1.4.1.45555.1.6.0.738
Proto-MIB::econatTotalSmppSessions.0 = Counter64: 1
Proto-MIB::econatTotalSmppBytes.0 = Counter64: 763
Proto-MIB::econatTotalSmppPkts.0 = Counter64: 11
Все счётчики подсистемы DPI являются скалярными объектами в MIB, поэтому при опросе таких счётчиков по отдельности необходимо после OID указывать ".0". Пример запроса суммарного количества пакетов протокола SMPP:
snmpget -v2c -m Proto-MIB -c public 192.168.5.2:161 1.3.6.1.4.1.45555.1.6.0.738.2.0"
Proto-MIB::econatTotalSmppPkts.0 = Counter64: 11
Для сброса счётчиков необходимо отправить команду clear counters.
При распознавании какого-либо протокола по базе сигнатур подсистема DPI сохраняет уникальный набор данных об этом протоколе (5-tuple) в специальную таблицу – DPI flow table. Если в дальнейшем будет обнаружена попытка открытия сессии, у которой 5-tuple совпадает с сохранённым в таблице, то подсистема DPI уже по первому пакету определит протокол. Это оптимизирует производительность DPI.
Каждая запись 5-tuple хранится в таблице в течение фиксированного времени, которое нельзя изменить. Однако предусмотрена возможность принудительной очистки DPI flow table. Для этого необходимо отправить команду clear dpi_worker_flows. С данной командой связаны два счётчика:
- cr_dpi_worker_flush_try регистрирует каждую попытку очистки таблицы;
- cr_dpi_worker_flush регистрирует количество удалённых записей.