Files
tspu-docs/chapters/17.md
Daniel Lavrushin 10fb7f4e18 Добавлены новые разделы:
- Раздел 22: Балансировщик: мониторинг и диагностика
- Раздел 23: Распознавание протоколов (DPI Engine)
- Раздел 24: Траблшутинг

Каждый раздел включает команды, описания и практические примеры для диагностики и мониторинга работы балансировщика и системы фильтрации.
2026-02-20 13:59:30 +01:00

311 lines
30 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 17. Фильтр: настройка DPI
[← Оглавление](../README.md) · [← Раздел 16: Фильтр: ACL и пулы](16.md)
---
Модуль DPI (Deep Packet Inspection) — ключевая подсистема фильтра, отвечающая за анализ и фильтрацию трафика. Настройки DPI включают общие параметры модуля, конфигурацию работы с реестром Роскомнадзора, параметры деградации протоколов и индивидуальные настройки DPI-листов.
> **Примечание:** формат секции DPI различается между пилотным проектом (Урал) и федеральным проектом. В пилотном проекте настройки реестра Роскомнадзора находятся внутри DPI-листа 0. В федеральном проекте они вынесены в отдельную секцию, а все DPI-листы (015) стали абсолютно идентичными по структуре.
## 17.1. Общие настройки модуля DPI
Общие настройки расположены в корне секции `dpi` конфигурации фильтра.
### 17.1.1. Включение/выключение DPI
| Значение | Поведение |
| ----------- | --------------------------------------------------------- |
| **enable** | Модуль DPI активен, трафик анализируется и обрабатывается |
| **disable** | Модуль DPI выключен, весь трафик пропускается прозрачно |
В рабочем режиме DPI должен быть **включён**. Выключение модуля DPI может использоваться для **диагностики**: если выключить DPI и убедиться, что фильтр больше не влияет на трафик — значит, проблема была именно в DPI-обработке.
### 17.1.2. Send RST off: отключение TCP Reset при блокировке протоколов
Параметр **send RST off** — важная настройка, определяющая поведение фильтра при блокировке распознанных протоколов.
| Значение | Поведение |
| -------- | -------------------------------------------------------- |
| **off** | TCP Reset при блокировке протоколов **не отправляется** |
| **on** | TCP Reset отправляется абоненту и серверу при блокировке |
В проекте ТСПУ параметр **всегда должен быть в режиме `off`**.
**Почему отправка TCP Reset опасна:**
Когда приложение абонента (например, Telegram) пытается установить TCP-соединение и получает в ответ TCP Reset, оно воспринимает это как временный сбой и **немедленно** пытается установить новое соединение. Этот цикл повторяется непрерывно и с высокой частотой:
1. Приложение отправляет TCP SYN;
2. Фильтр распознаёт протокол и отправляет TCP Reset;
3. Приложение мгновенно пытается установить новое соединение;
4. Цикл повторяется бесконечно.
На практике наблюдались случаи, когда мобильные устройства начинали **тормозить** из-за того, что Telegram непрерывно пытался переустановить заблокированную сессию. Количество генерируемых сессий создаёт **избыточную нагрузку** на фильтр.
При отключённой отправке Reset соединение **отбрасывается молча** — приложение пытается установить сессию, сессия «висит» и обрывается только по **тайм-ауту**. Это значительно снижает количество повторных попыток и нагрузку на фильтр.
### 17.1.3. Functionality mode: normal (не double mirror traffic)
| Значение | Описание | Применение в ТСПУ |
| ------------------------- | -------------------------------------------- | ----------------- |
| **normal** | Стандартный режим работы фильтра | **Всегда** |
| **double mirror traffic** | Режим для работы с копией (зеркалом) трафика | Не используется |
Параметр **всегда должен быть `normal`**. Режим `double mirror traffic` предназначен для сценариев, когда фильтр получает зеркалированную копию трафика, что в проекте ТСПУ не применяется.
В секции DPI также присутствует устаревшая команда `extra analysis off` — она не используется и не требует внимания.
## 17.2. Настройка реестра РКН
Секция настройки реестра Роскомнадзора определяет параметры скачивания и обработки списков блокировки, предоставляемых Роскомнадзором.
> **Примечание:** в федеральном проекте эта секция вынесена в отдельный раздел конфигурации. В пилотном проекте (Урал) настройки находятся внутри DPI-листа 0.
### 17.2.1. Источник: RKN или ГРФЦ
| Источник | Описание |
| -------- | ----------------------------------------------------------------------- |
| **RKN** | Оригинальный формат выгрузки с серверов Роскомнадзора |
| **ГРФЦ** | Новый формат выгрузки (оптимизированная база данных, уменьшенный объём) |
Роскомнадзор предложил новый источник списков — **ГРФЦ**. По сравнению с оригинальным форматом RKN, база данных ГРФЦ оптимизирована и уменьшена в объёме. Рекомендуется переключаться на выгрузку с ГРФЦ.
### 17.2.2. Логин/пароль для доступа к серверу РКН
Для скачивания реестра с сервера Роскомнадзора требуется **авторизация**. Логин и пароль задаются в секции настройки реестра. Учётные данные выдаются Роскомнадзором.
### 17.2.3. Привязка к DPI-листу (list number)
Параметр **list number** определяет, к какому DPI-листу будет привязан реестр Роскомнадзора. По умолчанию — **0**. В текущей конфигурации проекта ТСПУ фильтрация по реестру Роскомнадзора осуществляется в **DPI-листе 0**.
### 17.2.4. Proxy-сервер, dump server
| Параметр | Описание |
| ---------------- | --------------------------------------------------------------------------------- |
| **Proxy server** | Промежуточный сервер для доступа к реестру РКН, если прямое соединение невозможно |
| **Dump server** | Сервер, на который фильтр выгружает скачанный реестр для внешнего анализа |
**Proxy server** используется, когда фильтр не может напрямую подключиться к серверу Роскомнадзора.
**Dump server** полезен для диагностики: можно получить копию того же дампа, который скачал фильтр, и проанализировать его на внешнем сервере. Фильтр скачивает реестр, а затем выгружает его на указанный dump server.
### 17.2.5. Проблемы скачивания: минимальная скорость ~10 Мбит/с
Сервер Роскомнадзора настроен таким образом, что **разрывает соединение** при низкой скорости скачивания. Эмпирически установлено, что минимальная скорость загрузки для успешного скачивания реестра составляет **~10 Мбит/с**. При более низкой скорости сервер Роскомнадзора обрывает соединение через некоторое время.
**Типичные причины проблем со скачиванием:**
- Недостаточная скорость management-интерфейса;
- Ошибки на интерфейсе фильтра (в одном случае проблема решилась перезагрузкой фильтра);
- Проблемы на стороне коммутатора или промежуточного оборудования.
При диагностике проблем скачивания следует обращать внимание на скорость и ошибки на management-интерфейсе. Команда `dpi run` позволяет принудительно инициировать обновление всех DPI-листов (подробнее — в [разделе 18.13.4](18.md)).
> **Примечание:** запуск `dpi run` не гарантирует, что реестр будет скачан — сервер РКН может ответить, что обновлений нет, и в этом случае ничего скачано не будет.
## 17.3. Деградация протоколов (protocols capacity)
Механизм деградации протоколов позволяет **частично ухудшить** работу распознанного протокола вместо полной блокировки. Настройка выполняется в секции DPI для каждого протокола индивидуально.
### 17.3.1. Шкала 0100: 0 = полная блокировка, 100 = полный пропуск
Для каждого протокола задаётся значение **capacity** в условных единицах от 0 до 100:
| Значение | Поведение |
| -------- | ------------------------------------------------- |
| **0** | Полная блокировка — ничего не пропускается |
| **100** | Полное пропускание — трафик не затрагивается |
| **199** | Деградация — дроп пакетов с заданной вероятностью |
### 17.3.2. Дроп пакетов с заданной вероятностью
Механизм деградации работает просто: с определённой вероятностью, зависящей от параметра capacity, фильтр **дропает пакеты** в рамках сессии распознанного протокола. Чем ниже значение capacity, тем больше пакетов отбрасывается.
### 17.3.3. Эффективная деградация: 210% пропускания
На практике деградация становится **заметной для пользователя** только при значениях capacity в диапазоне **210**. Это объясняется свойствами TCP:
- TCP обладает встроенным механизмом **повторной передачи** потерянных пакетов;
- При низкой степени деградации (высоких значениях capacity) TCP успешно компенсирует потери, и пользователь практически ничего не замечает;
- Только при высокой степени деградации (capacity ~210) потери становятся настолько значительными, что TCP не успевает их компенсировать.
При значении capacity около **5** задержка отправки сообщений в приложениях может достигать **десятков секунд**.
### 17.3.4. Влияние на голосовые вызовы и мессенджеры
Деградация протоколов особенно эффективна для **голосовых вызовов** и **видеозвонков**, где потеря пакетов непосредственно влияет на качество:
- **Заикание** голоса и пропадание звука;
- **Рассинхронизация** аудио и видео;
- **Невозможность разговаривать** при высокой степени деградации;
- Для текстовых сообщений — значительные **задержки доставки**.
Деградация является альтернативой полной блокировке: вместо немедленного и очевидного отключения сервиса пользователь получает **постепенное ухудшение** качества связи.
## 17.4. Настройка DPI-листов (016)
На фильтре может быть настроено до **16 DPI-листов** (номера 015). В будущих прошивках это количество может быть расширено — планируется возможность генерации DPI-листов по необходимости на уровне конфигурации.
Все DPI-листы имеют **одинаковую структуру** настроек (в федеральном проекте). Каждый лист настраивается индивидуально.
### 17.4.1. Enable/disable каждого листа
Каждый DPI-лист может быть **включён или выключен** независимо от остальных:
```text
dpi list <N>
enable ← включить лист
disable ← выключить лист
```
### 17.4.2. BitTorrent UTP detection
| Значение | Описание |
| -------- | ----------------------------------------------- |
| **on** | Включено распознавание протокола BitTorrent UTP |
| **off** | Распознавание BitTorrent UTP выключено |
Если требуется распознавание и блокировка BitTorrent, параметр должен быть включён (`on`).
### 17.4.3. WH List Mode: blacklist (по умолчанию) / whitelist
Параметр **WH list mode** определяет логику работы DPI-листа:
| Режим | Поведение | Применение в ТСПУ |
| ------------- | ----------------------------------------------------------------- | ----------------- |
| **blacklist** | Всё, что совпало со списком — блокируется; остальное пропускается | **По умолчанию** |
| **whitelist** | Пропускается только совпавший трафик; всё остальное блокируется | Не используется |
В проекте ТСПУ режим whitelist **не используется** из-за риска **случайной блокировки всего трафика**. Этот режим применяется в других сценариях, например, при использовании BRAS-функциональности на устройстве.
### 17.4.4. Behavior: block / ignore / color / redirect
Параметр **behavior** определяет, что происходит с трафиком, совпавшим со списком данного DPI-листа:
| Значение | Описание | Применение в ТСПУ |
| ------------ | -------------------------------------------------------- | ---------------------------- |
| **block** | Трафик блокируется (дропается) | Основной рабочий режим |
| **ignore** | Совпадение фиксируется и логируется, трафик пропускается | Для распознавания протоколов |
| **color** | Совпавший трафик «окрашивается» | Не используется |
| **redirect** | Трафик перенаправляется | Не используется |
**Режим block** — основной для блокировки по реестру Роскомнадзора и по очищенным протокольным спискам. При срабатывании блокировки:
- Для **HTTP**: абоненту отправляется HTTP-редирект (302) на страницу-заглушку;
- Для **HTTPS**: абоненту и серверу отправляется TCP Reset, разрывающий соединение (поскольку содержимое зашифровано и подмена ответа невозможна).
**Режим ignore** — используется для **первой стадии двухстадийной блокировки**: фильтр распознаёт протоколы и отправляет логи на SPFS, но сам трафик не блокирует. Данные передаются в ЦСУ для формирования очищенных списков (подробнее — в [разделе 8](08.md)).
Также в секции DPI-листа присутствует параметр **logs on/off** — включение журналирования срабатываний данного списка. В проекте ТСПУ эта функциональность, как правило, используется.
### 17.4.5. Redirect URL — страница-заглушка для заблокированных HTTP-ресурсов
Параметр **redirect URL** задаёт адрес страницы-заглушки, на которую перенаправляется абонент при блокировке **HTTP-ресурса** по реестру Роскомнадзора.
Типичное содержимое страницы-заглушки: уведомление абонента о том, что запрошенный ресурс заблокирован в соответствии с требованиями законодательства.
> **Важно:** redirect URL работает **только для HTTP-трафика**. Для HTTPS-трафика перенаправление невозможно (содержимое зашифровано), поэтому используется TCP Reset.
Также в секции DPI-листа присутствуют параметры, связанные с redirect behavior (redirect interval и др.) — в проекте ТСПУ они **не используются**.
### 17.4.6. Download URL — источник списков, update schedule
| Параметр | Описание |
| ------------------- | -------------------------------------------------------------------- |
| **Download URL** | URL, откуда фильтр скачивает список фильтрации для данного DPI-листа |
| **Update schedule** | Интервал обновления списка (например, 30 минут) |
Download URL задаёт источник списков для DPI-листов, **не связанных** с реестром Роскомнадзора (скачивание реестра РКН настраивается отдельно — см. [раздел 17.2](#172-настройка-реестра-ркн)). Типичный источник — ресурс в **центральной системе управления** (ЦСУ), откуда загружаются очищенные протокольные списки.
**Update schedule** определяет частоту обновления:
| Значение | Поведение |
| ------------ | -------------------------------------------------- |
| Время (мин.) | Список обновляется с заданным интервалом |
| **never** | Список **никогда не обновляется** и не скачивается |
> **Внимание:** значение `never` — частая причина проблем. Если всё настроено корректно, но update schedule установлен в `never`, списки просто не будут скачиваться. Необходимо задать конкретный интервал обновления.
### 17.4.7. Protocols — список распознаваемых протоколов
В секции **protocols** каждого DPI-листа указываются протоколы, по которым будет осуществляться распознавание и последующее действие (блокировка, игнорирование и т.д.).
Список протоколов задаётся перечислением названий: Telegram, WhatsApp, Viber, BitTorrent и др. Набор поддерживаемых протоколов определяется версией прошивки фильтра.
### 17.4.8. No IP / IP — исключение/включение адресов для обработки
Параметры **IP** и **No IP** определяют, какой трафик подлежит обработке данным DPI-листом:
| Параметр | Описание |
| ---------------------- | --------------------------------------------------------------------- |
| **IP** | Подсети и адреса, которые **должны обрабатываться** данным DPI-листом |
| **No IP** | Локальные адреса абонентов, **исключённые** из обработки |
| **No IP Remote** | Удалённые адреса (серверы), **исключённые** из обработки |
| **IPv6** / **No IPv6** | Аналогичные параметры для IPv6-трафика |
По умолчанию параметр **IP** должен содержать сеть `0.0.0.0/0` для всех VLAN — тогда весь трафик, попавший в DPI, будет обрабатываться данным листом.
**Использование No IP для диагностики:**
Параметр **No IP** — ключевой инструмент траблшутинга. Чтобы проверить, влияет ли данный DPI-лист на конкретного абонента:
1. Добавить локальный IP-адрес абонента в **No IP** данного DPI-листа;
2. Выполнить `apply`;
3. Проверить, изменилось ли поведение у абонента;
4. Если приложение у абонента **заработало** — данный DPI-лист действительно блокировал его трафик;
5. Если **ничего не изменилось** — проблема не в данном DPI-листе.
Параметр **No IP Remote** работает аналогично, но исключает из обработки удалённый IP-адрес (адрес сервера).
### 17.4.9. QUIC list
Параметр **QUIC list** определяет список ресурсов, для которых должен распознаваться протокол **QUIC** (Quick UDP Internet Connections) — протокол, разработанный Google для оптимизации доставки контента.
Фильтр **умеет распознавать** QUIC, но для этого необходимо внести ресурсы, которые планируется обрабатывать, в QUIC list.
## 17.5. Формат списков фильтрации
Списки фильтрации (кроме реестра Роскомнадзора, который скачивается в специальном формате) представляют собой **текстовые файлы**, где на каждой строке перечислены ресурсы для обработки.
### 17.5.1. IP-адреса, подсети, диапазоны, URL
Поддерживаемые форматы записей в списках:
| Формат | Пример | Описание |
| ------------------- | ------------------------- | ---------------------- |
| IP-адрес | `1.2.3.4` | Конкретный IP-адрес |
| Подсеть | `10.0.0.0/8` | Подсеть в CIDR-нотации |
| Диапазон IP | `1.2.3.4-1.2.3.10` | Диапазон адресов |
| URL | `http://example.com/page` | Конкретный URL (HTTP) |
| Домен | `example.com` | Домен (HTTP и HTTPS) |
| Домен с поддоменами | `*.example.com` | Домен и все поддомены |
Если в начале URL стоит **звёздочка** (`*`), обрабатываются **все протоколы** (HTTP и HTTPS) и **все поддомены** данного домена. Если протокол **не указан явно**, обрабатываются и HTTP, и HTTPS.
### 17.5.2. HTTP: блокировка конкретного URL
Для **HTTP**-трафика возможна блокировка **конкретного URL** — вплоть до отдельной страницы. Это обусловлено тем, что при HTTP-соединении URL передаётся **в открытом виде** в заголовке запроса, и фильтр может его проанализировать.
Пример: запись `http://example.com/specific/page.html` в списке заблокирует **только эту конкретную страницу**, остальные страницы на `example.com` останутся доступными.
### 17.5.3. HTTPS: блокировка только по домену (SNI/Client Hello)
Для **HTTPS**-трафика блокировка возможна **только на уровне домена**. Это фундаментальное ограничение, связанное с механизмом установления HTTPS-соединения:
1. При установлении HTTPS-соединения клиент отправляет **Client Hello**;
2. В Client Hello содержится поле **SNI** (Server Name Indication), указывающее доменное имя сервера;
3. Поле SNI содержит **только домен** (например, `ru.wikipedia.org`) — **без пути и URL**;
4. Всё остальное содержимое HTTPS-соединения **зашифровано** и недоступно для анализа.
**Практическое следствие:** если в списке указана строка вида `https://ru.wikipedia.org/wiki/Конкретная_статья`, фильтр заблокирует **весь домен** `ru.wikipedia.org` целиком, а не конкретную страницу. Поле SNI не содержит пути URL, поэтому фильтр видит только домен и блокирует все обращения к нему.
| Протокол | Точность блокировки | Причина |
| --------- | --------------------------- | ------------------------------------- |
| **HTTP** | До конкретного URL/страницы | URL виден в открытом виде в заголовке |
| **HTTPS** | Только весь домен целиком | В SNI (Client Hello) только домен |
---
[← Оглавление](../README.md) · [← Раздел 16: Фильтр: ACL и пулы](16.md) · [Раздел 18: Фильтр: мониторинг и диагностика →](18.md)