🛡️ Персональный VPN для жосткой цензуры (VLESS + XTLS-Reality)
📌 Что это / Зачем это нужно
VLESS + XTLS-Reality — это связка протокола и транспорта, которая маскирует VPN-трафик под обычный HTTPS. DPI (глубокая инспекция пакетов) в России (ТСПУ) и Китае (GFW) не может отличить твой VPN от обычного посещения google.com. Это сейчас золотой стандарт обхода жёстких интернет-блокировок.
Обычные VPN (WireGuard, OpenVPN, IPSec) палятся DPI за секунды — у них характерные паттерны трафика. Reality решает эту проблему: твой сервер при TLS-хендшейке предъявляет настоящий сертификат реального сайта, а не самоподписанный. Для внешнего наблюдателя ты просто зашёл на www.microsoft.com.
⚡ Как работает Reality (на пальцах)
Обычный VPN: ты подключаешься к серверу → DPI видит «VPN-протокол на IP x.x.x.x» → блокирует.
Reality работает иначе:
- Твой клиент отправляет TLS ClientHello с SNI
www.microsoft.com(или другой реальный сайт) - DPI видит обычный HTTPS-запрос к Microsoft — пропускает
- Твой сервер перехватывает запрос, проверяет секретный ключ в хендшейке
- Если ключ верный — устанавливает VPN-туннель
- Если ключ неверный (кто-то проверяет твой сервер) — проксирует запрос на настоящий microsoft.com и возвращает настоящую страницу
Аналогия: это как секретный бар за дверью обычного магазина. Кто знает пароль — попадает внутрь. Кто не знает — видит обычный магазин. Проверяющий заходит, видит магазин, уходит. А за стеной — вечеринка.
🔧 Требования к серверу
Железо (минимум)
- CPU: 1 vCPU (Xray почти не грузит процессор — XTLS пропускает TLS без перешифровки)
- RAM: 512 MB (Xray в работе ~20-30 MB)
- Диск: 10 GB SSD
- ОС: Ubuntu 22.04 / 24.04 или Debian 12
Самый дешёвый VPS за $3-5/месяц — более чем достаточно для 1-3 пользователей.
Пропускная способность (это важнее железа)
- Порт: минимум 1 Gbps
- Трафик: 1-2 TB/месяц на одного, 3-5 TB на семью/друзей, или анлим
- Если смотришь видео через VPN — трафик улетает быстро, учитывай
Локация (критично для скорости)
Для пользователей в России (пинг в скобках):
- Германия, Франкфурт (30-50 ms) — лучший вариант
- Финляндия, Хельсинки (30-40 ms) — отлично
- Нидерланды (40-60 ms) — хорошо
- Латвия, Рига (30-50 ms) — хорошо
Для пользователей в Китае:
- Гонконг (30-60 ms) — лучший вариант
- Япония, Токио (40-80 ms) — отлично
- Сингапур (60-100 ms) — хорошо
- Тайвань (50-80 ms) — хорошо
Плохой выбор для обоих: США (120-200 ms), Бразилия (200-300 ms), Австралия.
Проверенные провайдеры
- Hetzner — Германия, от €3.29/мес, 20 TB трафик. Лучшее соотношение цена/качество для России
- Vultr — много локаций, от $3.50/мес, 1-2 TB трафик
- BandwagonHost — CN2 GIA линии в Китай, заточен под обход GFW
- Oracle Cloud Free Tier — бесплатно навсегда (2 VM), но лотерея с качеством IP
Проверка IP перед настройкой
Сразу после покупки VPS проверь, что IP не заблокирован в целевой стране:
# С самого VPS — проверяешь доступность
curl -I https://www.google.com
# Онлайн-сервисы (открой в браузере):
# check-host.net — ping из разных стран
# ping.pe — проверка доступности из Китая
# https://bgp.he.net — инфо о подсети
Если IP заблокирован — у большинства провайдеров можно запросить замену или пересоздать VPS.
🎯 Установка Xray + Reality (пошагово)
Шаг 1: Подготовка сервера
Подключаешься к VPS по SSH и обновляешь систему:
apt update && apt upgrade -y
Шаг 2: Установка Xray
Официальный скрипт от проекта XTLS:
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install
Проверяешь что установилось:
xray version
Шаг 3: Генерация ключей
UUID (идентификатор пользователя):
xray uuid
Запиши результат — это твой id. Например: a1b2c3d4-e5f6-7890-abcd-ef1234567890
Пара ключей Reality (приватный + публичный):
xray x25519
Выдаст две строки:
Private key:— только для сервера, никому не давайPublic key:— для клиентов
Запиши оба ключа.
Шаг 4: Выбор SNI (сайт-маскировка)
SNI — это домен, под который маскируется твой трафик. Требования:
- Поддерживает TLS 1.3 и HTTP/2
- Не заблокирован в целевой стране
- Желательно — на CDN близко к твоему серверу
- Не должен быть слишком популярным VPN-маскировочным доменом (если все будут прятаться за один домен — его начнут проверять)
Хорошие варианты:
www.microsoft.comwww.samsung.comwww.amd.comwww.logitech.comdl.google.comwww.asus.com
Проверить поддержку TLS 1.3:
# С VPS:
curl -I --tlsv1.3 https://www.microsoft.com
# Если ответ 200/301/302 — подходит
Шаг 5: Генерация shortId
openssl rand -hex 8
Запиши — понадобится и для сервера, и для клиента.
Шаг 6: Конфиг сервера
Создаёшь файл конфигурации:
nano /usr/local/etc/xray/config.json
Содержимое (замени значения на свои):
{
"log": {
"loglevel": "warning"
},
"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": [
"ТВОЙ_SHORT_ID"
]
}
},
"sniffing": {
"enabled": true,
"destOverride": [
"http",
"tls",
"quic"
]
}
}
],
"outbounds": [
{
"protocol": "freedom",
"tag": "direct"
},
{
"protocol": "blackhole",
"tag": "block"
}
]
}
Шаг 7: Открываем порт и запускаем
# Если используешь UFW:
ufw allow 443/tcp
# Если iptables напрямую:
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# Запуск Xray:
systemctl enable xray
systemctl start xray
# Проверка:
systemctl status xray
Если статус active (running) — сервер работает.
Шаг 8: Проверка что маскировка работает
С другой машины попробуй открыть в браузере https://IP_СЕРВЕРА. Ты должен увидеть страницу microsoft.com (или какой SNI выбрал). Это значит, что для внешнего наблюдателя твой сервер выглядит как прокси Microsoft.
📱 Настройка клиентов
Данные для подключения (сохрани)
Тебе понадобятся для каждого клиента:
- IP сервера
- Порт:
443 - UUID: тот что сгенерировал
- Flow:
xtls-rprx-vision - Security:
reality - SNI:
www.microsoft.com(или что выбрал) - Public key: публичный ключ из шага 3
- Short ID: из шага 5
- Fingerprint:
chrome
Android — v2rayNG
- Установи v2rayNG из Google Play или GitHub
- Нажми
+→Ввод вручную [VLESS] - Заполни: адрес, порт 443, UUID, flow =
xtls-rprx-vision - Transport:
tcp, TLS:reality - SNI, public key, short ID, fingerprint =
chrome - Сохрани, подключайся
iOS — Streisand или Wings X
- Установи из App Store
- Добавь сервер вручную или импортируй через ссылку/QR
- Те же параметры что выше
Windows — Hiddify или v2rayN
- Скачай с GitHub
- Добавь сервер, заполни параметры
- Включи системный прокси или TUN-режим (весь трафик через VPN)
macOS — Hiddify или V2Box
- Скачай из GitHub / App Store
- Импортируй конфиг
- Включи
Linux — Nekoray или Hiddify
# Или используй xray напрямую с клиентским конфигом:
# Создай client-config.json с inbound socks5 на 127.0.0.1:1080
# и outbound vless+reality на твой сервер
xray run -c client-config.json
Генерация ссылки для быстрого импорта
Чтобы не вводить всё руками на каждом устройстве, сгенерируй VLESS-ссылку:
vless://UUID@IP_СЕРВЕРА:443?encryption=none&flow=xtls-rprx-vision&security=reality&sni=www.microsoft.com&fp=chrome&pbk=ПУБЛИЧНЫЙ_КЛЮЧ&sid=SHORT_ID&type=tcp#имя-профиля
Эту ссылку можно вставить в любой клиент через «импорт из буфера обмена» или сделать QR-код.
🧠 Готовые комбо / Практические советы
Добавление нескольких пользователей
Просто добавь ещё один объект в массив clients в конфиге сервера:
"clients": [
{
"id": "uuid-пользователь-1",
"flow": "xtls-rprx-vision"
},
{
"id": "uuid-пользователь-2",
"flow": "xtls-rprx-vision"
}
]
Каждому пользователю — свой UUID. Перезапусти Xray:
systemctl restart xray
Мониторинг и логи
# Логи в реальном времени:
journalctl -u xray -f
# Проверка что порт слушает:
ss -tlnp | grep 443
# Сколько соединений сейчас:
ss -tn | grep 443 | wc -l
Автообновление Xray
# Обновить до последней версии:
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install
systemctl restart xray
Проверка что всё работает
После подключения клиента:
# На клиенте — проверяешь свой внешний IP:
curl ifconfig.me
# Должен показать IP твоего VPS, не твой реальный
# Проверка утечки DNS:
# Открой https://dnsleaktest.com в браузере
⚠️ Важные моменты
- Порт только 443. Любой другой порт — красный флаг для DPI. HTTPS живёт на 443, и твой VPN должен тоже
- SNI выбирай аккуратно. Сайт должен поддерживать TLS 1.3, не быть заблокированным в целевой стране, и не быть «популярным среди VPN-пользователей» (если миллион людей маскируются под один домен — его начнут проверять)
- Приватный ключ — только на сервере. Клиентам даёшь только публичный ключ. Если приватный утечёт — пересоздавай пару
- IP сервера может засветиться. Если DPI заметит аномалию (слишком много трафика к одному IP), могут заблокировать IP целиком. Поэтому не раздавай доступ сотне людей
- Не используй этот VPS для других сервисов на порту 443. Xray должен владеть портом 443 единолично
- В Китае (GFW) могут блокировать целые подсети. Если IP заблокировали — меняй сервер, а не настройки
- Регулярно обновляй Xray. Это гонка вооружений — DPI развивается, Xray тоже. Старые версии могут начать палиться
- flow: xtls-rprx-vision обязателен. Без него Reality не работает в полную силу — трафик не будет оптимально маскироваться
- Fingerprint ставь
chrome. Это самый распространённый браузер — твой TLS-отпечаток будет неотличим от миллиардов других пользователей Chrome