Интернет-пространство становится все более ограниченным, и многие пользователи сталкиваются с блокировкой популярных ресурсов, таких как YouTube и Instagram.В современном мире безопасность и анонимность в интернете становятся все более важными. Один из лучших способов защитить свои данные и обойти блокировки любых сервисов (в том числе Ютуб) — это создание собственного VPN-сервера.В этой статье рассмотрен способ обхода цензуры путем создания своего VPN, используя протокол VLESS XTLS Reality, который позволяет получить доступ к сайтам, блокирующим пользователей из Российской Федерации. На данный момент vless-xtls-reality не может быть обнаружен с помощью DPI (глубокой проверки пакетов) даже в таких странах, как Китай. Однако следует учитывать, что регуляторы могут применить другие методы блокировки. Для повышения надежности обратите внимание на следующие советы:Что нельзя делать:1. Не используйте VPS для протоколов, которые могут быть обнаружены. Например, такие как WireGuard, OpenVPN, Shadowsocks и другие. Некоторые провайдеры блокируют VPS, на которых ранее использовались подобные протоколы.2. Не заходите в рунет через VPS. Лучше осуществлять доступ к российским сайтам напрямую, минуя прокси. В крайнем случае, используйте цепочку Я->VPS->Warp->Рунет. Это предотвратит подозрения со стороны цензоров, так как двойное пересечение границы (туда и обратно) в короткий промежуток времени может вызвать подозрения и блокировку прокси.3. Ограничьте доступ к прокси небольшим кругом пользователей. Идеально — до 5 человек. В Китае аномальный трафик к серверу от большого числа пользователей может привести к блокировке сервера, и российские провайдеры могут перенять этот опыт. Соблюдая эти правила, доступ к серверу будет трудно заблокировать. Однако для дополнительной безопасности рекомендуется подготовить “План Б” — проксирование трафика через CDN (сеть доставки контента).CloudFlare Warp Warp — это публичная сеть прокси, предоставляемая CloudFlare, использующая протокол WireGuard. В России подключение к Warp невозможно, но с зарубежного VPS — вполне реально. В этом сценарии Warp выполняет две функции:1. Обход западной цензуры — некоторые западные сайты могут блокировать доступ с вашего VPS, но с помощью Warp можно обойти эти ограничения.2. Дополнительная защита от блокировок — проксирование запросов от VPS в российский интернет, чтобы не компрометировать VPS.Первое что вам будет нужно - VPS сервер. Говоря о том, что нам там предлагают под наши цели — это виртуальные VPS сервера, расположенные в странах европы, России и США. С реальной скоростью соединения с сервером примерно 700-800 мбит/с и безлимитным трафиком (что очень важно для VPN сервера). Лично я буду использовать хостера Aeza - дешевый и стабильный, с нормальными характеристиками сервера, он полностью подходит под наши требования.1. Пошаговая инструкция: настройка VPS1. Зарегистрируйтесь на сайте хостинг-провайдера и перейдите в личный кабинет.2. Выберите виртуальный сервер с тарифом Shared, минимальной конфигурацией и операционной системой Ubuntu 22.04.3. Отключите бэкапы и оплатите аренду сервера.4. Подождите активации сервера, после чего получите данные для авторизации.Подключение и настройка сервера1. Подключитесь к серверу по SSH, используя командуssh root@ip-адрес2. Обновите систему:apt update && apt full-upgrade -y3. Перезагрузите сервер: reboot4. Установите необходимые пакеты:apt install docker.io docker-compose git curl bash openssl nano -y5. Установите панель управления 3X-UI версии 2.0.2:Внимание: я делал инструкцию для версии 2.0.2, если вы хотите сделать все в точности по инструкции, используйте эту же версию. В новых поменялся интерфейс и логика работы с WARP, я же создавал инструкцию и делал скриншоты именно с версии v2.0.2, она стабильная и самодостаточная.• Склонируйте репозиторий и установите 3x-ui v2.0.2:git clone https://github.com/MHSanaei/3x-ui.git cd 3x-ui nano docker-compose.ymlоткроется текстовый редактор:в 6 строке замените "latest" на "v2.0.2"было: image: ghcr.io/mhsanaei/3x-ui:latestстало: image: ghcr.io/mhsanaei/3x-ui:v2.0.2чтобы сохранится, нажмите: CTRL+X, Y, ENTER#И используем команду docker-compose up -d6. Установите Warp, используя скрипт:• Удалите старую версию: warp u• Установите новую версию:bash <(curl -sSL https://raw.githubusercontent.com/hamid-gh98/x-ui-scripts/main/install_warp_proxy.sh)Во время установки скрипт спросит у вас цифру, нужно ответить 40000.7. Сгенерируйте самоподписанный TLS-сертификат и скопируйте его в панель 3X-UI:openssl req -x509 -newkey rsa:4096 -nodes -sha256 -keyout private.key -out public.key -days 3650 -subj "/CN=APP" docker cp private.key 3x-ui:private.key docker cp public.key 3x-ui:public.keyПока что остановимся с настройкой сервера, вернемся к этому еще раз позже.2. Настройка панели 3X-UI1. Откройте панель управления в браузере по адресу http://ip-адрес:2053/.2. Войдите в систему, используя логин admin и пароль admin.3. В разделе “Panel Settings” укажите следующие параметры:• Panel Port: (любое случайное число от 1000 до 65535, кроме 40000 - оно уже занято варпом, в инструкции я буду использовать 54321 - но вы придумайте своё). Далее везде вместо порта 54321 вставляйте своё число.• Panel Certificate Public Key Path: /public.key• Panel Certificate Private Key Path: /private.key• Panel URL Root Path: секретная строка для доступа к панели, которая начинается и заканчивается "/". Я использую /mysecreturl/, но вы придумайте свою. Далее везде вместо строки /mysecreturl/ используйте свою. Нажмите кнопку “Save”, а затем “Restart Panel”. После перезапуска панели обновите страницу, изменив порт в адресной строке на новый.4. В разделе “Security Settings” замените стандартные логин и пароль на новые.Теперь панель будет доступна по HTTPS-адресу вида https://:<ваш порт>/<ваш путь>/.Настройка Xray1. Перейдите в раздел “Xray Settings” и включите следующие опции:• IPv4 Configs -> Use IPv4 for Google.• WARP Configs -> Route OpenAI (ChatGPT) через WARP.Сохраните настройки и перезагрузите Xray.2. В разделе “Routing Rules” настройте правила маршрутизации, чтобы направить весь российский трафик через WARP:• Отредактируйте строку “geosite:openai”, добавив geosite:category-gov-ru,regexp:.*\.ru$,geosite:openai• Добавьте новое правило: IP: geoip:ru, Outbound tag: WARP.В итоге благодаря этому мы видим следующую картину - РУ трафик идет через WARP, а зарубежный через сервер.Сохраните настройки и перезагрузите Xray.3. Маскировка под сайт и получение ключа1. Найдите сайт для маскировки. Не советую использовать малоизвестные и мелкие сайты, в моменте они могут перестать работать должным образом, сам недавно с этим столкнулся. Пробуйте yadndex.ru, google.com, cloudflare.com и подобное. Проверьте время отклика сайта с сервера, найдите сайт м наименьшим откликом и используйте его.Не используйте сайт со скриншота - просто пример.Не используйте сайт со скриншота - просто пример.Проверяем командой ping <адрес сайта>, например ping cloudflare.com.Настройте VLESS: В разделе (Inbound) - (Add inbound) надо заполнить указанные на скриншоте поля.Самое важное:- Remark и Email - любые строки (не обязательно адрес эл.почты), ни на что не влияют.- Listening IP - укажите ваш IP- Port - строго 443, чтобы маскироваться под обычный https-сайт.- Только после выбора Security: Reality появится возможность выбора Flow: xtls-rprx-vision- uTLS - именно Chrome, чтобы маскироваться под самый популярный браузер- Dest, Server Names - указать сайт-донор (хотя можно оставить yahoo.com )- Кнопка (Get new cert) генерирует ключи.- (Create) завершает создание.Добавление пользователя.Нажимаем на три точки и Add Client.Тут вводим Email - это название профиля (необязательно, можно оставить то, что изначально). И выбираем Flow - xtls-rprx-vision. Нажимаем Add Client, идем дальше.Получите ключ VLESS: Жмем на QR код в строке с вашим профилем.Открывается QR, нажатием на него копируется ключ vless, выглядит следующим образом:vless://[email protected]:443?type=tcp&security=reality&pbk=D0Bfsax3Ble2KiqDrOu3_qMJw7qVKyrnWgpvDTVkb3M&fp=chrome&sni=nltimes.nl&sid=64edf3b5&spx=%2F&flow=xtls-rprx-vision#NiceVPN-%D0%94%D0%BB%D1%8F%20%D1%81%D1%82%D0%B0%D1Сохраните его в удобном месте, нужен для подключения.4. Настройка защиты сервера:3.1. Установка и настройка UFW, обязательно сделать:Идем обратно в cmd, подключаемся по ssh. Убедитесь, что находитесь не в репозитории 3x-ui, просто введите cd и нажмите Enter.Для защиты сервера установите и настройте брандмауэр UFW:sudo apt install ufw -yОткройте только необходимые порты:sudo ufw allow 22/tcp # SSH, оставляем 22 sudo ufw allow 54321/tcp # Порт панели 3x-ui, меняем на ваш, который указывали выше sudo ufw allow 443/tcp # Порт для VLESS/XTLS Reality, оставляем 443Включите UFW:sudo ufw enable3.2. Настройка Fail2ban, делаем по желанию, но советую сделать, 5 минут по времени.УстановкаЕсли до этого вы не обновляли базы данных apt, то установку можно начать с этого:sudo apt update sudo apt upgradeПосле обновления apt можно переходить к установке Fail2ban:sudo apt install fail2banТеперь активируем Fail2ban, чтобы она автоматически запускалась после перезагрузки сервера:sudo systemctl enable fail2banПеред запуском Fail2ban в работу осталось настроить параметры фильтрации, по которым будет происходить блокировка IP.НастройкаПо умолчанию Fail2ban использует правила блокировки, указанные в файле jail.conf. Это системный файл, который обновляется вместе с программой, поэтому использовать его в качестве основного файла с параметрами блокировки не рекомендуется.Мы создадим собственный конфигурационный файл jail.local. Система приоритетов в Fail2ban настроена таким образом, что в качестве основных применяются правила, указанные в jail.local.Структура конфигурационного файлаКонфигурационный файл Fail2ban состоит из так называемых jail-ов — отдельных блоков правил для разных служб. В одном файле jail.local можно не только указать все правила для всех сетевых служб сервера, но и управлять их включением и выключением.Структура всех jail-ов одинакова:В первой строке в квадратных скобках указывают название службы, к которой будет применяться следующий ниже набор правил. В нашем случае это [sshd].Далее определяют параметр enabled, отвечающий за включение или отключение данного jail-а. Мы установим его true, чтобы наш jail был активен.После этого указывают условия блокировки: максимальное количество попыток подключения (maxretry), время, за которое эти попытки были произведены (findtime), и время, на которое нужно запретить доступ с этого IP (bantime).В последней части jail-а указывают IP-адреса, которые считаются надёжными (ignoreip), например, IP-адрес вашего домашнего компьютера.Мы рекомендуем добавить в строку ignoreip домашний адрес вашего компьютера, чтобы в случае особо жёстких настроек фильтрации программа не заблокировала вам доступ к серверу — например, после нескольких неудачных попыток ввода пароля.Создадим конфигурационный файл:sudo nano /etc/fail2ban/jail.localТекст конфигурационного файла будет примерно таким:[sshd] enabled = true maxretry = 6 findtime = 1h bantime = 1d ignoreip = 127.0.0.1/8 23.34.45.56Этот набор условий означает, что IP-адрес, с которого было произведено 6 неудачных попыток SSH-подключения за последний час (3600 секунд), будет заблокирован на одни сутки (86400 секунд). Не будут блокироваться IP-адреса в диапазоне от 127.0.0.1 до 127.0.0.8 и адрес 23.34.45.56 (указываем свое).Время для параметров findtime и bantime можно указывать не только в секундах, но и в минутах, часах, днях и даже неделях. Для этого необходимо сразу после численного значения параметра указать соответствующую букву (m, h, d, w).Получение уведомленийПосле строки с указанием надёжных IP можно добавить параметр, отвечающий за отправку на e-mail уведомлений о заблокированных IP.Добавьте в конфигурационный файл строку:[email protected]Теперь на указанную здесь почту будут приходить уведомления о каждом заблокированном программой IP-адресе.Чтобы получать более детальную информацию о заблокированных IP, на сервер можно установить службу whois:sudo apt install whoisВ этом случае в письма о блокировке будут добавлены более подробные сведения, получаемые службой whois.Будьте внимательны при настройке уведомлений!Fail2ban отправляет отдельным письмом сведения о каждом заблокированном IP, а в случае брутфорс-атаки количество IP, с которых проводится подключение, может достигать нескольких сотен.Начало работыПосле создания конфигурационного файла, содержащего все необходимые правила, можно запускать Fail2ban и наблюдать за его работой.Команда для запуска программы:sudo systemctl start fail2banКоманда для вывода на экран сведений о работе jail-а, отвечающего за службу sshd:sudo fail2ban-client status sshdЕсли в данный момент сервер не подвергается атаке, сразу после установки и запуска программы на экране будет следующая информация:Status for the jail: sshd |- Filter | |- Currently failed: 0 | |- Total failed: 0 | `- File list: /var/log/auth.log `- Actions |- Currently banned: 0 |- Total banned: 0 `- Banned IP list:Здесь приведены сведения о попытках подключения к серверу и о заблокированных IP-адресах.Если вы решите изменить настройки, указанные в конфигурационном файле jail.local, не забудьте перезапустить Fail2ban, чтобы изменения вступили в силу:sudo systemctl restart fail2banПодключение к клиенту VLESSHiddify. Для Windows и Android.1. Загрузите и установите приложение Hiddify с [GitHub](https://github.com/hiddify/hiddify-next/releases) или через Google Play для Android.2. Скопируйте ключ, который был создан ранее, и откройте приложение.3. Создайте новый профиль, выбрав опцию добавления из буфера обмена.4. Подключитесь, нажав кнопку «Нажмите для подключения». После этого ваш IP-адрес изменится на IP-адрес вашего сервера.Streisand. Для IOS1. Загрузите приложение Streisand из [App Store](https://apps.apple.com/ru/app/streisand/id6450534064).2. Скопируйте ранее созданный ключ и откройте приложение.3. Добавьте ключ через опцию «Добавить из буфера обмена».4.Включите VPN, нажав на кнопку включения. Ваш IP-адрес теперь будет заменен на IP-адрес вашего сервера.FoxRay. Для MacOS1. Скачайте приложение FoXray из AppStore по ссылке ниже:FoXray2. Скопируйте ссылку для подключения.3. Запустите приложение FoXray и нажмите на иконку вставки текста.4. Готово, профиль добавлен! Теперь нажмите на кнопку "Play", далее разрешите добавление конфигурации VPN и можете пользоваться VPN соединением.Спасибо за прочтение этой статьи, теперь ты можешь смотреть ютуб без замедления и посещать весь интернет без ограничений. Оцени пожалуйста статью, напиши свое мнение в комментариях.Если кому-то будет интересно, можно еще настроить CDN, в таком случае даже при блокировке вашего основного соединения, соединение через CDN будет работать, если тебе интересно узнать подробнее, напиши в комментариях.
до завтра
Отличный гайд! Опечатка в правке версии 3x-ui:
nano docker-compose.yml (не дописал одну букву)
Спасибо, исправил)
ssh лучше всего убирать с 22 порта