Инспектор 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, errorlimit— лимит (по умолчанию 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 соединения.
Ошибки
Справочник ошибок
| Код | Сообщение | Условие |
|---|---|---|
| 401 | Unauthorized | Отсутствует или недействительна авторизация |
| 403 | Forbidden | Пользователь не имеет доступа к туннелю |
| 404 | TCP connection not found | Соединение не найдено |
| 503 | Service Unavailable | Сервис инспектора недоступен |
Ограничения
Границы использования
- Захват новых соединений должен быть включён оператором сервиса. По умолчанию он отключён. Без него инспектор показывает сведения о соединениях, а раздел захвата сообщает об отсутствии данных.
- Фрагмент ограничен общим объёмом для обоих направлений и не превышает 32 КиБ на соединение. После маскирования объём снова ограничивается; данные за пределами лимита через туннель передаются, но в просмотр не попадают.
- Наблюдения из двух направлений могут перемешиваться. Фрагмент не восстанавливает границы сообщений или точный порядок протокольного обмена.
- Распознаваемые пароли и токены маскируются. Маскирование не гарантирует удаления всех секретов: неизвестные форматы, двоичные данные и перемешанные части значения могут остаться видимыми.
- Текст и Hex показывают одни и те же обработанные байты. Hex не является точной копией исходного трафика.
- Текстовый вид может содержать символы замены для некорректного UTF-8.
- Отключение нового захвата не удаляет ранее сохранённые фрагменты; они доступны пользователям с правами на туннель до окончания срока хранения.
- Guest-пользователи не имеют доступа к TCP-инспектору.
- Адрес клиента для некоторых способов подключения может быть недоступен; вместо него отображается «dataplane».
Проверка сертификата целевого сервиса
Отключение проверки TLS-сертификата при подключении HTTPS-туннеля к целевому сервису позволяет принять поддельный сертификат. Используйте такую возможность только для доверенных внутренних целей. Для публичных или недоверенных сервисов оставляйте проверку включённой.