Ваш личный «невидимый» прокси: VLESS + WebSocket + Cloudflare за 20 минут.
Привет, хакеры-любители и просто страдальцы от блокировок! Сегодня мы соберем такой прокси, что ваш провайдер будет думать, будто вы смотрите видео с котиками, а на самом деле вы будете сидеть в заблокированном Twitter и смотреть мемы. Никакой воды — только суть, пара полезных лайфхаков и, конечно, юмор, потому что без него в IT грустно.
Что получим на выходе:
- VLESS-прокси с шифрованием TLS;
- WebSocket-туннель через Cloudflare (IP VPS спрятан);
- Маскировка под обычный сайт (NGINX отдает HTML-страницу);
- Обход DPI и блокировок по IP.
Поехали!
Шаг 1: VPS – наш боевой конь
Берем любого VPS-провайдера (DigitalOcean, Vultr, Hetzner – не реклама). Система – Ubuntu 22.04 или 24.04 LTS (старые версии не юзаем, там могут быть танцы с бубном).
ssh root@<IP-вашего-сервера>
# Пароль вводим, если по ключу – то без пароля
Сразу обновляем всё, что можно:
apt update && apt upgrade -y
apt install curl wget unzip nginx -y
Настройка фаервола (UFW):
Открываем только самое необходимое – 22 (SSH), 80 (HTTP), 443 (HTTPS). Всё остальное глушим.
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
ufw status
Увидите примерно такую красоту:
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
Теперь наш сервер готов к приключениям.
Шаг 2: Cloudflare – маскировка и защита
Cloudflare будет стоять между пользователем и сервером, скрывая реальный IP. Заодно он умеет проксировать WebSocket – нам это и нужно.
- Заходим в dash.cloudflare.com, добавляем свой домен (меняем NS-записи у регистратора).
- Создаем A-запись: ваш_домен.com → IP VPS, обязательно включаем прокси (оранжевое облачко).
- В разделе SSL/TLS ставим режим Full (strict) – чтобы шифрование было от начала и до конца.
- Включаем Always Use HTTPS.
- В разделе Network проверяем, что WebSockets включены (по умолчанию они активны).
- Создаем Page Rule для секретного пути (например,
/secret-ws/*):- URL: ваш_домен.com/secret-ws/*
- Settings: Cache Level – Bypass, Security Level – Medium, WebSockets – On.
Этот путь будет использоваться только для прокси, а все остальные запросы пойдут на наш сайт-маскировку.
Сертификат:
Можно использовать бесплатный Let's Encrypt (позже установим) или сгенерировать Origin CA в Cloudflare. Я рекомендую Let's Encrypt – он проще и не требует постоянного обновления вручную.
Шаг 3: X-Ray – сердце нашего прокси
X-Ray – это форк V2Ray, который умеет VLESS и другие вкусности. Ставим одной командой:
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install
(Обратите внимание: в PDF была опечатка – Xray- install – мы её исправили, не повторяйте чужих ошибок!)
Генерируем UUID для клиента:
xray uuid
# Сохраните вывод, например: d342d11e-d424-4583-b36e-524ab1f0afa4
Теперь правим конфиг /usr/local/etc/xray/config.json. Останавливаем сервис перед редактированием:
systemctl stop xray
Вставляем следующий исправленный и полный JSON:
{
"log": {
"loglevel": "warning"
},
"inbounds": [
{
"port": 8443,
"protocol": "vless",
"settings": {
"clients": [
{
"id": "ВАШ-UUID-сюда",
"level": 0
}
],
"decryption": "none"
},
"streamSettings": {
"network": "ws",
"security": "tls",
"wsSettings": {
"path": "/secret-ws"
},
"tlsSettings": {
"certificates": [
{
"certificateFile": "/etc/letsencrypt/live/ваш_домен.com/fullchain.pem",
"keyFile": "/etc/letsencrypt/live/ваш_домен.com/privkey.pem"
}
]
}
}
}
],
"outbounds": [
{
"protocol": "freedom"
}
]
}
Важно:
port: 8443– X-Ray слушает локально на этом порту, NGINX будет проксировать на него с 443.path: "/secret-ws"– совпадает с тем, что мы указали в Page Rule. Можно добавить?ed=2048для early data – ускоряет握手, но это уже в клиенте.security: "tls"– без него ваш трафик будет как на ладони у DPI.
Сохраняем, запускаем и включаем автозагрузку:
systemctl start xray
systemctl enable xray
systemctl status xray # должно быть active (running)
Шаг 4: Сертификат Let's Encrypt – чтобы всё было по-честному
Ставим certbot и получаем сертификат для нашего домена:
apt install certbot python3-certbot-nginx -y
certbot --nginx -d ваш_домен.com
Следуем инструкциям (вводим почту, соглашаемся). После успеха certbot сам обновит конфиг NGINX и добавит пути к сертификатам.
Обновляем пути в config.json (если они отличаются от указанных выше) и перезапускаем X-Ray:
systemctl restart xray
Шаг 5: NGINX – маскировка под реальный сайт
NGINX будет отдавать обычную HTML-страницу для всех, кто зайдет на ваш домен, и только по секретному пути /secret-ws проксировать трафик на X-Ray.
Создаем заглушку для сайта (чтобы не светить пустотой):
mkdir -p /var/www/html
echo '<!DOCTYPE html><html><body><h1>Привет, это мой блог о котиках</h1><p>Здесь могла быть ваша реклама, но я проксирую трафик.</p></body></html>' > /var/www/html/index.html
Теперь редактируем конфиг /etc/nginx/sites-available/default (или создаем новый, но для простоты правим default). Вставляем такой конфиг:
server {
listen 80;
server_name ваш_домен.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name ваш_домен.com;
ssl_certificate /etc/letsencrypt/live/ваш_домен.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ваш_домен.com/privkey.pem;
# Основной сайт-маскировка
location / {
root /var/www/html;
index index.html;
try_files $uri $uri/ =404;
}
# Прокси WebSocket на X-Ray
location /secret-ws {
proxy_pass http://127.0.0.1:8443;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 86400;
proxy_send_timeout 86400;
}
}
Проверяем синтаксис и перезагружаем NGINX:
nginx -t
systemctl reload nginx
Теперь если открыть браузер и перейти на https://ваш_домен.com – увидите страницу с котиками. А если подключиться через клиент по пути /secret-ws – пойдет прокси-трафик.
Шаг 6: Клиент Nekoray – настраиваем за 2 минуты
Скачиваем Nekoray (есть для Windows, Linux, Android) с GitHub. Распаковываем, запускаем.
Добавляем новую конфигурацию:
- Group → Add → VLESS
- Address: ваш_домен.com
- Port: 443
- UUID: тот, что сгенерировали на шаге 3
- Encryption: none
- Transport: ws
- Path:
/secret-ws?ed=2048(early data ускоряет первый пакет, но можно и без) - Host: ваш_домен.com
- TLS: включить, Allow Insecure – выключить (чтобы проверял сертификат)
Либо просто скопируйте готовую ссылку (подставьте свои данные):
vless://<UUID>@ваш_домен.com:443?type=ws&path=%2Fsecret-ws%3Fed%3D2048&host=ваш_домен.com&security=tls#MyCloudflareProxy
Импортируйте её через Import from Clipboard.
Подключаемся – и вуаля! Проверяем свой IP на whatismyipaddress.com – должен быть IP Cloudflare, а не вашего VPS.
Шаг 7: Тесты и защита от блокировок
- Откройте заблокированный сайт (например, Twitter) – должно работать.
- Скорость: делаем тест на speedtest.net – обычно 50–200 Мбит/с (зависит от VPS).
- Локально можно проверить через SOCKS5: Nekoray поднимает прокси на 127.0.0.1:1080 – делаем
curl -x socks5://127.0.0.1:1080 http://ipinfo.io.
Дополнительные плюшки для защиты:
- Добавьте в конфиг X-Ray
fallbacks– если входящий трафик не VLESS, он перенаправляется на порт 80 (NGINX), чтобы даже при сканировании порта не было видно прокси.
Пример фрагмента для inbounds:
"fallbacks": [
{ "dest": 80, "xver": 0 }
]
- Увеличьте таймауты в NGINX (мы уже поставили 86400 секунд – 24 часа).
- Отключите буферизацию, добавив в
location /secret-wsстрокуproxy_buffering off;– это поможет при долгих соединениях.
Мониторинг логов:
- X-Ray:
journalctl -u xray -f - NGINX:
tail -f /var/log/nginx/error.log
Если видите ошибки вроде upstream timed out – увеличьте таймауты еще больше.
Заключение: что мы имеем?
Мы собрали полностью рабочий, обфусцированный прокси, который:
- Прячет реальный IP за Cloudflare;
- Шифрует трафик TLS;
- Маскируется под обычный сайт;
- Использует WebSocket, который сложнее детектить.
Провайдер видит лишь HTTPS-соединения на Cloudflare, а внутри – WebSocket-чат с вашим сервером. Никто не догадается, что вы смотрите запрещенный контент, а не котиков.
Пара советов напоследок:
- Если используете Cloudflare Origin CA вместо Let's Encrypt – не забудьте выставить в SSL/TLS режим Full (strict).
- Периодически обновляйте сертификаты (certbot позаботится об этом автоматически).
- Для большей анонимности можно добавить
"flow": "xtls-rprx-vision"в настройки клиента и сервера – это новая фича XTLS, делающая трафик еще более похожим на обычный HTTPS.
На этом всё. Если что-то пошло не так – перечитайте инструкцию, скорее всего, забыли поставить запятую в JSON.
Удачи в обходе блокировок и помните: интернет должен быть свободным, а провайдеры – невнимательными! 🚀