Настраиваем свой крутой личный прокси!
Мы живём в удивительное время, когда для комфортного пользования интернетом приходится изобретать различные велосипеды и костыли. Но, к нашему счастью, все велосипеды до нас уже изобретены, так что всё что требуется от нас - просто выбрать самый лучший велосипед и настроить его под свой вкус и цвет.
В этой статье пойдёт речь об установке и настройке одного из таких "велосипедов" на базе протокола VLESS XTLS Reality (не пугайтесь, всё поясню) на своём личном VPS (хостинге). При правильной установке и настройке, данное решение прослужит вам верой и правдой долгое время (лично я пользуюсь единожды настроенным сервером уже более года).
Ещё одним вдохновляющим фактором является то, что данный протокол - единственный, который на данный момент до сих пор не научились детектировать в Китае. А уж поверьте, битва там ведётся серьёзная.
Я пользуюсь GoodbyeDPI, ByeDPI, Wireguard, AmneziaWG или чем-то ещё. Зачем мне устанавливать это?
Решений на самом деле очень много и вы вправе выбирать любое из них. Зачастую это вопрос компромисса между ценой, скоростью, простотой и удобством. Если вас полностью устраивает ваш нынешний способ, оставайтесь на нём, но я вам всё же советую сохранить данную статью на будущее (желательно прям HTML-страничкой на свой ПК), ведь в один прекрасный день вы обязательно столкнётесь с тем, что ваше решение больше не работает.
Что такое VLESS Reality? Как он работает?
Если всё очень упростить, то VLESS - это легковесный прокси-протокол, который позволяет устанавливать быстрое соединение между вами и, например, VPS сервером, который вы арендуете.
XTLS Reality - технология, работающая поверх VLESS протокола, которая позволяет замаскировать ваш трафик под запросы к реальному существующему безобидному сайту, при этом не шифруя этот самый трафик повторно. То есть если цензор (или же ваш провайдер) решит проверить, куда же вы там ходите по вечерам, он увидит какой-нибудь настоящий сайт, под который вы замаскировались, пока вы тем временем в Дискорде с друзьями будете смотреть страшно вредные котомемы на Ютубе. Магия, не иначе!
Сколько это стоит?
Всё лишь упирается в стоимость VPS (хостинга), который вы будете арендовать за рубежом. Приятным бонусом является то, что единожды настроив прокси, вы сможете поделиться им со своими родными и друзьями, например, разделив оплату между ними.
Сразу предвидя вопросы, скажу, что лично я пользуюсь хостингом Aeza (осторожно, рефералка!), тарифом за 4.94€. Это определённо не идеальный хостинг, ещё и ажиотаж вокруг него сильно вырос в последнее время, но их услугами я пользуюсь с сентября 2023 и лично меня вполне всё по-прежнему устраивает. Ещё и прямая оплата с российских карт/СБП меня подкупает.
Сами же вы можете выбрать любой зарубежный хостинг, инструкция от этого отличаться не будет. Главное изучайте отзывы, смотрите на максимальную скорость интернет - канала, а также на то, на сколько вам будет удобно вносить оплату.
Не забывайте, что вы сможете разделить оплату с друзьями. Лично знаю много знакомых, которые подключив 4-5 близких друзей, платят по 50-100 рублей в месяц каждый. Буквально цена 1/2 шаурмы за полностью свободный доступ в интернет!?
Установка сервера
1) Покупаем услугу VPS (хостинга) в удобной нам локации. При покупке, в качестве предустановленной операционной системы выбираем Ubuntu 22.04. Можно и любые другие ОС, но объяснять я буду именно на примере Ubuntu.
2) Дожидаемся активации и получаем пароль от сервера. В случае с Aeza его можно найти в личном кабинете на странице услуги. В случае любых других хостингов он будет лежать примерно там же. Вы не пропустите.
3) Скачиваем любой SSH-клиент, в нашем случае его роль будет выполнять PuTTY (ссылка). Внутри вводим IP вашего купленного сервера. Нажимаем Open. Если появится окно с надписью "The host key is not cached for this server", нажимаем Accept.
4) В качестве логина вводим root, нажимаем Enter. Далее копируем пароль из страницы нашей услуги (в PuTTY текст вставляется одним кликом ПКМ. Сам пароль не отображается при вводе, не пугайтесь). Нажимаем Enter.
В случае успешного входа мы увидим примерное такое окно консоли.
Пол дела сделано! Вы успешно купили VPS сервер и подключились к нему. Осталось установить панель для управления нашим прокси и создать подключения для клиентов. Если вы думаете, что это сложно, то спешу вас заверить. Всё что вам нужно - скопировать и вставить пару команд!
5) Установим Docker для работы нашей панели. Для этого вставляем в терминал следующую команду, нажимаем Enter:
curl -fsSL https://get.docker.com | sh
После ввода команды у вас начнётся автоматическая установка. Дожидаемся финального сообщения прежде чем приступить дальше.
ВНИМАНИЕ: У некоторых хостеров может не сработать предыдущая команда. Вместо этого можно прописать следующие две команды (только если предыдущая команда выдаёт ошибку 403):
apt update -y
apt install docker.io docker-compose -y
В таком случае, на 7-ом шаге вам нужно будет заменить команду на docker-compose up -d (добавить тире между docker и compose).
6) Далее скачиваем файлы самой панели X-UI. Для этого просто вставим следующие две команды (можно за раз):
git clone https://github.com/alireza0/x-ui.git
cd x-ui
7) Последняя команда. Запускаем нашу панель внутри docker-контейнера!
docker compose up -d
В случае успеха вы увидите сообщение о том, что контейнер с вашей панелью X-UI успешно запущен (вряд ли разработчик задумывался о русскоязычном произношении его детища).
Поздравляю! Вы успешно установили панель! Давайте попробуем её открыть. Для этого прямо в своём браузере переходим по следующему адресу:
http://ip_сервера:54321
Если окно панели по вашему адресу открылось, значит вы всё сделали правильно. Вы молодцы!
Настройка панели
Заходим в панель при помощи логина и пароля admin.
- В первую же очередь ОБЯЗАТЕЛЬНО меняем логин и пароль панели на свои собственные. Не путать с логином и паролем от хостинга, это должна быть новая уникальная комбинация с НАДЁЖНЫМ паролем!
Нажимаем Confirm и входим в панель заново уже с новым логином и паролем.
2. Добавим ещё немного безопасности нашей панели. Для этого поменяем стандартный порт на любой в условном диапазоне от 1024 до 65535. Желательно выбрать порт, состоящий из 5 цифр в каком-нибудь верхнем диапазоне, чтобы ненароком не задеть случайный другой сервис в вашей системе.
Также добавим любую строку к существующему URL-пути, по которому будет открываться панель. Таким образом вашу панель будет чуть сложнее обнаружить злоумышленнику или сканеру.
Например, добавим строку /secretpanel/ и поменяем порт на 55870. Теперь ваша панель будет открываться по адресу: http://IP_сервера:55870/secretpanel/
ВНИМАНИЕ: не устанавливайте параметры из абзаца выше. Это лишь пример! Выберите свой порт и свою строку!
ВНИМАНИЕ: URL-путь должен начинать и заканчиваться с "/"!
Убедитесь, что запомнили порт и новый путь. Сохраняем настройки и перезапускаем панель соответствующими кнопками в верхней части сайта. Заново открываем панель по уже новому пути.
Если вы смогли перейти по новому пути и порту, то вы снова молодцы! Панель настроена и готова к созданию подключения.
Да, в верхней части панели по-прежнему будет отображаться предупреждение о том, что мы не настроили TLS-сертификаты, но покупка домена и установка своих сертификатов - уже немного более высокий уровень, выходящий за пределы данной статьи, так что если вам это будет интересно, вы сможете найти информацию в гугле по соответствующим запросам :)
Далее все скриншоты будут на русском языке. Для соответствия вы можете поменять язык панели там же, где меняли порт и URL-путь, в Panel Settings > General > Language.
Настройка подключения
1) Переходим во вкладку "Подключения" и нажимаем на кнопку "Создать подключение", открывая для себя огромный спектр самых разных настроек. Но не пугайтесь, на самом деле тут всё довольно просто.
- Для начала придумаем название нашему подключению и укажем его в параметре "Примечание". В моём случае я назвал его в честь протокола и соответствующей технологии.
- Убедитесь, что в качестве протокола у вас выбран vless.
- Обязательно указываем порт 443 (стандартный порт для HTTPS соединений). Менять этот порт на любой другой категорически запрещено.
- Далее проскочим сразу несколько параметров и для удобства сразу установим пункт Reality в графе "Безопасность". Это разблокирует для нас сразу множество скрытых параметров, которые нам пригодятся.
2. Открываем спойлер "Клиент" и задаём настройки первого клиента.
- В параметре "Email" указываем никнейм или имя клиента, или любое другое слово, которое будет указывать на конкретного пользователя. В данном случае мы указываем свой никнейм, но для будущих клиентов (мы их создадим позже), мы сможем указать уже их никнеймы или имена. Таким образом вы сможете, например, отслеживать траты трафика конкретных клиентов (друзей или родных) или же отключать от вашего прокси конкретных людей.
Указывать именно email никакого смысла нет, воспринимайте это как имя клиента.
3. Остались заключительные и самые важные настройки. Выбор сайта, под который мы будем маскироваться от цензора или провайдера. От правильного выбора сайта будет зависеть наш пинг и стабильность нашего психического состояния!
Из требований, данный сайт должен находиться за пределами РФ и не быть заблокированным по домену Роскомнадзором. Он также должен поддерживать подключения по TLS v1.3 и HTTP/2, не быть за CDN и иметь заглавную страницу, не переадресовывающую на какой-нибудь другой домен.
В конце гайда я расскажу, как легко подобрать сайт прямо из той же подсети, в которой находится ваш хостинг (для минимального пинга), но а пока, если вы не понимаете слова выше, можете просто выбрать, например, любой сайт из списка ниже:
- www.samsung.com:443
- www.asus.com:443
- www.yahoo.com:443
- www.amd.com:443
- www.cisco.com:443
- www.microsoft.com:443
- www.nvidia.com:443
Вы также можете проверить пинг до любого из этих сайтов при помощи команды "ping www.vibraniy_site.com" в консоли своей Windows и сделать выбор на его основе. Быть может вас устроит и такой результат.
- В параметре "uTLS" указываем браузер, под который будет маскироваться ваше соединение. Это может быть как ваш браузер, так и любой другой.
- В "dest" указываем выбранный вами сайт. В примере пока остановимся на microsoft.com. В конце обязательно добавляем порт 443, как на скрине выше.
- В "SNI" указываем адрес выбранного нами сайта в таком же формате, как это указано на скрине выше. Например, если вы выбрали в качестве маскировочного сайта yahoo.com, то в SNI пишем: "yahoo.com,www.yahoo.com".
- Нажимаем кнопку "Get New Cert" для генерации Public и Private Keys.
- В разделе Sniffing нажимаем кнопку "Включено".
Если вы всё настроили, нажимаем "Создать" и хитро потираем ладошки, ведь вы всё настроили. Сервер готов!
Установка клиента
Осталось установить и настроить клиент для подключения к нашему прокси. В качестве клиента Windows мы будем использовать Nekoray, но вы также можете попробовать и другие клиенты. Некоторые, например, используют Hiddify-Next, но лично я им не пользовался и подсказать ничего не смогу.
Весьма важно настраивать на клиентских устройствах правила, чтобы доступ к российским ресурсам не шел через прокси-сервер.
В нашем случае через прокси-сервер будут идти только заблокированные ресурсы, но в случае других настроек из других гайдов будьте осторожны!
1) Скачиваем Nekoray (Windows). Если у вас уже есть старая версия программы, то крайне не советую пользоваться кнопкой "Обновление". Лучше скачать Nekoray заново и установить в новую папку.
2) Распаковываем архив в удобную папку. Программа портативная, так что установить можно на любой диск.
3) Запускаем программу (nekoray.exe). В появившимся окне первичной настройки выбираем ядро sing-box.
4) Добавляем подключение. Для этого вернёмся в нашу панель, нажимаем "плюсик" у нашего ранее созданного подключения и кликаем на значок "QR-кода". Жмём прямо по QR-коду, тем самым копируя его, и, не закрывая окно с QR-кодом, заходим в Nekoray и нажимаем Программа > Сканировать QR-код. Если всё прошло хорошо, то в вашей программе появится новое соединение! Нажимаем по нему ПКМ > Запустить.
5) Дважды кликаем на добавленное подключение. Находим кнопку "Доп. настройки конфига". Заходим в неё и вставляем следующий JSON-конфиг (ниже после скриншотов). Он позволит при каждом запуске подхватывать специальный список заблокированных доменов, чтобы ходить через прокси только на ним. После вставки дважды кликаем ОК и возвращаемся на главное окно программы.
{
"experimental": {
"cache_file": {
"enabled": true
}
},
"route": {
"auto_detect_interface": true,
"final": "direct",
"rule_set": [
{
"download_detour": "direct",
"format": "binary",
"tag": "refilter_domains",
"type": "remote",
"url": "https://github.com/1andrevich/Re-filter-lists/releases/latest/download/ruleset-domain-refilter_domains.srs"
},
{
"download_detour": "direct",
"format": "binary",
"tag": "refilter_ipsum",
"type": "remote",
"url": "https://github.com/1andrevich/Re-filter-lists/releases/latest/download/ruleset-ip-refilter_ipsum.srs"
}
]
}
}
6) Возвращаемся в главное окно программы. В интерфейсе программы заходим в Настройки > Настройки маршрутов > Базовые маршруты. В нижнем правом углу устанавливаем значение поля "Outbound по-умолчанию" на "bypass".
7) Там же переходим в раздел "Кастомные маршруты" в левой нижней части окна. Заменяем содержимое поля "Редактор JSON" на следующий JSON-объект (скопировать можно под скрином). В этот конфиге вы можете добавить свои домены для обхода через прокси, в случае если их не окажется в автоматическом списке доменов, что мы добавляли до этого. Нажимаем ОК и возвращаемся в главное окно программы.
{
"rules": [
{
"domain_keyword": [
"betterttv",
"frankerfacez",
"7tv",
"browserleaks"
],
"outbound": "proxy"
},
{
"outbound": "proxy",
"rule_set": [
"refilter_domains",
"refilter_ipsum"
]
}
]
}
8) Далее снова возвращаемся в главное окно программы. В интерфейсе программы заходим в Настройки > Настройки TUN-режима и добавляем процесс "Discord.exe" и "Updater.exe" для работы войса и обновлений Дискорда.
Сюда можно добавлять имена процессов, которые по той или иной причине не подхватывают прокси-соединение по стандарту. Браузер как правило добавлять не нужно, так как браузеры по стандарту поддерживают прокси.
Также убеждаемся, что у вас стоят галки напротив "Режим белого списка" и "Встроен. Tun".
Возвращаемся снова в главное окно программы.
9) Пришло время протестировать наше соединение. Для этого нажнём на наше подключение правой кнопкой мыши и нажимаем "Запустить".
Из-за того, что при первом запуске подключения Nekoray скачивает огромный список заблокированных сайтов, первый запуск может занять от 10 до 30 секунд. Не пугаемся, и, если, Nekoray предлагает перезапуск из-за долгого запуска подключения - игнорируем.
10) Как только у нашего соединения появился значок галочки, активируем "Режим TUN" в верхней правой части программы, чтобы пустить ваш трафик через неё. С этого момента вы в игре, поздравляю!
Если вы всё сделали правильно, то после этих действий вы получите рабочее полноценное прокси-соединение. Кликнув по левой нижней части программы вы сможете проверить пинг установки нового соединения (не путать с обычным пингом).
11) Напоследок в разделе "Программа" можно установить галки напротив "Запускаться вместе с системой" и "Запомнить последний профиль", чтобы ваше соединение к прокси автоматически запускалось вместе с запуском компьютера.
Теперь вы можете проверить результат работы, посетив любой из заблокированных сайтов или же подключившись к голосовому каналу в Дискорде. Если всё сделано правильно, вы это сразу поймёте!
По факту, на данный момент у вас уже есть полноценно работающий настроенный прокси-сервер для любых ваших задач. Вы великолепны! Далее я постараюсь ответить на вопросы, а также рассказать про разного рода улучшения опыта работы со всем этим делом.
Как добавить клиентов для своих родных и друзей?
В нашей любимой панели нажимаем на "три точки" > "Добавить клиента".
В открывшемся окне придумываем имя (email) для нового клиента и устанавливаем значение параметра "Flow" на xtls-rprx-vision.
Далее просто отправляем QR-код нового клиента своему другу по аналогии, как мы это делали раньше.
ОБЯЗАТЕЛЬНО проследите, чтобы ваш новый клиент правильно настроил своё подключение в Nekoray или в любом другом приложении.
Когда я использую прокси, у меня нет подключения к какому-то серверу / повышается пинг в игре и т.п. Как это исправить?
Так как Nekoray запускает прокси-соединение на вашем компьютере, все приложения, что поддерживают прокси из коробки, автоматически к нему подключаются.
К слову, например, голосовые чаты Дискорда не поддерживают прокси, именно поэтому мы добавляли процесс Дискорда отдельно в JSON - конфиг, когда настраивали Nekoray, чтобы весь трафик от процесса Дискорда шёл через Nekoray, независимо от того, поддерживает он прокси или нет.
Абсолютно также мы можем указать в конфиге, чтобы те или иные процессы шли напрямую в обход прокси, даже если они поддерживают и хотят его использовать.
Для этого обновим наш JSON конфиг в Настройки > Настройки маршрутов > Базовые маршруты > Кастомные маршруты > Редактор JSON на следующий конфиг (под скриншотом):
{
"rules": [
{
"geoip": "antizapret",
"geosite": "antizapret",
"outbound": "proxy"
},
{
"domain_suffix": [
".ggpht.com",
".googlevideo.com",
".youtube.com",
".ytimg.com",
".googleapis.com",
"discordapp.com",
"chatgpt.com",
".openai.com",
"7tv.app"
],
"outbound": "proxy"
},
{
"outbound": "proxy",
"process_name": [
"Discord.exe"
]
},
{
"outbound": "direct",
"process_name": [
"javaw.exe",
"cs2.exe"
]
}
]
}
Где найти правильное написание имён процессов?
Если вы решили добавить дополнительно какое-либо приложение в конфиг, то точное имя процесса можно увидеть в Диспетчере задач > Подробности. Будьте внимательны, они чувствительны к регистру.
Также можно нажать ПКМ по названию процесса во вкладке Процессы и перейти в окно Свойства. Название процесса будет указано справа от иконки приложения.
Какие есть приложения для Android и IOS?
Android: V2RayNG и Nekobox Android
ОБЯЗАТЕЛЬНО изучите в гугле, как настроить прямой доступ к ru доменам и ipшникам в соответствующих приложениях.
V2RayNG
Лично я пользуюсь V2RayNG, так что могу поделиться свои опытом.
1) Заходим в приложение, нажимаем на "Плюс" > Импорт из QR кода. Сканируем QR-код нашего подключения.
2) Далее переходим в левое меню > Маршрутизация. Поле "Доменная стратегия" устанавливаем на IPIfNonMatch.
3) Теперь копируем следующие настройки в буфер обмена телефона:
[{"enabled":true,"ip":["geoip:ru"],"looked":false,"outboundTag":"direct","remarks":"geoip direct"},{"domain":["geosite:category-gov-ru","geosite:yandex","geosite:vk","regexp:xn--"],"enabled":true,"looked":false,"outboundTag":"direct","remarks":"geosite direct"},{"domain":["geosite:category-ads-all"],"enabled":true,"looked":false,"outboundTag":"block","remarks":"ads block"},{"enabled":true,"ip":["geoip:private"],"looked":false,"outboundTag":"direct","remarks":"geoip private"},{"domain":["geosite:private"],"enabled":true,"looked":false,"outboundTag":"direct","remarks":"geosite private"}]
В том же меню жмём в верхней правой части экрана на "три точки" > "Импорт правил из буфера обмена". Соглашаемся с удалением существующих правил.
4) Теперь вернёмся в "левое меню приложения" > "Настройки" > "Прокси для выбранных приложений". Ставим галки напротив тех приложений, которые мы хотим направить через наше прокси-сервер.
Не ставьте галки напротив банковских и отечественных приложений!
5) Нажимаем на иконку "запуска", наслаждаемся свободным интернетом!
Если у вас есть опыт настройки других приложений, в частности приложений на IOS, поделитесь им со мной в комментариях в Телеге и я добавлю информацию сюда для всех.
Как подобрать сайт для более низкого пинга?
Подберём сайт в той же подсети, что и наш хостинг.
1) Скачиваем специальную программу, которая просканирует нашу подсеть.
2) Открываем консоль в той же папке, что и наша программа. Для этого заходим в проводнике в нужную папку и прописываем "cmd" прямо вместо пути в верхней части проводника. Нажимаем Enter.
3) В консоли прописываем следующую команду:
RealiTLScanner-windows-64 -addr IP_вашего_хостинга -out file.txt
где RealiTLScanner-windows-64 - название скачанного файла программы, лежащей в этой же папке, а IP_вашего_хостинга - соответственно ip VPS сервера, который вы купили и на котором стоит ваш прокси-сервер.
4) Во время своей работы программа будет бесконечно сканировать всю подсеть вашего хостинга, а вам лишь остаётся выбирать и тестировать из сгенерированного txt-файла подходящий для себя сайт. Как только вы нашли хороший вариант - консоль можно просто закрыть.
Помните, что сайт должен поддерживать подключения по TLS v1.3 и HTTP/2, не быть за CDN и иметь заглавную страницу, не переадресовывающую на какой-нибудь другой домен.
Лично я, например, на одной из машинок использую для маскировки местный образовательный сайт, а на другой - локальный новостной ресурс. Никогда не знаешь, что можно обнаружить в подсети своего хостера :)
5) Для замены маскировочного сайта переходим в панель управления прокси, нажимаем на "три точки" у соответствующего подключения > Изменить.
Имейте в виду, что после изменения сайта, всем пользователям нужно будет заново добавить подключение в свои клиенты по qr-коду.
У меня другие настройки клиента. Как мне настроить маршруты так, чтобы доступ к российским сайтам и доменам осуществлялся напрямую, а не через прокси?
Делайте это, только если вы настраивали маршруты по чьему-то другому гайду или у вас свои настройки маршрутизации
Если у вас по стандарту все соединения идут через proxy (outbound по-умолчанию: proxy), то мы можем легко настроить проверку на российские IP и домены, а также на .ru - зону, чтобы автоматически подключаться к ним напрямую, а не через прокси-сервер.
1) В интерфейсе программы заходим в Настройки > Настройки маршрутов > Базовые маршруты.
2) Прописываем следующие две строчки в поле (IP / Напрямую):
geoip:rugeoip:private
Таким образом мы буквально говорим нашему клиенту ходить на российские и локальные IPшники напрямую, а не через наш прокси. Делается это для того, чтобы наш провайдер или же цензор не заподозрили что-то неладное при потенциальном анализе логов российских сайтов. По этой же причине я крайне советую добавить условный vk.com, yandex.com и т.п. также в список исключений. Для этого мы добавим их в поле (Домен / Напрямую) в следующем виде:
domain:vk.comdomain:yandex.com...
Таким же образом вы можете добавлять любой сайт в список исключений, если не хотите, чтобы соединение к нему шло через прокси.
6) Теперь добавим в список исключений все сайты, находящиеся в зоне ".ru". Для этого там же перейдём в раздел "Кастомные маршруты" в нижней части окна и в редактор JSON добавим следующие строчки:
{ "rules": [ { "domain_suffix": [ ".ru" ], "outbound": "direct" } ]}
Ещё немного тюнинга производительности
Вы можете прописать в консоль вашего VPS-сервера следующие команды. Они переключат режим управления TCP на алгоритм BBR. На практике это может повысить производительность вашего прокси ещё на некоторое количество процентов.
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p
TCP BBR - это алгоритм контроля за перегрузкой TCP, разработанный Google. Он направлен на устранение недостатков традиционных алгоритмов управления сетевым трафиком и способен обеспечить значительно более высокую пропускную способность и низкую задержку.
Данная статья будет обновляться по мере появления новых знаний, информации и сил. Если у вас остались вопросы или пожелания, напишите мне в комментариях. Возможно у меня получится помочь. Всем сил и бодрого настроя!