XHTTP — это современный транспорт для протокола Vless, который позволяет передавать данные с помощью HTTP-запросов. Ключевой особенностью этой технологии является возможность использования CDN-серверов между клиентом и сервером. В этом уроке я покажу, как можно создать свой собственный VPN с помощью панели 3x-ui, используя технологию XHTTP.
Для установки панели нам понадобится VPS-сервер. Приобрести его можно в ishosting.
В сервисе доступны более 36 локаций. Если вам не нужна какая-то конкретная страна, выбирайте ту, что ближе к вам.
- 1 CPU
- 1 GB RAM
- 10 GB диска
- ОС Ubuntu 24 x64
Первое, что нужно сделать, — сменить пароль сервера, который пришёл в письме. Для этого можно использовать генераторы паролей или придумать собственный пароль. Я не рекомендую использовать собственные пароли, потому что, как правило, они ненадёжные. Лучше всего сгенерировать случайный набор символов с помощью команды:
openssl rand -base64 32
Эта команда просто сгенерирует случайный набор символов, но не сменит пароль. Чтобы сменить пароль, введите команду:
passwd
Введите пароль, повторите ввод пароля и нажмите Enter. Для того чтобы проверить, что всё корректно работает, не закрывая текущую вкладку терминала, откройте новую вкладку и подключитесь к серверу. Если после ввода нового пароля подключение прошло успешно, то всё хорошо, можно продолжать. Не забудьте сохранить пароль в надёжном месте.
Далее обновляем списки репозиториев и установленные пакеты. Если в процессе появляются какие-то окна, просто жмём Enter:
sudo apt update
sudo apt upgrade -y
И перезагружаем сервер:
sudo reboot
Так как сервер ушёл в перезагрузку, соединение пропадёт. Спустя пару минут можно подключиться к серверу заново.
Для начала нужно установить панель 3x-ui. Сделать это можно с помощью этой команды:
bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)
В процессе установки скрипт спросит, нужно ли установить свой порт: "Would you like to customize the Panel Port settings? (If not, a random port will be applied) [y/n]:". Можете нажать y
и ввести порт, который хотите, но я рекомендую просто нажать Enter, тогда порт и все остальные настройки зададутся случайно. После этого вы получите адрес и логин-пароль для доступа к панели. Сохраните эти данные в надёжном месте.
Введите его в браузер и залогиньтесь в панели. Красная плашка информирует нас о том, что соединение не зашифровано, и надо создать TLS-сертификат. Его можно создать двумя способами: подключить домен и выпустить сертификат через меню x-ui или создать самоподписанный сертификат. Мы создадим самоподписанный сертификат.
Для этого вводим следующие команды:
mkdir cert
cd cert
wget -qO- https://raw.githubusercontent.com/ServerTechnologies/3x-ui-with-xhttp/refs/heads/main/opensslcert | bash
После того как скрипт сработает, вы увидите несколько строчек с адресами файлов сертификатов. Откройте панель, в левом меню выберите Настройки → Сертификаты. Вставьте пути до файлов в соответствующие поля. Нажмите "Сохранить" и "Перезапуск панели". Панель перезапустится и вы увидите предупреждение о безопасности. Всё в порядке — браузер ругается, потому что мы используем самоподписанный сертификат. Просто нажимаем соответствующую кнопку и подключаемся к панели.
При последующем вводе адреса панели в браузер не забывайте менять протокол с http
на https
.
Технология XHTTP может использоваться как совместно с CDN-сервисами, так и отдельно — примерно так же, как обычный Vless Reality с TLS. Для этого в панели 3x-ui в правом меню выбираем Инбаунды → Создать инбаунд:
- Протокол: Vless
- Порт: 443
- Транспорт: XHTTP
- Безопасность: Reality
- В Dest и SNI указываем любой незаблокированный иностранный сайт
- Нажимаем Get New Cert и Get New Seed
- Внизу нажимаем "Создать"
Подключение создано. Также создан один клиент. Можно добавить ещё несколько клиентов. Теперь передайте ссылку для подключения на устройство или отсканируйте QR-код — и можно пользоваться.
CDN (Content Delivery Network) — это сеть серверов, распределённых по разным регионам, которая помогает доставлять контент пользователям быстрее и надёжнее. В контексте XHTTP — это просто промежуточный сервер между клиентом и сервером, на котором установлена панель. Это немного замедляет скорость, но при этом позволяет скрыть IP-адрес вашего сервера за IP-адресом сервера CDN.
Можно использовать практически любой сервис CDN, но на данный момент Cloudflare предоставляет возможность использовать свою инфраструктуру бесплатно, тогда как другие сервисы стоят денег. Поэтому именно на примере Cloudflare я покажу, как создать подобное подключение.
Нам понадобится домен — его можно купить прямо в Cloudflare. Этот домен надо направить на ваш VPN-сервер.
Настройки подключения в 3x-ui:
- Создать инбаунд
- Протокол: Vless
- Порт: любой, кроме 80, 443, 22
- Транспорт: XHTTP
- Хост: добавляем домен
- Путь: что угодно
- Безопасность: пусто
- Sniffing: выключено
Настройки в Cloudflare:
- В левом меню SSL/TLS → выбрать Flexible
- В левом меню SSL/TLS → Edge Certificates: выключить TLS 1.3
- В левом меню Network: включить gRPC
- В левом меню Rules → Overview:
- Кнопка Create rule → Origin rule
- Rule name: что угодно
- Поле "When incoming requests match…":
- Field: Hostname
- Operator: equals
- Value: вставляем домен или поддомен
- Destination Port: выбрать "Rewrite to…" и вставить туда порт из инбаунда
Настройка клиента:
- Добавляем ключ как обычно
- Адрес меняем на наш домен/поддомен
- Порт: 443
- Безопасность: TLS
- SNI: наш домен/поддомен
- Сохранить
Так как эта технология относительно новая, ещё далеко не все клиенты поддерживают её. В этом списке клиенты, которые точно поддерживают этот транспорт.
Windows и Linux:
Android:
iOS & macOS arm64: