TCP Traffic Inspector
Описание
Общее описание функционала
Инспектор TCP-трафика даёт владельцу TCP-туннеля просматривать историю TCP-соединений, проходящих через туннель: адреса клиента и цели, длительность, объём трафика, состояние завершения и при необходимости укороченный захват потока в текстовом или шестнадцатеричном виде. Данные доступны в дашборде на странице инспектора туннеля (вкладка TCP) и через API с поддержкой потоковой подписки (SSE) для живых обновлений.
Как пользователь может использовать
- Разработчик отлаивает нестабильное TCP-приложение: открывает инспектор, сортирует соединения по времени, находит обрывы и ошибки.
- Пользователь проверяет, что внешний клиент действительно доходит до указанного целевого адреса, сверяя IP и порты в списке.
- Пользователь переключает отображение текст/hex для просмотра коротких текстовых протоколов поверх TCP.
- Пользователь фильтрует соединения по состоянию (активные, закрытые, ошибка) для фокуса на проблемных сессиях.
- Администратор при поддержке пользователя просматривает те же метаданные в рамках полномочий продукта.
- Инженер подписывается на SSE-поток, чтобы видеть новые соединения в реальном времени во время теста.
Как это реализовано в сервисе
При установке и закрытии TCP-соединения через туннель сервис фиксирует событие и сохраняет его в базе вместе с ограниченным объёмом перехваченных байт. Запросы из интерфейса дашборда или API проходят проверку владельца туннеля (или права администратора), затем возвращают страницу списка или одну запись. Поток событий рассылает новые записи подписчикам; частота опроса ограничивается лимитами сервера. В публичном развёртывании инспектор доступен только при корректной аутентификации и настройке режима работы, отличного от небезопасной отладочной конфигурации.
Справочник 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 (опционально, для формата stream_capture)
Ответ: объект TCPConnectionEvent с полями id, tunnel_id, client_ip, client_port, target_addr, started_at, ended_at, duration_ms, bytes_in, bytes_out, state, error_msg, stream_capture / stream_capture_text / stream_capture_hex
SSE-поток
GET /api/v1/inspector/tcp/connections/stream?tunnel_id=...
События: { "type": "tcp_connection", "data": TCPConnectionEvent }
Ошибки
Справочник ошибок
| Код | Сообщение | Условие |
|-----|-----------|---------|
| 401 | Unauthorized | Отсутствует или недействительна авторизация |
| 403 | Forbidden | Пользователь не имеет доступа к туннелю |
| 404 | TCP connection not found | Соединение не найдено |
| 503 | Service Unavailable | Сервис инспектора недоступен |
Ограничения
Известные ограничения
- Захват потока ограничен (по умолчанию 32 КБ на соединение)
- Guest-пользователи не имеют доступа к TCP-инспектору
- Клиентский IP в dataplane-пути может быть недоступен (отображается как «dataplane»)
- Отображение потока в текстовом формате может содержать замены для невалидного UTF-8
Риски конфигурации
- tls_insecure_skip_verify: При создании/изменении HTTPS-туннелей можно отключить проверку TLS-сертификата бэкенда. Это делает трафик уязвимым к MITM. Использовать только для доверенных внутренних целей (localhost, dev-сертификаты). Никогда не включать для ненадёжных или публичных бэкендов.