- Раздел 22: Балансировщик: мониторинг и диагностика - Раздел 23: Распознавание протоколов (DPI Engine) - Раздел 24: Траблшутинг Каждый раздел включает команды, описания и практические примеры для диагностики и мониторинга работы балансировщика и системы фильтрации.
311 lines
30 KiB
Markdown
311 lines
30 KiB
Markdown
# 17. Фильтр: настройка DPI
|
||
|
||
[← Оглавление](../README.md) · [← Раздел 16: Фильтр: ACL и пулы](16.md)
|
||
|
||
---
|
||
|
||
Модуль DPI (Deep Packet Inspection) — ключевая подсистема фильтра, отвечающая за анализ и фильтрацию трафика. Настройки DPI включают общие параметры модуля, конфигурацию работы с реестром Роскомнадзора, параметры деградации протоколов и индивидуальные настройки DPI-листов.
|
||
|
||
> **Примечание:** формат секции DPI различается между пилотным проектом (Урал) и федеральным проектом. В пилотном проекте настройки реестра Роскомнадзора находятся внутри DPI-листа 0. В федеральном проекте они вынесены в отдельную секцию, а все DPI-листы (0–15) стали абсолютно идентичными по структуре.
|
||
|
||
## 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. Шкала 0–100: 0 = полная блокировка, 100 = полный пропуск
|
||
|
||
Для каждого протокола задаётся значение **capacity** в условных единицах от 0 до 100:
|
||
|
||
| Значение | Поведение |
|
||
| -------- | ------------------------------------------------- |
|
||
| **0** | Полная блокировка — ничего не пропускается |
|
||
| **100** | Полное пропускание — трафик не затрагивается |
|
||
| **1–99** | Деградация — дроп пакетов с заданной вероятностью |
|
||
|
||
### 17.3.2. Дроп пакетов с заданной вероятностью
|
||
|
||
Механизм деградации работает просто: с определённой вероятностью, зависящей от параметра capacity, фильтр **дропает пакеты** в рамках сессии распознанного протокола. Чем ниже значение capacity, тем больше пакетов отбрасывается.
|
||
|
||
### 17.3.3. Эффективная деградация: 2–10% пропускания
|
||
|
||
На практике деградация становится **заметной для пользователя** только при значениях capacity в диапазоне **2–10**. Это объясняется свойствами TCP:
|
||
|
||
- TCP обладает встроенным механизмом **повторной передачи** потерянных пакетов;
|
||
- При низкой степени деградации (высоких значениях capacity) TCP успешно компенсирует потери, и пользователь практически ничего не замечает;
|
||
- Только при высокой степени деградации (capacity ~2–10) потери становятся настолько значительными, что TCP не успевает их компенсировать.
|
||
|
||
При значении capacity около **5** задержка отправки сообщений в приложениях может достигать **десятков секунд**.
|
||
|
||
### 17.3.4. Влияние на голосовые вызовы и мессенджеры
|
||
|
||
Деградация протоколов особенно эффективна для **голосовых вызовов** и **видеозвонков**, где потеря пакетов непосредственно влияет на качество:
|
||
|
||
- **Заикание** голоса и пропадание звука;
|
||
- **Рассинхронизация** аудио и видео;
|
||
- **Невозможность разговаривать** при высокой степени деградации;
|
||
- Для текстовых сообщений — значительные **задержки доставки**.
|
||
|
||
Деградация является альтернативой полной блокировке: вместо немедленного и очевидного отключения сервиса пользователь получает **постепенное ухудшение** качества связи.
|
||
|
||
## 17.4. Настройка DPI-листов (0–16)
|
||
|
||
На фильтре может быть настроено до **16 DPI-листов** (номера 0–15). В будущих прошивках это количество может быть расширено — планируется возможность генерации 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)
|