Рубрики
Интернет

Полное руководство по настройке Fake TLS

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

1. Что такое Fake TLS и зачем он нужен

Fake TLS — это техника маскировки трафика прокси-протоколов под обычное HTTPS-соединение. Системы глубокой инспекции пакетов (DPI) умеют отличать обычный VPN от веб-трафика по паттернам: длине хендшейка, энтропии, последовательности байт. Fake TLS решает эту задачу: ваш трафик становится неотличим от соединения с каким-нибудь легитимным сайтом.

Важно разграничить два понятия, которые часто путают:

ПонятиеЧто делаетПример
Real TLSЧестный TLS-сертификат на реальном домене, трафик выглядит как HTTPSTrojan-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 + REALITYFake TLS с чужим сертификатомСредняяВысокая
Trojan-GFWReal TLS + доменный сертификатСредняяВысокая
V2Ray + WS + TLSReal 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.3Xray REALITY работает только с TLS 1.3
X25519 в списке шифровНеобходимо для ECDH-обмена в REALITY
Без TLS fingerprintingСайт не должен блокировать необычные ClientHello
Высокая репутация IPCDN крупных корпораций не блокируется по 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, что делает сервер практически неотличимым от обычного веб-ресурса.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *