Инспектор TCP-трафика

Описание

Общее описание функционала

Инспектор TCP-трафика помогает владельцу туннеля просматривать историю соединений: адреса клиента и цели, длительность, объём трафика и результат завершения. В дашборде откройте Туннели, перейдите в инспектор TCP-туннеля и выберите соединение. С клавиатуры перейдите к соединению клавишей Tab и откройте детали клавишей Enter или пробелом. Если оператор сервиса включил захват, в деталях доступен короткий фрагмент потока в текстовом или шестнадцатеричном виде. Список и живые обновления показывают сведения о соединениях.

Как пользователь может использовать

  • Разработчик отлаживает нестабильное TCP-приложение: открывает инспектор, сортирует соединения по времени, находит обрывы и ошибки.
  • Пользователь проверяет, что внешний клиент доходит до указанного целевого адреса, сверяя IP и порты в списке.
  • При включённом оператором захвате пользователь переключает Текст и Hex, чтобы посмотреть короткие текстовые обмены поверх TCP.
  • Пользователь фильтрует соединения по состоянию, чтобы сосредоточиться на завершённых сессиях или ошибках.
  • Администратор при поддержке пользователя просматривает те же метаданные в рамках полномочий продукта.
  • Инженер подписывается на SSE-поток, чтобы видеть новые соединения в реальном времени во время проверки приложения.

Как это реализовано в сервисе

После завершения TCP-соединения сервис сохраняет сведения о нём. При включённом захвате он также сохраняет ограниченный фрагмент переданных данных. Владелец туннеля или администратор с соответствующими правами может открыть детали соединения и посмотреть этот фрагмент. Раздел Захват потока остаётся видимым и без данных: в этом случае он показывает Нет захваченных данных. Подписка на живые обновления сообщает о новых соединениях и передаёт их метаданные.

Справочник API

Список соединений

GET /api/v1/inspector/tcp/connections

Параметры:

  • tunnel_id (обязательный) — ID туннеля
  • from — начало периода (RFC3339)
  • to — конец периода (RFC3339)
  • state — фильтр по состоянию: active, closed, error
  • limit — лимит (по умолчанию 50)
  • offset — смещение

Ответ: { "connections": [...], "pagination": { "limit", "offset", "count", "has_more" } }

Элементы списка содержат метаданные соединений. Поля захваченного потока в список не входят.

Получение соединения

GET /api/v1/inspector/tcp/connections/:id

Параметры:

  • format — text или hex. Если параметр не указан, захваченные байты возвращаются в Base64.

Ответ содержит id, tunnel_id, user_id, client_ip, client_port, target_addr, started_at, ended_at, duration_ms, bytes_in, bytes_out, state и error_msg. При наличии захваченных данных добавляется одно поле: stream_capture для Base64, stream_capture_text для текста или stream_capture_hex для шестнадцатеричной строки. Без данных эти поля отсутствуют.

Захват новых соединений доступен, когда его включил оператор сервиса. Возвращаемый фрагмент ограничен общим лимитом соединения и не превышает 32 КиБ декодированных байт. Распознаваемые секреты маскируются; Hex представляет обработанные байты, поэтому не восстанавливает исходный трафик байт в байт. Доступ к деталям имеют владелец туннеля и администратор с соответствующими правами. Ранее сохранённые фрагменты остаются доступны в пределах срока хранения после отключения нового захвата.

SSE-поток

GET /api/v1/inspector/tcp/connections/stream?tunnel_id=...

События имеют вид { "type": "tcp_connection", "data": { ... } }. Поле data содержит метаданные соединения; захваченные байты в поток событий не входят. Для просмотра фрагмента запросите детали по ID соединения.

Ошибки

Справочник ошибок

КодСообщениеУсловие
401UnauthorizedОтсутствует или недействительна авторизация
403ForbiddenПользователь не имеет доступа к туннелю
404TCP connection not foundСоединение не найдено
503Service UnavailableСервис инспектора недоступен

Ограничения

Границы использования

  • Захват новых соединений должен быть включён оператором сервиса. По умолчанию он отключён. Без него инспектор показывает сведения о соединениях, а раздел захвата сообщает об отсутствии данных.
  • Фрагмент ограничен общим объёмом для обоих направлений и не превышает 32 КиБ на соединение. После маскирования объём снова ограничивается; данные за пределами лимита через туннель передаются, но в просмотр не попадают.
  • Наблюдения из двух направлений могут перемешиваться. Фрагмент не восстанавливает границы сообщений или точный порядок протокольного обмена.
  • Распознаваемые пароли и токены маскируются. Маскирование не гарантирует удаления всех секретов: неизвестные форматы, двоичные данные и перемешанные части значения могут остаться видимыми.
  • Текст и Hex показывают одни и те же обработанные байты. Hex не является точной копией исходного трафика.
  • Текстовый вид может содержать символы замены для некорректного UTF-8.
  • Отключение нового захвата не удаляет ранее сохранённые фрагменты; они доступны пользователям с правами на туннель до окончания срока хранения.
  • Guest-пользователи не имеют доступа к TCP-инспектору.
  • Адрес клиента для некоторых способов подключения может быть недоступен; вместо него отображается «dataplane».

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

Отключение проверки TLS-сертификата при подключении HTTPS-туннеля к целевому сервису позволяет принять поддельный сертификат. Используйте такую возможность только для доверенных внутренних целей. Для публичных или недоверенных сервисов оставляйте проверку включённой.