Поднимаем свой VPN
Гайд от Матвея 🥸
Это гайд по установке своего собственного VPN. Сначала давайте поймем, с чем мы вообще будем работать.
Xray: Это платформа для прокси-серверов, поддерживающая различные протоколы, включая VLESS и Shadowsocks. Xray предоставляет расширенные возможности для обхода блокировок и обеспечения безопасности соединений.
TLS: Это криптографический протокол, обеспечивающий защищённую передачу данных между узлами в сети Интернет. Он является преемником протокола SSL (Secure Sockets Layer) и используется для шифрования информации, аутентификации сторон и обеспечения целостности передаваемых данных.
XTLS: Это расширение TLS, оптимизированное для прокси-протоколов, таких как VLESS. XTLS улучшает производительность и снижает задержки, обеспечивая более эффективное шифрование и передачу данных.
VLESS: Это лёгкий и эффективный протокол передачи данных, разработанный как альтернатива протоколу VMess. VLESS не предусматривает шифрования на уровне протокола, полагаясь на внешние механизмы, такие как TLS, для обеспечения безопасности. Он обеспечивает более высокую производительность и устойчивость к блокировкам.
3X-UI: Это графическая панель управления для сервера Xray, которая поддерживает современные протоколы, такие как Shadowsocks-2022 и VLESS с XTLS. Она облегчает настройку и управление сервером, предоставляя удобный интерфейс для конфигурации различных параметров.
TCP (Transmission Control Protocol): Это один из основных протоколов интернета, обеспечивающий надёжную передачу данных между устройствами. TCP гарантирует доставку пакетов в правильном порядке и без потерь, что делает его предпочтительным выбором для приложений, требующих высокой надёжности.
Reality: Это функция в Xray, обеспечивающая маскировку трафика под легитимный HTTPS. Она позволяет серверу определять, является ли клиент "своим" на этапе TLS-рукопожатия, и, если да, работать как прокси. Это повышает устойчивость к обнаружению и блокировке трафика.
uTLS: Это библиотека, позволяющая имитировать поведение различных клиентов TLS, таких как браузеры Chrome или Firefox. Использование uTLS помогает маскировать трафик под обычный веб-трафик, что затрудняет его обнаружение и блокировку.
Шаг 0: Подготовка
- Арендовать зарубежный сервер на Ubuntu (я попробовал несколько провайдеров: aeza.ru, aeza.net, cloudzy.com. Последний принимает только зарубежные карты)
- Купить домен (это опционально)
Шаг 1: Установка 3x-ui
- Команда установки:
Подключаемся к серверу по SSH (ssh user@host) и в терминале выполняем команду:
bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)
Эта команда загружает и запускает установочный скрипт для 3x-ui, который автоматизирует процесс установки панели управления для Xray на вашем сервере.
- Настройка в процессе установки:
В ходе установки вам будет предложено настроить параметры панели, такие как логин, пароль, порт и URL. Можете их изменить, а можете оставить дефолтные
Шаг 2: Настройка SSL-сертификата
Для управления x-ui в терминале пишем команду x-ui
В панели 3x-ui перейдите в раздел управления SSL-сертификатами (обычно пункт 18) и следуйте инструкциям для интеграции с Cloudflare. Это обеспечит защищённое соединение с сервером.
Шаг 3: Настройка DNS
Если нет домена, пропускаем этот шаг.
В настройках DNS вашего домена создайте A-запись, которая связывает поддомен с IP-адресом вашего сервера. Это позволит подключаться к вашему серверу через доменное имя и будет выглядеть более естественно
Шаг 4: Поиск SNI для маскировки
-
Что такое SNI:
SNI (Server Name Indication) — расширение протокола TLS, позволяющее клиенту указать имя хоста, к которому он подключается, на этапе установления соединения. -
Зачем выбирать сервер из той же подсети:
Выбор сервера из той же подсети для маскировки помогает снизить задержки и повысить скорость соединения, так как маршрутизация трафика происходит более эффективно. -
Сканирование подсети:
Скачайте и локально (со своего ПК) запустите утилиту RealiTLScanner (инструкция по запуску есть в README проекта) для сканирования серверов в вашей подсети:./RealiTLScanner -addr <IP вашего сервера> -thread 15 -timeout 3 -out out.csvРезультаты будут сохранены в
out.csv.
Можно запустить команду без-out. Тогда результаты не будут сохраняться в таблицу -
Определение сервера с минимальным пингом:
С вашего сервера выполните командуpingдля различных адресов изout.csv, чтобы найти сервер с минимальной задержкой. Например:ping github.comКоманда выполняется с вашего сервера, а не с локального устройства. Необходимо определить сервер с минимальным пингом от вашего сервера. Этот сервер можно использовать в качестве SNI для маскировки.
Шаг 5: Настройка Inbound в 3x-ui
-
Добавление нового Inbound:
В панели 3x-ui перейдите в раздел Inbounds и нажмите Add inbound. -
Параметры Inbound:
- Remark: Любое название для идентификации подключения.
- Protocol:
vless— лёгкий и эффективный протокол для передачи данных. - Listen IP: IP-адрес вашего сервера
- Port:
443— стандартный порт для HTTPS-трафика. - Transmission:
TCP— надёжный протокол передачи данных. - Proxy Protocol, HTTP Obfuscation, Sockopt, External Proxy: Отключите эти параметры, если они не требуются.
- Security:
Reality— обеспечивает маскировку трафика под легитимный HTTPS. - Show:
Off— скрывает детали подключения. - Xver:
0— версия Xray. - uTLS:
Chrome— маскировка под трафик браузера Chrome. - Dest (Target):
<sni_server>:443— адрес сервера для маскировки. - SNI:
<sni_server>, www.<sni_server>— домены для SNI. - Max time diff:
0.
-
Генерация сертификата:
Нажмите кнопку Get new cert для генерации нового сертификата. -
Sniffing:
Оставьте настройки по умолчанию, если нет особых требований.
Шаг 6: Добавление клиентов
-
Добавление нового клиента:
В разделе Inbound нажмите на три точки рядом с созданным подключением и выберите Add client. -
Настройка клиента:
- Email: Идентификатор клиента.
- ID: Уникальный идентификатор (генерируется автоматически).
- Flow: Выберите
xtls-rprx-visionдля оптимальной производительности.
-
Получение данных для подключения:
После создания клиента вы можете получить строку подключения или QR-код для удобного подключения с клиентского устройства.