# Поддерживаемые пользовательские истории (TCP-туннелирование)

---

## US-11 — Сквозное шифрование приложения (TLS поверх TCP, без расшифровки полезной нагрузки на edge)

**Как** разработчик, работающий с чувствительными данными,  
**я хочу** чтобы облако туннеля пересылало сырой TCP (в том числе уже зашифрованный TLS-трафик приложения),  
**чтобы** оператор платформы не видел расшифрованные HTTP-запросы/ответы приложения.

**Поддерживается:** да для TCP-туннеля в режиме прозрачной пересылки байтов.

**Поведение**

- Клиент поднимает туннель `tcp` на порт, где слушает TLS-сервер (или иной бинарный протокол).
- Внешний клиент устанавливает TLS напрямую с вашим сервисом через выданный публичный `tcp://host:port`; полезная нагрузка остаётся зашифрованной на уровне приложения.
- Это не то же самое, что HTTPS URL HTTP-туннеля: там TLS обычно завершается на входе платформы для маршрутизации HTTP.

**Пример (ориентир)**

```bash
fortunnels -protocol tcp -local 127.0.0.1:443
```

Далее к публичному порту подключаются как к TLS-серверу на вашей машине.

**См. также:** [описание TCP-туннелей](/docs#tcp-tunneling/description).

---

## US-12 — Интерактивная TCP-сессия на macOS (локальный слушатель + expose-local)

**Как** разработчик или саппорт на macOS,  
**я хочу** поднять локальный TCP-слушатель на `127.0.0.1` и направить на него трафик TCP-туннеля в режиме expose-local,  
**чтобы** удалённый участник мог взаимодействовать с процессом за слушателем (в том числе для отладки), не открывая порт произвольно на всех интерфейсах без необходимости.

**Поддерживается:** да — за счёт стандартного TCP-туннеля и локального инструмента (`nc`, опционально `socat` и др.); качество «как в терминале» зависит от выбранного стека.

**Поведение**

- На Mac запускается процесс, слушающий `127.0.0.1:<порт>` (рекомендуется loopback).
- CLI создаёт туннель `tcp` с local на этот адрес (expose-local).
- Удалённый клиент подключается к публичному `host:port`; байты пробрасываются на локальный слушатель.

**Пример (ориентир)**

1. На Mac: `nc -l 127.0.0.1 7777`
2. CLI: `fortunnels -protocol tcp -local 127.0.0.1:7777`
3. Удалённый клиент подключается к выданному публичному `host:port`.

**См. также:** раздел Ограничения в [документации TCP-туннелей](/docs#tcp-tunneling/knownlimitations).

---

## Отличие от HTTP(S)-туннеля

| Режим | Типичная терминация TLS для браузера |
|-------|--------------------------------------|
| HTTP(S) туннель к локальному `http://` | TLS на публичном входе платформы |
| TCP к локальному TLS | TLS на вашем приложении; платформа ретранслирует байты |
