# QuatrVPN Protocol Specification (Q5)

Version: 2.0.0

## Overview

**Q5** — профиль туннелирования sing-box для сетей с агрессивным DPI (ТСПУ).
Заменяет Q4 (REALITY + Hysteria2), которые в 2025–2026 массово детектируются и блокируются.

Принцип: **не использовать сигнатуры VLESS/REALITY и Hysteria2 на 443/udp**, разнести транспорты по портам, на клиенте включить TLS-фрагментацию.

## Design Goals

| Goal | Mechanism |
|------|-----------|
| Обход блокировки REALITY/VLESS | Trojan + обычный TLS (без REALITY handshake) |
| Обход блокировки Hysteria2/QUIC:443 | TUIC v5 на отдельном UDP-порту 8443 |
| Резервный TCP-транспорт | AnyTLS с padding scheme |
| Обход простого DPI | `tls.fragment` + `tls.record_fragment` на клиенте |
| Несколько серверов | Отдельные ключи на каждый host (`quatr-gen -inventory`) |

## Layer Model

```
┌─────────────────────────────────────────────────────────┐
│ L4 Route — TUN + rule_set split (VPN только для списков)  │
├─────────────────────────────────────────────────────────┤
│ L3 Session — Trojan/AnyTLS password, TUIC uuid+password │
├─────────────────────────────────────────────────────────┤
│ L2 Transport — Trojan TCP | AnyTLS TCP | TUIC QUIC      │
├─────────────────────────────────────────────────────────┤
│ L1 Camouflage — TLS 1.2/1.3 + SNI (decoy hostname)      │
└─────────────────────────────────────────────────────────┘
```

## Transports

| Tag | Protocol | Port | Когда использовать |
|-----|----------|------|-------------------|
| `quatr-trojan` | Trojan + TLS | 443/tcp | Основной — проходит через большинство файрволов |
| `quatr-anytls` | AnyTLS + TLS | 2053/tcp | Резерв TCP, padding против анализа размеров пакетов |
| `quatr-tuic` | TUIC v5 + TLS | 8443/udp | UDP fallback, другая сигнатура чем Hysteria2 |

Клиент по умолчанию: **`quatr-auto`** (urltest между тремя транспортами).

## L4: Route (rule_set)

По умолчанию — **split routing** через remote `rule_set` ([itdoginfo/allow-domains](https://github.com/itdoginfo/allow-domains)):

| Rule set | Файл | Назначение |
|----------|------|------------|
| `quatr-russia_inside` | `russia_inside.srs` | Заблокированные в РФ ресурсы |
| `quatr-telegram` | `telegram.srs` | Telegram ([telegram.lst](https://github.com/itdoginfo/allow-domains/blob/main/Services/telegram.lst)) |
| `quatr-google_play` | `google_play.srs` | Google Play |
| `quatr-cloudflare` | `cloudflare.srs` | Cloudflare |
| `quatr-google_ai` | `google_ai.srs` | Google AI |

- Совпадение с rule set → **VPN** (`quatr-select`)
- Остальной трафик → **direct**
- DNS: fakeip + резолв rule set доменов через `dns-remote` (detour VPN)
- Rule sets обновляются автоматически (`update_interval: 1d`)

Полный туннель: `client-full.json` (генерируется вместе с `client.json`).

## L1: TLS Camouflage

- SNI = decoy hostname (по умолчанию `www.microsoft.com`, настраивается `-decoy` или `quatr_decoy` в inventory)
- Сервер: self-signed TLS cert (CN = decoy или `-domain`)
- Клиент: `insecure: true` + **TLS fragment** + **record fragment**

## L3: Session

| Transport | Credential |
|-----------|------------|
| Trojan | password (32 chars) |
| AnyTLS | password (32 chars) |
| TUIC | UUID v4 + password (24 chars) |

Ротация: `quatr-gen -inventory ... -rotate` (пароли обновляются, TUIC UUID сохраняется).

## Client URI Formats

### Trojan

```
trojan://{password}@{server}:443?sni={decoy}&allowInsecure=1#QuatrVPN-{host}
```

### TUIC

```
tuic://{base64(uuid:password)}@{server}:8443?sni={decoy}&congestion_control=bbr&allow_insecure=1#QuatrVPN-{host}
```

### AnyTLS

Стандартного URI нет — импортируйте `client.json` или `client-full.json` в sing-box.

## Anti-Detection Checklist

1. **Не используйте REALITY/VLESS/Hysteria2** — они в приоритете у DPI.
2. Decoy SNI — популярный глобальный домен, не «vpn.example.com».
3. Несколько серверов — при блокировке IP переключайтесь (см. [index.json](configs/index.json)).
4. Ротируйте пароли раз в 30–90 дней (`-rotate`).
5. sing-box ≥ 1.12 на сервере и клиенте.

## Threat Model

**Защищает от:**
- Сигнатурного DPI на REALITY, VLESS Vision, Hysteria2
- Простого SNI-фильтра (TLS fragment)
- Блокировки одного транспорта (автовыбор между тремя)

**Не защищает от:**
- Полной блокировки IP сервера
- Глубокого анализа трафика по объёму/timing
- Компрометации ключей на клиенте

## Migration from Q4

| Q4 (устарело) | Q5 (актуально) |
|---------------|----------------|
| `quatr-reality` (VLESS REALITY) | `quatr-trojan` |
| `quatr-hysteria2` | `quatr-tuic` |
| порт 443/udp (HY2) | порт 8443/udp (TUIC) |
| `vless://` ссылки | `trojan://` + `tuic://` |
| — | `quatr-anytls` на :2053 |

Переимпортируйте актуальный `client-*.json` — старые конфиги Q4 не совместимы.

## Reference Implementation

- Engine: [sing-box](https://github.com/SagerNet/sing-box) ≥ 1.12
- Config generator: `tools/quatr-gen`
- Server deploy: `deploy/ansible`
