Попалась интересная статья на Хабре про обход блоkировок Рунета с помощью самых передовых наработок китайцев. У китайцев Великий Китайский Файрвол, регулирующий Интернет внутри страны, и они на обходах блоkировок уже «собаку съели». По статье с Хабра я настроила себе сервер, на компьютере — клиент, на смартфоне — мобильный клиент и описала все свои действия со скриншотами в этой статье. Получилось руководство по настройке обхода блоkировок Рунета без углубления в используемые технологии. Ну, чтобы и у домохозяйки был YouTube, если его таки заблокируют.
Обход блоkировок Рунета
Та самая статья с Хабра: «Bleeding-edge обход блокировок с полной маскировкой: настраиваем сервер и клиент XRay с XTLS-Reality быстро и просто«.
Итак, наш обход блоkировок Рунета будет состоять из следующих компонентов:
- сервера XRay, который установим и настроим на сервере за пределами России;
- клиента NekoBox, который установим и настроим на компьютере с Windows/Linux;
- мобильного клиента NekoBox, который установим и настроим на Android смартфоне.
Сервер будет маскироваться под настоящий популярный сайт (в моем случае это будет amazon.com) и отдавать настоящий TLS сертификат этого сайта. Все это для того, чтобы со стороны систем анализа трафика цензора подключение к серверу выглядело как обычное подключение к популярному, разрешенному Роскомнадзором, сайту вне Рунета. Это будет реализовано с помощью XRay сервера и самой передовой и недетектируемой технологии обхода блоkировок XTLS-Realty.
У нас же, при подключении к серверу, будет меняться IP адрес на IP адрес сервера, и будут сняты все блокировки в Интернете по географическому признаку. Другими словами, если на какой-то сайт запрещен доступ из России, то, подключившись к серверу, вы получите доступ к этому сайту.
О еще одном варианте обхода блоkировок читайте в статье «Блокировка VPN? Маскируем VPN под HTTPS«.
Практическая реализация
Требования
Чтобы следовать этому руководству, понадобится виртуальный сервер VPS/VDS с ОС Linux (Debian), располагающийся не в России.
Лично мне понравилось предложение от хостера RackNerd за 18$ на 1 год VPS сервер в США или во Франции. Оплатить можно и биткоином.

Есть другой вариант: «VDS сервер не в России и с оплатой российской банковской картой в рублях» (читаем только один раздел).
Установка XRay сервера
Нам нужен проект XRay-core (он же XRay сервер), переходим на GitHub проекта по ссылке: https://github.com/XTLS/Xray-core/releases.

Если самая свежая версия — Pre-release, то команда для Установки/Обновления сервера XRay, которую вводим на VPS/VDS сервере, будет следующая:
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install --beta

Для Release версии сервера XRay команда для Установки/Обновления будет следующая:
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install
Будут установлены следующие файлы:
- /etc/systemd/system/xray.service
- /etc/systemd/system/xray@.service
- /usr/local/bin/xray
- /usr/local/etc/xray/*.json
- /usr/local/share/xray/geoip.dat
- /usr/local/share/xray/geosite.dat
- /var/log/xray/access.log
- /var/log/xray/error.log
Первые два файла — это unit-файлы для systemd, которые описывают настройки для запуска и управления XRay. Следующие два файла — это исполняемый файл XRay и его конфигурационный файл .json. Следующие два файла с расширением .dat — это базы данных для определения страны или географического региона, к которому принадлежит определенный IP-адрес или ресурс в Интернете. Последние два файла — это файлы логов.
Для Удаления XRay за исключением конфигурационного файла и файлов логов:
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ remove
Для Удаления XRay вместе с конфигурационным файлом и файлами логов:
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ remove --purge
Настройка XRay сервера
Приводим конфигурационный файл /usr/local/etc/xray/config.json к виду:
{
"log": {
"loglevel": "info"
},
"routing": {
"rules": [],
"domainStrategy": "AsIs"
},
"inbounds": [
{
"port": 443,
"protocol": "vless",
"tag": "vless_tls",
"settings": {
"clients": [
{
"id": "4c3fe585-ac09-41df-b284-70d3fbe18884",
"email": "user1@myserver",
"flow": "xtls-rprx-vision"
}
],
"decryption": "none"
},
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"show": false,
"dest": "www.amazon.com:443",
"xver": 0,
"serverNames": [
"www.amazon.com"
],
"privateKey": "GOTPj_klK7_j_IvjxiCtyBL80RYotYSOdBBBSfFOMH4",
"minClientVer": "",
"maxClientVer": "",
"maxTimeDiff": 0,
"shortIds": [
"aabbccdd"
]
}
},
"sniffing": {
"enabled": true,
"destOverride": [
"http",
"tls"
]
}
}
],
"outbounds": [
{
"protocol": "freedom",
"tag": "direct"
},
{
"protocol": "blackhole",
"tag": "block"
}
]
}
Шаблон конфигурационного файла готов. Осталось внести небольшие изменения в соответствии со своими данными.
Запускаем команду:
/usr/local/bin/xray uuid
На выходе получаем UUID — идентификатор пользователя для протокола аутентификации VLESS. На этот UUID нужно поменять значение параметра «id» в секции «clients» конфигурационного файла /usr/local/etc/xray/config.json.
В секции «clients» конфигурационного файла задаются пользователи-клиенты. В данном шаблоне конфигурационного файла задан только один пользователь-клиент.
Запускаем команду:
/usr/local/bin/xray x25519
На выходе получаем Приватный и Публичный ключи. Публичный ключ нам понадобится, когда будем настраивать клиент NekoBox. На Приватный ключ нужно заменить значение параметра «privateKey» конфигурационного файла.
Запускаем команду:
openssl rand -hex 8
На выходе получаем шестнадцатеричное число длиной 8 байт. На это число нужно поменять первый элемент в массиве «shortIds» конфигурационного файла.
В конфигурационном файле указан домен www.amazon.com — под сайт Amazon-а и будет маскироваться XRay сервер. Можно поменять www.amazon.com на домен самостоятельно подобранного сайта. Таким сайтом может быть любой популярный сайт, территориально располагающийся не в России, незаблокированный Роскомнадзором, и, при обращении к доменному имени которого, не происходит переадресации на другой какой-то домен.
Для увеличения производительности TCP соединений включим BBR (Bottleneck Bandwidth and RTT) — алгоритм контроля перегрузки, разработанный компанией Google. Для этого введем команды:
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p
Перезапускаем XRay сервер:
systemctl stop xray
systemctl start xray
Проверяем, что все нормально запустилось:
journalctl -u xray
systemctl status xray

Проверка работоспособности маскировки сервера
Чтобы проверить работоспособность маскировки XRay сервера под популярный сайт, на своем локальном компьютере добавляем в файл hosts (в Linux это файл /etc/hosts, а в Windows это файл C:\Windows\System32\drivers\etc\hosts) строку:
12.34.56.79 www.amazon.com
где 12.34.56.79
— это IP адрес XRay сервера;
www.amazon.com
— это домен популярного сайта, под который маскируется XRay сервер.

Останавливаем XRay сервер командой:
systemctl stop xray
На своем локальном компьютере, в адресной строке браузера набираем домен популярного сайта (www.amazon.com), под который маскируется XRay сервер. И соединение с сайтом не должно быть установлено, т.к. XRay сервер остановлен.

Запускаем XRay сервер:
systemctl start xray
Обновляем страницу сайта в браузере. XRay сервер отобразит настоящую страницу сайта, под который маскируется.

Проверяем TLS сертификат сайта, нажав на «замочек» в адресной строке браузера.

Ура! TLS сертификат валидный, настоящий. Маскировка работает!
Обновление XRay сервера
Проект XRay-core (он же XRay сервер) сейчас довольно активно развивается. Пока писала статью, вышел новый релиз v1.8.4. Чтобы обновить XRay сервер, нужно запустить всего одну команду, ту же самую, что и при первоначальной установке XRay сервера. Смотрите раздел «Установка XRay сервера«.
Клиент NekoBox в Windows/Linux
Переходим на GitHub проекта NekoRay (он же NekoBox) по ссылке: https://github.com/MatsuriDayo/nekoray/releases. Здесь дистрибутивы клиента NekoBox под ОС Windows/Linux.

Скачиваем самую свежую версию дистрибутива.
На компьютере с ОС Windows скачиваю zip-архив nekoray-3.18-2023-08-24-windows64.zip, распаковываю и запускаю исполняемый файл nekoray.exe.

Далее, выбираем ядро sing-box.

В меню Сервер выбираем подменю Новый профиль.

Заполняем поля следующими значениями:
- Тип — VLESS;
- Адрес — это IP адрес XRay сервера;
- Порт — 443;
- UUID — это тот самый UUID, который получили, когда настраивали XRay сервер (см. раздел «Настройка XRay сервера«);
- Flow — xtls-rprx-vision;
- Транспорт — tcp;
- Безопасность — tls;
- Кодирование пакетов — xudp;
- SNI — это домен популярного сайта, под который маскируется XRay сервер (www.amazon.com);
- ALPN — h2;
- Fingerprint — chrome (это маскировка клиента NekoBox под обычный браузер Chrome);
- Reality Pbk — это Публичный ключ, который получили, когда настраивали XRay сервер, вот он нам и понадобился;
- Reality Sid — это первый элемент в массиве «shortIds» конфигурационного файла /usr/local/etc/xray/config.json.
Нажимаем кнопку OK.

Настроим правила маршрутизации. Трафик до .ru-дометов и хостов с IP адресами из России будет идти напрямую, а не через прокси (XRay сервер). Остальной трафик — через прокси. Для этого используем базу данных GeoIP.
В меню Настройки выбираем подменю Настройки маршрутов.

Во вкладке Базовые маршруты, в текстовое поле, на пересечении столбца Напрямую и строки IP, добавляем текст:
geoip:ru
geoip:private

Нажимаем кнопку Кастомные маршруты. В поле Редактор JSON добавляем текст:
{
"rules": [
{
"domain_suffix": [
".ru"
],
"outbound": "direct"
}
]
}

Нажимаем кнопку OK и снова кнопку OK. Маршруты сохранены.
Кликаем правой кнопкой мыши на созданном профиле и выбираем Запустить.

Ставим «галочку» Режим системного прокси. Все готово, и теперь можем проверять работоспособность соединения с XRay сервером и настроенных маршрутов.

Сделав запрос «Мой IP адрес» на сайте с .ru-доменом, получим IP адрес, выданный интернет провайдером. У меня этот IP адрес начинается с цифры 9 (см. рисунок выше).
Сделав аналогичный запрос на сайте с .com-доменом и вне России, получим IP адрес прокси (XRay сервера). У меня этот IP адрес начинается с цифры 4 (см. рисунок ниже).

Маршрутизация работает, соединение с XRay сервером работает. Ура!
Обновление клиента NekoBox в Windows/Linux
Проект NekoRay (он же NekoBox) тоже активно развивается. Чтобы обновить клиент NekoBox в Windows/Linux, кликаем по меню Обновление и в открывшемся окне нажимаем кнопку Обновление.

Обновление скачивается, клиент NekoBox перезапускается, и все готово!
Мобильный клиент NekoBox на Android
На смартфоне с Android переходим на GitHub проекта NekoBoxForAndroid по ссылке: https://github.com/MatsuriDayo/NekoBoxForAndroid/releases.

Скачиваем самую свежую версию файла .apk, устанавливаем, выдав разрешение на установку, и запускаем приложение NekoBox. Я скачивала файл NB4A-1.2.3-arm64-v8a.apk.
Нажимаем на «плюсик» и выбираем Ручные настройки.

Настройки мобильного клиента NekoBox аналогичные настройкам клиента NekoBox для компьютера с Windows/Linux. Сервер — это IP адрес XRay сервера, Логин пользователя — это UUID. Остальные настройки имеют те же названия, что у клиента NekoBox для компьютеров.

Сохраняем настройки, нажав на «галочку«.
Настройки правил маршрутизации аналогичные.


Настройки завершены. Нажимаем круглую кнопку с самолетом для соединения с сервером XRay. Проверяем работоспособность соединения с сервером XRay и настроенных маршрутов.

Рабочие настройки можно экспортировать в файл. И на новом устройстве не вводить вручную все настройки, а просто Импортировать из файла.

Обновление клиента NekoBox на Android
На смартфоне/планшете с андройд переходим на GitHub проекта NekoBoxForAndroid по ссылке: https://github.com/MatsuriDayo/NekoBoxForAndroid/releases.
Скачиваем самую свежую версию файла .apk. Я скачивала файл NB4A-1.3.4-arm64-v8a.apk.
Когда файл скачался, нажимаем Открыть, а затем Обновить. Приложение обновится, все настроки приложения будут сохранены.
Выводы
Как говорится, надейся на лучшее, а готовься к худшему. Поэтому, обход блоkировок Рунета (а лучше, парочка разных обходов) должен быть у каждого и заранее. Вопросы оставляйте в комментариях под статьей.
Комментарии
Думаю, нужно поторопиться с настраиванием у себя обходов блокировок.
Поскольку 1 сентября 2023 года в открытом доступе появился ПРОЕКТ постановления Правительства Российской Федерации о внесении изменений в другое действующее постановление Правительства Российской Федерации от 26 октября 2012 г. № 1101 «О единой автоматизированной информационной системе «Единый реестр доменных имен, указателей страниц сайтов в информационно-телекоммуникационной сети «Интернет» и сетевых адресов, позволяющих идентифицировать сайты в информационно-телекоммуникационной сети «Интернет», содержащие информацию, распространение которой в Российской Федерации запрещено».
Не поленитесь, поищите текст ПРОЕКТА в Интернете.
Так вот, когда постановление, о ПРОЕКТЕ которого мы говорим, вступит в силу, распространение информации о VPN и прокси, позволяющих обходить блокировки Роскомнадзора, станет ЗАПРЕЩЕНО. А сайты, распространяющие такую информацию, возможно, будут блокироваться Роскомнадзором. Такие дела…
Таки прилетело уведомление о блокировке домена adminkin.com от Роскомнадзора. Ниже привожу текст письма от хостинг-провайдера, уведомляющего меня об этом. Забегая вперед, скажу, что домен adminkin.com в результате все-таки был заблокирован. Вместо него теперь работает adminkin.pro.