Трассировка трафика по IP [Документация VAS Experts]

Трассировка трафика по IP

Трассировка позволяет записать детальный лог обработки трафика fastDPI для конкретного IP-адреса, где IP-адресом может быть IP абонента или IP хоста. Это полезно при диагностике проблем с классификацией, применением правил или маршрутизацией трафика через СКАТ.

Перед началом работы

Трассировку рекомендуется выполнять для каждого IP по одному. Сначала сделайте трассировку для одного IP, остановите её, сохраните файлы и только затем повторите процедуру для следующего IP — так проще сопоставить лог с конкретным IP адресом.

Включить трассировку можно двумя способами:

  • через файл конфигурации fastdpi.conf — значение сохраняется после последующих service fastdpi reload;
  • через CLI — значение действует до ближайшего reload.

Перед тем как повторять процедуру для следующего IP адреса, рекомендуется сделать бэкап файлов fastdpi_slave_*.log текущего трейса в отдельное место — иначе новые записи добавятся к уже существующим и смешаются с ними.

Очистка лога:

truncate -s0 /var/log/dpi/fastdpi_slave_*.log
Если вы включили запись трассировки, но в логе ничего нет, возможные причины:
  1. Параметр trace_ip не применился — см. подраздел «Проверка применения параметра» для выбранного способа.
  2. Трафик данного IP не проходит через СКАТ.
  3. Файлы логов удалили и создали заново вручную. Если пересоздать fastdpi_slave_*.log без перезапуска СКАТа, трассировка в них записываться не будет. Очищать лог нужно командой truncate.

Трассировка через файл конфигурации

Включение

Порядок действий через fastdpi.conf:

  1. Открыть файл конфигурации /etc/dpi/fastdpi.conf.
  2. Добавить параметр trace_ip=1.1.1.1, где 1.1.1.1 — IP-адрес, по которому нужно записать трассировку.
    Можно указать до двух IP-адресов через запятую без пробелов, например: trace_ip=1.1.1.1,2.2.2.2. Если указать больше двух адресов, fastDPI выдаст ошибку и применит только первые два из списка.
  3. Применить изменения командой service fastdpi reload.
    Изменения в конфигурации применятся без остановки трафика.
    После применения fastDPI начнёт пошагово записывать лог обработки трафика указанного IP-адреса в /var/log/dpi/fastdpi_slave_*.log.

Выключение

  1. Закомментировать или удалить строку trace_ip=1.1.1.1 в /etc/dpi/fastdpi.conf.
  2. Применить изменения командой service fastdpi reload.

Проверка применения параметра

После каждого service fastdpi reload в файл /var/log/dpi/fastdpi_alert.log сохраняется список параметров и их значения после применения:

cat /var/log/dpi/fastdpi_alert.log | grep trace_ip
[INFO    ][2026/09/25-11:27:03:895457][0x7f322f378400] Option 'trace_ip' changed: '' -> '1.1.1.1,2.2.2.2'
                trace_ip                 : 1.1.1.1,2.2.2.2
                trace_ipv6               : null
                plc_trace_ip             : null
                auth_trace_ip            : null

Действующее значение также можно проверить командой fdpi_cli dpi config get trace_ip.

Распространённая причина непринятия параметра — вместе с trace_ip были изменены «холодные» параметры fastdpi.conf, требующие полного restart вместо reload.

Трассировка через CLI

Включение

Через CLI трассировку можно включить без изменения fastdpi.conf. Значение, заданное через CLI, в файл конфигурации не сохраняется и сбрасывается при ближайшем service fastdpi reload.

Для одного IP-адреса:

fdpi_cli dpi config set trace_ip=1.1.1.1

Для двух IP-адресов:

fdpi_cli dpi config set trace_ip=1.1.1.1,2.2.2.2

Если указать больше двух адресов, команда вернёт ошибку, но первые два адреса из списка всё равно будут применены.

Выключение

Выполните команду с пустым значением:

fdpi_cli dpi config set trace_ip=

Трассировку, включённую через CLI, также сбросит service fastdpi reload.

Если trace_ip задан в fastdpi.conf, команда fdpi_cli dpi config set trace_ip= выключит трассировку только до ближайшего reload — после него значение снова будет взято из файла. Чтобы выключить трассировку окончательно, удалите параметр из fastdpi.conf.

Проверка применения параметра

Выполните команду:

fdpi_cli dpi config get trace_ip

Изменение параметра через CLI также фиксируется в /var/log/dpi/fastdpi_alert.log — так же, как при изменении через fastdpi.conf.

Поиск по логу трассировки

Создается по одному файлу fastdpi_slave на каждый обрабатывающий поток и записи по IP могут оказаться в любом из них.

Пример поиска: grep 1.1.1.1 /var/log/dpi/fastdpi_slave_*.log

Пример лога трассировки

Лог трассировки сохраняется в файлы /var/log/dpi/fastdpi_slave_*.log.

Пример — L2 BRAS с терминацией, маршрутизацией и фильтрацией по черному спиcку:

[TRACE   ][001937909944762840][0004DF1C174F65F0] PACKET : flw_dir=0, ind_if=0, dev_id=0
[TRACE   ][001937909944762840][0004DF1C174F65F0] ETH : bc:24:11:69:3f:1c --> bc:24:11:f7:1c:dd, ether_type=0x8100
[TRACE   ][001937909944762840][0004DF1C174F65F0] ETH_VLAN : ether_type=0x800, VLAN : tag=0x458, vlan=1112 p=0
[TRACE   ][001937909944762840][0004DF1C174F65F0] IP : IPv4 192.168.27.86 --> 172.67.207.203, protocol=6, lenhdr=20, tot_len=392, l4_size=372, tos=0, id=45630, ttl=64, frag_off=0x4000, check=0x2f24
[TRACE   ][001937909944762840][0004DF1C174F65F0] TCP : ports 58582 --> 443 seq=1853477189, ack_seq=2032920904, header_len=32 useful_len=340  A  P, win=63, check=0xa0c8, doff=8
[TRACE   ][001937909944762840][0004DF1C174F65F0] TCPFLAGS : 192.168.27.86:58582 -> 172.67.207.203:443 direction=0, tcpbits=0x18 -AP---, 1, tcpbits=0x12 -A--S-
[TRACE   ][001937909944762840][0004DF1C174F65F0] SSL : SKEEP_extension_type, SSL_STATE : ehp='TLS_normal'(0), rc=-1, whp=10, rec_type=22, vers=0x0301, hnd_type=1, hnd_vers=0x0303, parse=1653/1728, pos_cmnname=0, cmn_size=0/0, fnd=0, skeep_size=65281, ind_skeep=9, cmn_name=__, vdpi_proto=0, cipher_suites_len=32, cipher_suites=16 : {  0x8a8a,0x1303,0x1301,0x1302,0xcca9,0xcca8,0xc02b,0xc02f,0xc02c,0xc030,0xc013,0xc014,0x009c,0x009d,0x002f,0x0035 }, prsd_srv_hello=0, ver_serv=0x0000, cipher=0x0000, metod=0, view_hdr=1, ext_len=0, ext_parse=0, h_supported_version=0x0000/0/0, i=265, pl=75, size=340
[TRACE   ][001937909944762840][0004DF1C174F65F0] SSL : End parse, SSL_STATE : ehp='TLS_normal'(0), rc=1, whp=24, rec_type=22, vers=0x0301, hnd_type=1, hnd_vers=0x0303, parse=1728/1728, pos_cmnname=0, cmn_size=0/18, fnd=0, skeep_size=0, ind_skeep=14, cmn_name=_cloudflare-ech.com_, vdpi_proto=0, cipher_suites_len=32, cipher_suites=16 : {  0x8a8a,0x1303,0x1301,0x1302,0xcca9,0xcca8,0xc02b,0xc02f,0xc02c,0xc030,0xc013,0xc014,0x009c,0x009d,0x002f,0x0035 }, prsd_srv_hello=0, ver_serv=0x0000, cipher=0x0000, metod=0, view_hdr=1, ext_len=0, ext_parse=0, h_supported_version=0x0000/0/0, i=0, pl=0, size=340
[TRACE   ][001937909944762840][0004DF1C174F65F0] CHECK_SSL_SNI : IP : 192.168.27.86:58582 --> 172.67.207.203:443 dirdata=0, cname=_cloudflare-ech.com_, prg=0x0, prof_idx={0,0,0,0,0,0,0,0,0,0,0}, blocked=0
[TRACE   ][001937909944762840][0004DF1C174F65F0] DPI_PROTO_SNI_SET_IP_SNI_CNAME : 192.168.27.86:58582 --> 172.67.207.203:443 flw_dir=0, cname='cloudflare-ech.com', proto=0(ukn)-->0(ukn), bts_check_ip=0x2-->0x2
[TRACE   ][001937909944762840][0004DF1C174F65F0] DPI_PROTO_CHECK_SNI : 192.168.27.86:58582 --> 172.67.207.203:443 flw_dir=0, sni='cloudflare-ech.com', proto=0(ukn)-->0(ukn), asnum=0x2000000fc00/0x3417, bts_check_ip=0x2-->0x2
[TRACE   ][001937909944762840][0004DF1C174F65F0] DPI_CHANGE_PROTO_BLOCK : 192.168.27.86:58582 --> 172.67.207.203:443 flw_dir=0, proto=0(ukn)-->91(ssl)
[TRACE   ][001937909944762840][0004DF1C174F65F0] CHECK_IP : 192.168.27.86:58582 --> 172.67.207.203:443 flw_dir=0, prg_id=0x0, prof_idx={0,0,0,0,0,0,0,0,0,0,0}, blocked=1, bts_check_ip=0x102
[TRACE   ][001937909944968740][0000000000000000] PROTO_DSCP : 192.168.27.86:58582 --> 172.67.207.203:443, ret_stat=0x150, ret_stat_srv18=0x0, dscp=0x0 --> 0x0, ( 0x0/0x0/0x0/0x0/0x0 ) , proto=https(443), nvc=1, , rg=0
[TRACE   ][001937909944973900][0004DF1C174F65F0] DPI DEF_PROTO : 192.168.27.86:58582 -> 172.67.207.203:443 : ind_alfs=1, cntr_fin=0, direction=0, who_is_clnt=0, dirdata=0, proto=91(ssl)
[TRACE   ][001937909944762840][0004DF1C174F65F0] PLS_S_IP : flw_dir=0, selected : 192.168.27.86( ind_mdata=1, 0), 172.67.207.203( ind_mdata=4294967295, 0)
[TRACE   ][001937909944981400] [ROUTER][FIB4] destIP=172.67.207.203 - use route from flow: VRF='' arp_id=1 from ''
[TRACE   ][001937909944983580] [ROUTER][FIB4] destIP=172.67.207.203 VRF='' arp_id=1: dstMAC=bc:24:11:fa:b6:b9 vlan=1111 tx-dev=00-14.0
[TRACE   ][001937909944988540] [BRAS] change_vlan: 0:1112.0 bc:24:11:f7:1c:dd -> bc:24:11:fa:b6:b9 192.168.27.86 -> 172.67.207.203, IPproto=6: 1:1112.0 -> 1:1111.0
[TRACE   ][001937909944992000] [BRAS] terminate_packet: 0:1111.0 bc:24:11:f7:1c:dd -> bc:24:11:fa:b6:b9 192.168.27.86 -> 172.67.207.203, IPproto=6: enter
[TRACE   ][001937909944993000] latency: total=115 us (230500 ticks), DPI=115 us (230160 ticks), inter-packet gap=2 us (4940 ticks)

Была ли полезна эта информация?