VPN VLESS с XTLS-Reality
Статья описывает процесс установки и настройки VPN-сервера VLESS с использованием Xray и XTLS-Reality на Ubuntu, включая маскировку трафика и решение возможных проблем.
Для поднятия VLESS VPN сервера на вашем сервере с Ubuntu, используется Xray – это мощный инструмент для настройки VLESS, VMess, Trojan и других протоколов.
Шаг 1: Подготовка сервера
Обнови систему и установи необходимые зависимости
sudo apt update && sudo apt upgrade -y
sudo apt install curl wget unzip -y
Шаг 2: Установка Xray
- Скачай официальный скрипт установки Xray:
bash <(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)
2. Проверь установку
xray -version
После выполнения скрипта Xray будет установлен в систему, а его конфигурационные файлы будут находиться в директории /usr/local/etc/xray/
.
Шаг 3: Настройка Xray с XTLS-Reality
1. Установи генератор UUID
apt install uuid-runtime
2. Сгенерируйте и скопируй куда-то: YOUR_UUID
:
uuidgen
3. Сгенерируй приватный ключ с помощью команды (и скопируйте куда-то):
:YOUR_PRIVATE_KEY
xray x25519
4. Создай конфигурационный файл:
sudo nano /usr/local/etc/xray/config.json
Пример конфигурации для XTLS-Reality:
{
"log": {
"loglevel": "warning",
"access": "/var/log/xray/access.log",
"error": "/var/log/xray/error.log"
},
"inbounds": [
{
"port": 443,
"protocol": "vless",
"settings": {
"clients": [
{
"id": "YOUR_UUID",
"flow": "xtls-rprx-vision",
"level": 0
}
],
"decryption": "none"
},
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"show": true,
"dest": "www.nvidia.com:443",
"xver": 0,
"serverNames": [
"www.nvidia.com"
],
"privateKey": "YOUR_PRIVATE_KEY",
"shortIds": ["abc123", "daf456"]
}
}
}
],
"outbounds": [
{
"protocol": "freedom",
"settings": {}
}
]
}
Внимание! Никаких комментариев в нем быть не может!
Иногда IPv6 может быть недоступен, тогда нужно будет добавить, чтоб прокси работал в ipv4
"outbounds": [
{
"protocol": "freedom",
"settings": {},
"streamSettings": {
"sockopt": {
"domain": "ipv4"
}
}
}
]
Подробно, что и зачем в конфиге
{
// Уровень логирования и пути к файлам логов
"log": {
"loglevel": "debug", // Уровень логирования (debug, info, warning, error)
"access": "/var/log/xray/access.log", // Путь к файлу доступа
"error": "/var/log/xray/error.log" // Путь к файлу ошибок
},
"inbounds": [
{
// Настройки входящего подключения
"port": 443, // Порт, на котором будет слушать Xray
"protocol": "vless", // Протокол, используемый для входящих соединений
"settings": {
"clients": [
{
// Настройки клиента
"id": "YOUR_UUID", // Уникальный идентификатор клиента
"flow": "xtls-rprx-vision", // Тип потока (xtls-rprx-vision)
"level": 0 // Уровень доступа (0 - базовый уровень)
}
],
"decryption": "none" // Метод расшифровки (none - без расшифровки)
},
"streamSettings": {
// Настройки потока
"network": "tcp", // Тип сети (tcp или ws)
"security": "reality", // Уровень безопасности (reality)
"sockopt": {
// Настройки сокетов
"domain": "ipv4" // Использовать только IPv4 для соединений
},
"realitySettings": {
// Настройки для режима reality
"show": true, // Показать информацию о соединении
"dest": "www.nvidia.com:443", // Целевой хост и порт
"xver": 0, // Версия XTLS
"serverNames": [
"www.nvidia.com" // Имена серверов для SNI
],
"privateKey": "YOUR_PRIVATE_KEY", // Закрытый ключ для XTLS
"shortIds": ["abc123", "daf456", "1f2e3d4c", "aa", "deadbeef"] // Короткие идентификаторы для клиентов
}
}
}
],
"outbounds": [
{
// Настройки исходящего подключения
"protocol": "freedom", // Протокол для исходящих соединений
"settings": {}, // Дополнительные настройки (пока не используются)
"streamSettings": {
"sockopt": {
// Настройки сокетов
"domain": "ipv4" // Использовать только IPv4 для исходящих соединений
}
}
}
]
}
Зачем нужен параметр
dest
?Параметр
dest
помогает маскировать трафик, создавая видимость, что соединение направлено к указанному хосту.Как работает маскировка трафика с
dest
- Маскировка соединения:
- Когда указываешь
dest
, например,www.nvidia.com:443
, трафик будет выглядеть так, будто он направляется именно к этому хосту.- Технология XTLS:
- Использование XTLS (или других технологий шифрования) добавляет уровень защиты, делая анализ трафика сложнее для третьих лиц. Это означает, что даже если кто-то перехватит трафик, он не сможет легко определить его истинный источник и содержание.
- Политики доступа:
- Некоторые сети могут блокировать определенные адреса, но если ты используешь
dest
, который разрешен (например, популярные сайты), это может помочь обойти такие ограничения.Как выбрать
dest
?
- Безопасность:
- Убедись, что выбранный адрес поддерживает HTTPS, если хочешь использовать защищенные соединения. Это важно для конфиденциальности и безопасности данных.
- Тестирование:
- Попробуй разные адреса, чтобы определить, какой из них работает лучше для твоих нужд. Протестируй скорость и доступность различных сайтов.
- Сайты с высокой доступностью:
- Выбирай популярные и надежные сайты, такие как
www.google.com
илиwww.cloudflare.com
, чтобы минимизировать вероятность недоступности.
Шаг 3: Запуск Xray
- Запусти Xray:
sudo systemctl start xray
- Включи автозапуск:
sudo systemctl enable xray
- Проверь статус:
sudo systemctl status xray
Шаг 4: Настройка клиента
- Установи клиент, поддерживающий VLESS и XTLS (например, XrayN, V2RayN, или Qv2ray). У меня мак и я использую Streisand
- Добавь сервер с такими параметрами:
- Server Address (Адрес сервера): Введи адрес вашего Xray-сервера (например,
ваш_домен.com
или IP-адрес сервера). - Port (Порт): Укажи порт
443
, это порт, на котором слушает сервер. - ID (UUID): Введи UUID клиента:
.YOUR_UUID
- Flow (Поток): Установи поток на
xtls-rprx-vision
. - Security (Безопасность): Установи уровень безопасности на
reality
. - TLS Settings (Настройки TLS): Включи TLS и настройте SNI (Server Name Indication):
- SNI: Введи
www.nvidia.com
или тот, что выбрал ты. - Network (Сеть): Убедись, что тип сети установлен на
TCP
. - Private Key (Закрытый ключ): В некоторых клиентах может быть поле для ввода закрытого ключа. Используй тот, что мы сгенерировали.
- Server Address (Адрес сервера): Введи адрес вашего Xray-сервера (например,
- Сохранение и подключение
Как вариант, скормить JSON конфиг клиенту, они почит все это поддерживают
{
"log": {
"loglevel": "warning" // Уровень логирования
},
"outbounds": [
{
"protocol": "vless", // Протокол для исходящих соединений
"settings": {
"vnext": [
{
"address": "YOUR_IP", // Адрес вашего сервера
"port": 443, // Порт сервера
"users": [
{
"id": "YOUR_UUID", // UUID клиента
"encryption": "none", // Метод шифрования
"flow": "xtls-rprx-vision" // Тип потока
}
]
}
]
},
"streamSettings": {
"network": "tcp", // Тип сети
"security": "reality", // Уровень безопасности
"realitySettings": {
"fingerprint": "chrome", // Подделка отпечатка браузера
"publicKey": "YOUR_PRIVATE_KEY", // Публичный ключ
"serverName": "www.nvidia.com", // Имя сервера для SNI
"shortId": "abc123", // Короткий идентификатор
"show": false // Показать информацию о соединении
}
},
"tag": "proxy" // Тег для маршрутизации
},
{
"protocol": "freedom", // Протокол для свободного доступа
"tag": "direct" // Тег для маршрутизации
},
{
"protocol": "blackhole", // Протокол для блокировки
"tag": "block" // Тег для маршрутизации
}
],
"inbounds": [
{
"port": 1080, // Порт для локального подключения
"protocol": "socks", // Протокол для локального подключения
"settings": {
"auth": "noauth", // Без аутентификации
"udp": true // Поддержка UDP
},
"tag": "socks" // Тег для маршрутизации
}
],
"dns": {
"servers": [
"8.8.8.8", // DNS сервер 1
"8.8.4.4" // DNS сервер 2
]
}
}
Удалите все комментарии, иначе не взлетит!
Шаг 4: Решение проблем
Если не подключается, то смотрим логи, какую именно ошибку он выдает
tail -f /var/log/xray/error.log
Посмотри, есть ли вообще соединение, идет ли трафик:
tail -f /var/log/xray/access.log