Трассировка трафика по IP
Трассировка позволяет записать детальный лог обработки трафика fastDPI для конкретного IP-адреса, где IP-адресом может быть IP абонента или IP хоста. Это полезно при диагностике проблем с классификацией, применением правил или маршрутизацией трафика через СКАТ.
Перед началом работы
Включить трассировку можно двумя способами:
- через файл конфигурации
fastdpi.conf— значение сохраняется после последующихservice fastdpi reload; - через CLI — значение действует до ближайшего reload.
Перед тем как повторять процедуру для следующего IP адреса, рекомендуется сделать бэкап файлов fastdpi_slave_*.log текущего трейса в отдельное место — иначе новые записи добавятся к уже существующим и смешаются с ними.
Очистка лога:
truncate -s0 /var/log/dpi/fastdpi_slave_*.log
- Параметр
trace_ipне применился — см. подраздел «Проверка применения параметра» для выбранного способа. - Трафик данного IP не проходит через СКАТ.
- Файлы логов удалили и создали заново вручную. Если пересоздать
fastdpi_slave_*.logбез перезапуска СКАТа, трассировка в них записываться не будет. Очищать лог нужно командойtruncate.
Трассировка через файл конфигурации
Включение
Порядок действий через fastdpi.conf:
- Открыть файл конфигурации
/etc/dpi/fastdpi.conf. - Добавить параметр
trace_ip=1.1.1.1, где1.1.1.1— IP-адрес, по которому нужно записать трассировку.
Можно указать до двух IP-адресов через запятую без пробелов, например:trace_ip=1.1.1.1,2.2.2.2. Если указать больше двух адресов, fastDPI выдаст ошибку и применит только первые два из списка. - Применить изменения командой
service fastdpi reload.
Изменения в конфигурации применятся без остановки трафика.
После применения fastDPI начнёт пошагово записывать лог обработки трафика указанного IP-адреса в/var/log/dpi/fastdpi_slave_*.log.
Выключение
- Закомментировать или удалить строку
trace_ip=1.1.1.1в/etc/dpi/fastdpi.conf. - Применить изменения командой
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)
Была ли полезна эта информация?