Полное руководство по настройке: REALITY, Trojan, V2Ray+WS+TLS, sing-box — с примерами конфигураций.

1. Что такое Fake TLS и зачем он нужен
Fake TLS — это техника маскировки трафика прокси-протоколов под обычное HTTPS-соединение. Системы глубокой инспекции пакетов (DPI) умеют отличать обычный VPN от веб-трафика по паттернам: длине хендшейка, энтропии, последовательности байт. Fake TLS решает эту задачу: ваш трафик становится неотличим от соединения с каким-нибудь легитимным сайтом.
Важно разграничить два понятия, которые часто путают:
| Понятие | Что делает | Пример |
|---|---|---|
| Real TLS | Честный TLS-сертификат на реальном домене, трафик выглядит как HTTPS | Trojan-GFW, VLESS+TLS |
| Fake TLS / Reality | Клиент имитирует TLS-хендшейк к чужому серверу, не раскрывая реальный бэкенд | Xray REALITY, uTLS |
| TLS obfs | Оборачивает трафик в TLS-подобную оболочку без полного соответствия стандарту | obfs4, simple-obfs |
Термин «Fake TLS» в сообществе используется нестрого. Чаще всего под ним подразумевают либо uTLS fingerprint spoofing, либо протокол REALITY от разработчиков Xray.
2. Как это работает технически
При обычном TLS-соединении в ClientHello видны: версия TLS, список поддерживаемых шифров, расширения (включая SNI), длина сообщения. DPI строит «fingerprint» браузера по этому набору. Если fingerprint не совпадает ни с одним известным браузером — подозрение.
Fake TLS подменяет этот отпечаток. Библиотека uTLS позволяет Xray/V2Ray генерировать ClientHello, идентичный Chrome, Firefox или Safari — байт в байт. Протокол REALITY идёт дальше: сервер не держит сертификат вообще — он перенаправляет TLS-хендшейк к настоящему сайту (например, microsoft.com), а данные пользователя шифруются поверх своим ключом. С точки зрения наблюдателя — просто кто-то открывает сайт Microsoft.

3. Инструменты и протоколы
Выбор инструмента зависит от уровня требуемой маскировки и сложности настройки:
| Инструмент | Метод | Сложность | Устойчивость |
|---|---|---|---|
| Xray-core + REALITY | Fake TLS с чужим сертификатом | Средняя | Высокая |
| Trojan-GFW | Real TLS + доменный сертификат | Средняя | Высокая |
| V2Ray + WS + TLS | Real TLS через Nginx/Caddy | Выше средней | Высокая |
| sing-box | Поддерживает всё вышеперечисленное | Средняя | Высокая |
| simple-obfs (tls) | Поверхностная имитация TLS | Низкая | Средняя |
| obfs4 | Случайный трафик, не TLS | Низкая | Средняя |

4. Xray + VLESS + REALITY
REALITY — наиболее современный способ. Не требует покупки домена и сертификата. Сервер «прикидывается» чужим сайтом на уровне TLS-хендшейка.
4.1 Установка Xray на сервер
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install
4.2 Генерация ключевой пары REALITY
xray x25519
Команда выдаст два ключа: Private key (для сервера) и Public key (для клиента). Сохраните их.
4.3 Конфигурация сервера /usr/local/etc/xray/config.json
{
"inbounds": [{
"listen": "0.0.0.0",
"port": 443,
"protocol": "vless",
"settings": {
"clients": [{
"id": "ВАШ-UUID",
"flow": "xtls-rprx-vision"
}],
"decryption": "none"
},
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"show": false,
"dest": "www.microsoft.com:443",
"xver": 0,
"serverNames": ["www.microsoft.com"],
"privateKey": "ВАШ-ПРИВАТНЫЙ-КЛЮЧ",
"shortIds": ["СЛУЧАЙНАЯ-HEX-СТРОКА-8-СИМВОЛОВ"]
}
}
}],
"outbounds": [{"protocol": "freedom"}]
}
Значение dest — это реальный сайт, к которому будет перенаправляться хендшейк. Выбирайте CDN с поддержкой TLS 1.3 и X25519 (Microsoft, Apple, Cloudflare). Если DPI делает запрос к этому сайту и тот недоступен из вашего региона — выберите другой.
4.4 Генерация UUID и shortId
xray uuid
openssl rand -hex 4
4.5 Конфигурация клиента (Xray/v2rayN)
{
"outbounds": [{
"protocol": "vless",
"settings": {
"vnext": [{
"address": "IP-ВАШЕГО-СЕРВЕРА",
"port": 443,
"users": [{
"id": "ВАШ-UUID",
"flow": "xtls-rprx-vision",
"encryption": "none"
}]
}]
},
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"serverName": "www.microsoft.com",
"fingerprint": "chrome",
"publicKey": "ВАШ-ПУБЛИЧНЫЙ-КЛЮЧ",
"shortId": "СЛУЧАЙНАЯ-HEX-СТРОКА-8-СИМВОЛОВ"
}
}
}]
}
Параметр fingerprint: "chrome" активирует uTLS — библиотека генерирует TLS ClientHello, идентичный браузеру Chrome. Доступны: chrome, firefox, safari, ios, edge, random.
5. Trojan-GFW / Trojan-Go
Trojan — старейший и проверенный метод. Протокол маскируется под HTTPS-сервер: если входящий пароль неверный, соединение проксируется на настоящий сайт. DPI видит честный TLS с вашим сертификатом.
5.1 Требования
Нужен реальный домен с A-записью на ваш сервер и сертификат (Let’s Encrypt через Caddy или Certbot).
5.2 Конфигурация сервера config.json
{
"run_type": "server",
"local_addr": "0.0.0.0",
"local_port": 443,
"remote_addr": "127.0.0.1",
"remote_port": 80,
"password": ["ВАШ-СЛОЖНЫЙ-ПАРОЛЬ"],
"ssl": {
"cert": "/etc/ssl/ваш-домен.crt",
"key": "/etc/ssl/ваш-домен.key",
"alpn": ["h2", "http/1.1"],
"fallback_addr": "127.0.0.1",
"fallback_port": 80
},
"log_level": 1
}
Параметр fallback важен: если кто-то зайдёт на ваш IP через браузер — он увидит обычный веб-сайт (запустите Nginx на 80 порту с любой страницей).
6. V2Ray/Xray + WebSocket + TLS через Nginx
Классический подход: Xray слушает на localhost, Nginx терминирует TLS и проксирует WebSocket по пути /ws. Снаружи — обычный HTTPS-сайт.
6.1 Конфиг Xray (сервер)
{
"inbounds": [{
"listen": "127.0.0.1",
"port": 10000,
"protocol": "vmess",
"settings": {"clients": [{"id": "ВАШ-UUID"}]},
"streamSettings": {
"network": "ws",
"wsSettings": {"path": "/ваш-секретный-путь"}
}
}],
"outbounds": [{"protocol": "freedom"}]
}
6.2 Блок Nginx
server {
listen 443 ssl http2;
server_name ваш.домен.com;
ssl_certificate /etc/letsencrypt/.../fullchain.pem;
ssl_certificate_key /etc/letsencrypt/.../privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
location /ваш-секретный-путь {
proxy_pass http://127.0.0.1:10000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
location / {
root /var/www/html;
}
}
Путь /ваш-секретный-путь должен совпадать на сервере и клиенте. Выбирайте непредсказуемый путь — например /api/v3/stream.

7. sing-box: современная альтернатива
sing-box — относительно новый, но уже де-факто стандартный инструмент, поддерживающий REALITY, Trojan, Hysteria2, TUIC в одной бинарке с лаконичным JSON.
7.1 Пример: VLESS + REALITY на sing-box (сервер)
{
"inbounds": [{
"type": "vless",
"listen": "::",
"listen_port": 443,
"users": [{"uuid": "ВАШ-UUID", "flow": "xtls-rprx-vision"}],
"tls": {
"enabled": true,
"server_name": "www.apple.com",
"reality": {
"enabled": true,
"handshake": {"server": "www.apple.com", "server_port": 443},
"private_key": "ВАШ-ПРИВАТНЫЙ-КЛЮЧ",
"short_id": ["ВАШ-SHORT-ID"]
}
}
}],
"outbounds": [{"type": "direct"}]
}
8. Выбор правильного SNI для REALITY
Это критически важный шаг, который многие недооценивают. SNI-домен должен соответствовать нескольким требованиям одновременно:
| Критерий | Почему важно |
|---|---|
| Поддержка TLS 1.3 | Xray REALITY работает только с TLS 1.3 |
| X25519 в списке шифров | Необходимо для ECDH-обмена в REALITY |
| Без TLS fingerprinting | Сайт не должен блокировать необычные ClientHello |
| Высокая репутация IP | CDN крупных корпораций не блокируется по IP |
| Доступен из вашей страны | DPI может проверить SNI-хост |
Проверенные варианты: www.microsoft.com, www.apple.com, addons.mozilla.org, dl.google.com, ajax.googleapis.com.
Проверить поддержку TLS 1.3 и X25519 можно командой:
openssl s_client -connect www.microsoft.com:443 -tls1_3 2>&1 | grep -E "Protocol|Cipher"
Типичные ошибки
Открытый порт без fallback. Если Trojan/VLESS без fallback-сайта — сервер отвечает пустотой на обычный HTTP-запрос, что само по себе подозрительно.
Самоподписанный сертификат в Real TLS. Браузер (и DPI) сразу видит, что сертификат ненастоящий. Только Let’s Encrypt или другой CA.
Устаревший TLS fingerprint. Если клиент представляется как Chrome 80 в 2025 году — это аномалия. Всегда используйте актуальные отпечатки или параметр random.
Неправильный SNI для REALITY. Сайт-цель недоступен из вашей страны или не поддерживает TLS 1.3 — хендшейк упадёт.
Трафик идёт на стандартный порт, но сайт не отвечает. На 443 порту должен быть настоящий сайт или корректный fallback — особенно для Trojan.
Проверка и диагностика
Проверить TLS-хендшейк
openssl s_client -connect ВАШ-IP:443 -servername www.microsoft.com
Если REALITY настроен правильно — вы получите сертификат Microsoft, а не вашего сервера.
Проверить fingerprint через Wireshark
Запустите Wireshark на клиентской машине, отфильтруйте tls.handshake.type == 1 и сравните поле ClientHello с эталоном браузера через tlsfingerprint.io.
Проверить через curl
curl -x vless://UUID@ВАШ-IP:443?security=reality... https://ifconfig.me
Логи Xray
journalctl -u xray -f --no-pager
tail -f /var/log/xray/error.log
Не включайте "show": true в realitySettings на продакшн-сервере — это выводит отладочную информацию в лог, которая может раскрыть конфигурацию.
Вот несколько ключевых выводов из личного опыта работы с этими инструментами:
REALITY — лучший выбор на сегодня, если у вас нет домена и желания настраивать Nginx. Главное его преимущество: он не хранит сертификат вовсе, поэтому нечего «слить» даже при активном зондировании сервера.
Trojan актуален, когда нужна совместимость с максимальным числом клиентов или когда у вас уже есть домен с сертификатом. Fallback-сайт на Nginx — обязателен, иначе сервер «мигает» как прокси.
WebSocket + TLS через Nginx — самый гибкий, но и самый сложный вариант. Зато позволяет жить за Cloudflare CDN, что делает сервер практически неотличимым от обычного веб-ресурса.