💾 Archived View for gemlog.blue › users › kstrmv › 1695216026.gmi captured on 2024-03-21 at 18:41:22. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2023-12-28)

🚧 View Differences

-=-=-=-=-=-=-

Данный гайд был написан в августе 2023 года и актуален на начало октября этого же года

Данный гайд написан новичком для новичков. Я в гайде описывал способ, использованный мной, и старался указать на какие-то моменты, которые мне как новичку изначально были неочевидны. Если в гайде есть какие-то ошибки или его можно улучшить или упростить, то я буду рад этим изменениям.

Пункт 0. Выбор хостинга

Для начала Вам нужно выбрать хостинг виртуального сервера (VPS), где будет запускаться серверная часть вашего средства обхода блокировок. Тут неуместно советовать конкретный хостинг. Подбирайте по цене, по удалённости от места Вашего проживания, по ограничению трафика (или его отсутствию). Ну и обязательно учитывайте, что Вам необходимо будет регулярно оплачивать сервер (у некоторых есть даже оплата криптой).

Могу подсказать вот такую таблицу на ресурсе ntc.party от ValdikSS: => https://ntc.party/t/list-of-vpsdedicated-server-network-censorship-in-russia/4867. Там перечислены хостинги и то, какие они обходят блокировки. Можете выбирать из них. Сам я пользуюсь хостингом ihor.

Пункт 1. Установка серверной части приложения

После того, как Вы зарегистрируетесь на сайте хостера, выбирайте операционную систему Debian или Ubuntu, которая будет установлена на Ваш виртуальный сервер. У меня Debian. Если Вы выберете операционную систему отличную от семейства Debian, у Вас могут отличаться некоторые команды.

Для поднятия сервера VLESS Вам хватит минимальных характеристик сервера. У меня 1CPU 512 MB RAM 5 Gb HDD.

Для работы на сервере Вы можете использовать встроенный интерфейс Вашего хостера (например, VNC). Но можно подключаться с помощью протокола ssh. Для использования ssh Вы можете использовать или сторонние программы (например, PuTTY, Xshell), или же использовать встроенные возможности Windows (работает на как минимум на 10тке посредством Командной строки(cmd)). При подключении через сторонние программы или встроенные средства Windows Вам будет доступны копирование и вставка текста из консоли. Это не всегда доступно при использовании встроенного интерфейса хостера (например, VNC).

Вставка скопированного текста происходит нажатием правой клавиши мыши на консоли.

В командной строке(cmd) соединение с сервером по ssh осуществляется вводом следующей команды.

ssh aaa.bbb.ccc.ddd -l root

Где aaa.bbb.ccc.ddd — это IP-адрес вашего VPS.

После ввода команды и нажатия Enter, если Вы ввели всё правильно, Вам будет предложено ввести пароль пользователя root. При вводе буквы или заменяющие их звёздочки не будут показываться, но на самом ввод происходит. Узнать пароль root можно в интерфейсе вашего хостера.

Все команды после логина в ОС Linux выполняются от пользователя root. При этом системное приглашение выглядит вот так:

root@my-vps-name:~#

Если Вы работаете не из-под root, то перед командами необходимо будет добавлять sudo, при работе от root этого делать не требуется.

Перейдите в каталог tmp. В него (чтобы не засорять другие места) будет скачан скрипт для установки Xray.

cd /tmp

Далее надо скачать скрипт установки. Вообще, ссылка не должна меняться, но если это вдруг произойдёт, посмотрите актуальную ссылку на гитхабе у разработчика: => https://github.com/XTLS/Xray-install

bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install

В результате скрипт установит следующие файлы по таким вот директориям. Данные пути нам ещё понадобятся.

installed: /etc/systemd/system/xray.service
installed: /etc/systemd/system/xray@.service

installed: /usr/local/bin/xray
installed: /usr/local/etc/xray/config.json

installed: /usr/local/share/xray/geoip.dat
installed: /usr/local/share/xray/geosite.dat

installed: /var/log/xray/access.log
installed: /var/log/xray/error.log

Далее необходимо отредактировать конфиг демона, который был создан скриптом. Для этого нужно ввести команды с использование редактора nano (если вы любите редактор vi, то можете использовать его). Если редактор nano не установлен, установите его.

apt-get install nano

Если nano установлен, то редактируйте конфиг демона.

nano /etc/systemd/system/xray.service

Нужно удалить строку, содержащую User=nobody или User=root. Она находится в разеле [Service]. И вставить следующие три строки.

DynamicUser=true
StateDirectory=xray
LogsDirectory=xray

Далее нужно раскомментировать строки.

CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
NoNewPrivileges=true

Для этого нужно удалить первые знаки: //

Строки примут указанный выше вид.

Сохранение в редакторе nano происходит сочетанием клавиш Ctrl+O. Выход осуществляется сочетанием Ctrl+X.

На всякий случай такое же редактирование я провёл с файлом xray@.service.

nano /etc/systemd/system/xray@.service

Пункт 2. Составление конфигурации

Конфигурационный файл имеет расширение json и находится в директории /usr/local/etc/xray/. Скорее всего он называется config.json. Если не так, проверьте, перейдя в директорию и введя команду ls. А мы просто отредактируем файл.

nano /usr/local/etc/xray/config.json

Конфигурация серверной и клиентской части составлялась на основе данных с сайта => https://xtls.github.io/en/config/#overview и примеров конфигураций на странице разработчика Xray => https://github.com/XTLS/Xray-examples.

Ниже приведён обобщённый пример серверной конфигурации. Его необходимо доработать, о чём я напишу ниже. Описание каждого пункта можно найти на сайте => https://xtls.github.io/en/config/#overview.

{
"log": {
"access": "",
"error": "",
"loglevel": "debug",
"dnsLog": true},
"inbounds": [{
"listen": "0.0.0.0",
"port": 443,
"protocol": "vless",
"settings": {
"clients": [{
"id": "",
"email": "",
"flow": "xtls-rprx-vision"}],
"decryption": "none"},
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"show": true,
"dest": "185.65.148.114:443",
"serverNames": [
"rg.ru",
"www.rg.ru"],
"privateKey": "",
"minClientVer": "1.8.3",
"shortIds": [""]}},
"tag": "vless-in"}],
"outbounds": [{
"sendThrough": "0.0.0.0",
"protocol": "freedom",
"settings": {
"domainStrategy": "AsIs"},
"tag": "direct-out"}]}

“access”: — между кавычками нужно указать путь к лог-файлу доступа. По умолчанию этот лог файл находится здесь: /var/log/xray/access.log

“error”: — между кавычками нужно указать путь к лог-файлу ошибок. По умолчанию этот лог файл находится здесь: /var/log/xray/error.log

Можно не указывать пути, оставив кавычки как есть. В этом случае логи будут переданы в stdout (в нормальный вывод). Правда я не знаю, куда логи будут выводиться при запуске Xray в качестве демона, а не непосредственно.

Можно указать в кавычках none.В таком случае логи вестись не будут. Это сделает невозможным (или затруднительным) анализ ошибок в случае их возникновения.

“loglevel”: — этот параметр определяет подробность логирования. Уровень debug является самым подробным. Уровень по умолчанию — это warning.

“dnsLog”: — логирование запросов DNS. Принимает значения true или false.

“id”: — это код uuid, который необходимо сгенерировать с помощью самой программы xray. Xray находится здесь: /usr/local/bin/xray. Для генерации uuid необходимо использовать команду и записать код в конфиг.

Для генерации uuid необходимо использовать команду и записать код в конфиг.

/usr/local/bin/xray uuid

Но можно сначал перейти в директорию, а потом запустить файл

cd /usr/local/bin
xray uuid

Сгенерированный uuid должен совпадать в конфигурации сервера и клиента.

Сервер позволяет указывать в разделе “clients”: несколько пользователей, для чего указываются несколько блоков из id-email-flow. У разных клиентов разные значения id и email.

“email”: — служит для разделения трафика от разных пользователей.

“dest”: — сюда нужно записать IP-адрес и порт (443) того сайта, к которому будет якобы обращаться Xray сервер, используя свои цыганские фокусы метода REALITY. Сервер будет делать вид, что стучится в этот адрес, а на самом деле обращаться в другое место. Признаю, что не до конца понимаю, как это работает. Важно, чтобы выбранный сайт был доступен (не был заблокирован) в Вашей стране и поддерживал протокол TLS1.3. Вспомните какие-нибудь популярные безобидные сайты Вашей страны и воспользуйтесь сайтом для проверки TLS. Я проверял на сайте https://www.cdn77.com/tls-test. Вы можете использовать любой другой сайт для проверки. В качестве подменного сайта я выбрал сайт Российской Газеты rg.ru. IP-адрес выбранного сайта можно узнать, воспользовавшись командой ping в командной строке (cmd) Вашей операционной системы.

UPD 30.08.2023: Практика показывает, что иногда выбранный подменный отказывается действовать как надо. Например, на моём VPS не пингуется выбранный сайт rg.ru. В этом случае магия Reality не сработает. Нужно выбрать такой сайт, который не заблокирован ни в Вашей стране, ни в стране, где находится дата-центр с VPS. Выберите свой безопасный сайт с поддержкой TLS1.3 и пингуйте с домашнего компа и с VPS сервера. Команда совпадает и в винде, и в линуксе. В качеств подменного сайта можно использовать vk.com

PS C:\Users\user> ping rg.ru
Обмен пакетами с rg.ru [185.65.148.114] с 32 байтами данных:
Ответ от 185.65.148.114: число байт=32 время=11мс TTL=51
Ответ от 185.65.148.114: число байт=32 время=8мс TTL=51
Ответ от 185.65.148.114: число байт=32 время=8мс TTL=51
Ответ от 185.65.148.114: число байт=32 время=8мс TTL=51
Статистика Ping для 185.65.148.114:
Пакетов: отправлено = 4, получено = 4, потеряно = 0
(0% потерь)
Приблизительное время приема-передачи в мс:
Минимальное = 8мсек, Максимальное = 11 мсек, Среднее = 8 мсек
PS C:\Users\user>

“serverNames”: — сюда нужно записать выбранный Вами сайт. В конфиге я написал в двух вариантах (с www и без).

“privateKey”: — пару Private key и Public key нужно сгенерировать командой. Не забывайте указывать полный путь до файла при запуске xray или переходить в директорию, где он находится, а потом запускать.

xray x25519

Одной командой генерируются и Private key, и Public key, при этом Private key записывается в к��нфиг сервера, а Public key в конфиг клиента.

“minClientVer”: — минимальная версия клиента, которому сервер позволит соединиться. Я указал 1.8.3, так как не уверен, что метод REALITY реализован в более старых версиях. Данная строчка не является обязательной.

“shortIds”: — для генерации ShortId можно воспользоваться приложением OpenSSL. Я её устанавливал не на сервер, а на свой ПК. На сервере данное приложение уже оказалось установленным. Если на Вашем сервере уже установлен OpenSSL, ShortId можно сгенерировать следующей командой.

openssl rand -hex 8

Если желаете установить OpenSSL на свой ПК, то в командной строке (cmd) необходимо ввести.

winget install openssl

Дождитесь установки пакета. Для генерации ShortId после установки введите следующее.

cd "C:\Program Files\OpenSSL-Win64\bin"
openssl rand -hex 8

В выводе приложение даст Вам 16-значный ShortId. ShortId должен совпадать в конфигурации клиента и сервера. Сервер может содержать несколько ShortId для возможности соединения нескольких клиентов к одному серверу.

“tag”:— тег нужен по большей части для Вашего понимания конфига и для настроек правил маршрутизации, которых в данной конфигурации не представлены. Я направляю к VPS серверу не все подряд сайты, а только выбранные мной, поэтому Xray-серверу не требуется проводить маршрутизацию, разделяя трафик на тот, который пойдёт напрямую, и тот, который пойдёт через VPS.

Далее необходимо создать и отредактировать файл config.json для конфига клиента, который находится на вашем ПК. Расположите файл в той же директории, что и исполняемый файл xray.exe. Обобщённый конфиг клиента представлен ниже. Далее я дам комментарии по заполнению.

{
"log": {
"access": "",
"error": "",
"loglevel": "debug",
"dnsLog": true},
"inbounds": [{
"listen": "127.0.0.1",
"port": 2080,
"protocol": "socks",
"settings": {
"udp": true},
"tag": "socks-in"},
{"listen": "127.0.0.1",
"port": 2081,
"protocol": "http",
"tag": "http-in"}],
"outbounds": [{
"protocol": "vless",
"settings": {
"vnext": [{
"address": "",
"port": 443,
"users": [{
"id": "",
"encryption": "none",
"flow": "xtls-rprx-vision"}]}]},
"tag": "vless-out",
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"show": true,
"fingerprint": "randomized",
"serverName": "rg.ru",
"publicKey": "",
"shortId": "",
"spiderX": "/"}}}]}

Некоторые опции я пропущу, поскольку их описание такое же, как и в конфиге сервера.

“access”: — аналогично серверному конфигу нужно указать путь до лог-файла доступа. Записывать нужно в виде.

"access": "C:\\Xray\\access.log",

“error”: — таким же образом нужно указать путь к лог-файлу ошибок.

раздел “inbounds”:

“listen”: — должен быть 127.0.0.1, поскольку запросы на клиентскую часть xray будет приходить с компа, на котором программа и запущена. То есть с локалхоста.

“port”: — клиент xray будет слушать указанный порт. Этот же порт необходимо будет указать в расширении вашего браузера для управления прокси. Я пользуюсь SwitchyOmega для браузера GoogleChrome.

“protocol”: — я привык указывать в качестве протокола socks, но вроде как и http можно. Можно оставить только socks, а второй блок, относящийся для http не указывать.

раздел “outbounds”:

“address”: — внутрь кавычек нужно указать IP-адрес вашего VPS сервера. IP-адрес можно узнать в интерфейсе Вашего хостера.

“port”: — порт должен быть такой же как и в серверном конфиге. В данном случае 443.

“id”: — сюда необходимо вставить ранее сгенерированный программой xray uuid. Сгенерированный uuid должен совпадать в конфигурации сервера и клиента.

“fingerprint”: — здесь можно указать один из отпечатков популярных браузеров, можно указать значение random (для случайного выбора одного из отпечатков браузеров), а можно и randomized (для автогенерации случайного значения через функцию xray x25519). Подробнее можно прочитать здесь => https://xtls.github.io/en/config/transport.html#transportobject. Ищите в тексте страницы fingerprint.

“serverName”: — сюда необходимо вставить сайт, который Вы выбрали в качестве подменного и указали в конфиге сервера для опции “serverNames”:, также IP-адрес этого сервера должен быть указан в опции “dest”:.

“publicKey”: — ранее Вы сгенерировали пару Private key и Public key с помощью команды xray x25519. Public key нужно вказать в эту опцию.

“shortId”: — необходимо ввести ранее сгенерированный для сервера ShortId. Сервер может содержать несколько ShortId, клиент — один ShortId.

Пункт 3. Проверка конфигурации и запуск демона

Для проверки конфигурации на сервере необходимо указать следующую команду.

/usr/local/bin/xray -test -c /usr/local/etc/xray/config.json

Если с конфигом всё хорошо, программы выведет Ok.

Также необходимо проверить конфигурацию клиента. Запустите командную строку (cmd), перейдите в директорию клиента xray и аналогично запустите проверку.

cd C:\Xray
xray -test

Если с конфигом всё хорошо, программы выведет Ok.

Ранее мы настраивали файл-конфигурацию демона xray.service. Теперь (после редактирования конфига демона) надо перезапустить демона.

systemctl daemon-reload && systemctl restart xray && systemctl enable xray

systemctl daemon-reload — перезапускает systemd и вроде как он заново перечитывает конфигурации демонов. systemctl restart xray — перезапускает демон xray. systemctl enable xray — включает демона xray (то есть он будет автозагружаться в случае рестарта системы и перезапускаться в случае падения). Можно вводить эти команды по отдельности, а можно одной строкой соединяя, как показано выше двумя амперсандами &&. В результате ввода этих команд система Вам не сообщит, что всё прошло хорошо, а просто появится следующая строка системного приглашения. Таков уж Линукс. Это нормально.

Далее нам нужно узнать статус нашего демона. Это можно сделать так.

systemctl status xray

Результатом вывода будет нечто такое.

root@my-vps-server:~# systemctl status xray
* xray.service - Xray Service
Loaded: loaded (/etc/systemd/system/xray.service; enabled; vendor preset: enabled)
Drop-In: /etc/systemd/system/xray.service.d
`-10-donot_touch_single_conf.conf
Active: active (running) since Sat 2023-08-12 19:17:11 MSK; 1 day 1h ago
Docs: https://github.com/xtls
Main PID: 125536 (xray)
Tasks: 8 (limit: 529)
Memory: 7.8M
CPU: 11.076s
CGroup: /system.slice/xray.service
`-125536 /usr/local/bin/xray run -config /usr/local/etc/xray/config.json
Aug 13 18:16:41 <server-domain-name> xray[125536]: REALITY remoteAddr: <remote IP>:<port>
Aug 13 18:16:42 <server-domain-name> xray[125536]: REALITY remoteAddr: <remote IP>:<port> handled: false

Строка Active: содержит информацию о статусе демона, времени его запуска и продолжительности его активности. Если статус демона active (running) (он удобно светится зелёным на консоли), то значит демон работает и всё хорошо. Если в статусе указано нечто вроде dead, inactive, failed, то дела плохи и демон не запустился. В этом случае в выводе последними строками будут идти строки, описывающие суть ошибки, из-за которой демон не стартовал. Необходимо гуглить данные ошибки и разбираться в чём проблема. Проблема может быть в конфиге xray (сервера или клиента) или конфиге самого демона (/etc/systemd/system/xray.service). У меня на нахождение ошибки, из-за которой демон не стартовал ушла вся суббота.

Пункт 4. Выбор и запуск клиента

В качестве клиента для ОС Windows можно использовать Xray-core (это программа для командной строки; для краткости дальше она будет упоминаться как Xray). Релизы находятся по адресу: => https://github.com/XTLS/Xray-core/releases. Это страница github разработчика программы, он же делает релизы для других операционных систем. Будьте внимательны и скачивайте версию более новую или равную 1.8.3. В ней точно поддерживается новый протокол Reality. Также обращайте внимание на разрядность вашей ОС Windows (32bit (x86) или 64bit (x86–64)).

Скачайте необходимый для Вашей ОС архив с релизом программы (например, Xray-windows-64.zip). И распакуйте в удобное для Вас место, например в каталог xray в корне диска C: .

Ручной запуск Xray осуществляется следующими командами. Первая команда нужна для перехода в каталог с исполняемым файлом xray.exe, а вторая запускает программу xray и стартует клиентскую часть. Клиент начнёт слушать адрес 127.0.0.1 и порты 2080 для протокола socks и 2081 для протокола http. Вы это ранее настраивали в конфиге клиента.

cd c:\xray
xray run

Данная команда приемлема, если конфигурационный файл называется config.json и находится в том же каталоге, что и xray.exe.

Если ваш конфигурационный файл находится не в том же каталоге, что и xray.exe, то команда ручного запуска будет выглядеть так.

cd c:\xray
xray run -c "c:\xray-config\config.json"

Если конфигурационный файл находится в том же каталоге, что и xray.exe, но называется по-другому, то команда будет такая.

cd c:\xray
xray run -c test-config.json

Варианты команд для настройки автозапуска будет выглядеть так. Выберите одну из них для настройки автозапуска.

C:\xray\xray.exe run
C:\xray\xray.exe run -c "c:\xray-config\config.json"
C:\xray\xray.exe run -c test-config.json

Общее правило такое. Если в пути до файла есть каталог, имя которого состоит из двух слов, разделённых пробелом, то весь путь нужно заключить в кавычки, например.

"C:\Program Files\xray\xray.exe" run -c "c:\xray-config\config.json"

В случае с c:\xray-config\config.json я этот путь тоже на всякий случай заключил в кавычки, чтобы ключ -c не перепутал аргумент (хотя тут не с чем путать).

В случае, если Вам категорически не нравятся программы для командной строки (CLI), то на странице github автора есть раздел с перечислением клиентов с графическим интерфейсом (GUI): => https://github.com/XTLS/Xray-core#gui-clients

При выборе будьте внимательны. Версия xray-core, включённая в качестве модуля в программу с графическим интерфейсом, должна быть равной или новее 1.8.3. Узнать об этом можно, прочитав заметки к релизу (release notes). Но, к сожалению, версию xray-core пишут далеко не всегда. В таком случае нужно скачивать и пробовать настраивать и подключаться. Желательно сначала проверить подключение через программу для командной строки Xray (он же Xray-core) для того, чтобы исключить ошибки в конфиге клиента или сервера или же в xray.service. Если подключение с помощью Xray-core прошло успешно, то значит, конфиги в порядке, и можно искать программу с GUI для своего удобства.

В указанном выше по ссылке разделе разработчика также указаны клиенты для ОС семейства Apple (iOS, MacOS). Также изучайте release notes и ищите тот клиент, который поддерживает xray-core версии 1.8.3 или более новую. Например, у автора указано, что программа для MacOS есть программа V2RayXS (=> https://github.com/tzmax/V2RayXS/releases). У неё версия v1.5.8 (Beta1) поддерживает xray-core 1.8.3. Можете попробовать настроить и использовать её в качестве клиента. К сожалению, не подскажу, как в MacOS настраивается автозагрузка. Если Вы давно пользуетесь MacOS, то, наверно, и без меня это знаете.

Пункт 5. Настройка браузера

Для отправки запросов на доступ к заблокированному сайту, необходимо использовать расширение-переключатель прокси. Я использую SwitchyOmega, но можно искать другие расширения по запросу proxy switcher.

В настройках прокси серверов IP-адрес будет всегда 127.0.0.1, порт будет тот, который Вы указали в качестве в конфиге клиента для протокола socks (в примере это был 2080) и для протокола http (в примере это был 2081). В расширении в качестве протокола socks нужно выбирать протокол SOCKS5. Аналогично можно настраивать прокси сервер в любой другой программе, которая поддерживает проксирование. Например в торрент-клиенте qBittorent эти настройки находятся в разделе Соединение в подразделе Прокси-сервер. Для настройки в qBittorent также нужно выбрать протокол Socks5, IP-адрес 127.0.0.1 и порт 2080. Я не советую использовать прокси-сервер (то есть Ваш VPS сервер) для соединения с пирами, так как не все хостеры любят и позволяют проводить битторент-трафик через себя. Можно использовать прокси для анонсеров ваших торрент-трекеров. Там трафик небольшой. Я лично не использую прокси в торрент-клиенте.

При возникновении ошибок я советую искать аналогичные ситуации в разделе issue на гитхабе разработчика: => https://github.com/XTLS/Xray-core/issues. Придётся много переводить с английского и китайского, но у Вас всё получится.

Добавлено 13 августа 2023 года после опубликования: Есть весомое мнение, что в качестве подменного сайта нужно выбирать популярный иностранный сайт(вне Вашей страны), который не заблокирован в Вашей стране. Но у меня работает и с rg.ru. В общем, в этом моменте можно поиграться с настройками.

Для использования на мобильных устройствах на android есть клиент v2rayNG => https://github.com/2dust/v2rayNG. При его настройке:

используйте минимум версию 1.8.6 или новее

в строке адрес укажите IP-адрес VPS-сервера, в строке порт 443

в ID сгенерированный uuid

в строке поток выберите xtls-rprx-vision

в строке сеть — tcp

тип заголовка — none

TLS — reality

SNI — rg.ru (или другой подменный сайт, но не забудьте, что конфиг сервера и клиента должен быть согласован)

в PublicKey — ранее сгенерированный Public Key

в ShortId — ранее сгенерированный ShortId

в SpiderX — /