March 4

WARP в 3X-UI

Всем привет! Сегодня обсудим, как активировать WARP в 3x-ui и для чего это может понадобиться. Начнём с небольшой теории...


Контакты и не только

Автор: https://t.me/noisycake

Ткг: https://t.me/hfk_blog

Гайд по установке 3x-ui: https://noisycake.ru/articles/vpn_server/


Понятия

WARP — бесплатный VPN-сервис от Cloudflare на основе протокола WireGuard. Он работает вкупе с 1.1.1.1 от той же компании.

1.1.1.1 — сеть из множества DNS-серверов по всей планете. Они сопоставляют доменные имена сайтов с IP-адресами, на которых эти сайты расположены, чтобы человек мог вводить удобочитаемые буквы вместо октет. Существуют и другие сети DNS, например, от Google (8.8.8.8) или Quad9 (9.9.9.9)


Для чего он нужен?

Давайте детальнее взглянем, для чего WARP нужен именно нам:

  1. Самое главное: чтобы спокойно посещать .ру ресурсы. В настоящее время системы цензуры умеют анализировать характер трафика, поэтому двойные пересечения границы за доли секунды покажутся подозрительными, из-за чего IP-адрес прокси может быть помещён в blacklist провайдера. В РФ (насколько я знаю) подобных прецедентов ещё не было, но в один прекрасный день РКН могут "апгрейднуться", и тогда будет совсем не весело;
  2. Если какой-то зарубежный сайт не пускает с IP вашего сервера (привет, Reddit), можно попробовать зайти на него через WARP;
  3. Снижается риск получить капчу Cloudflare.

У вас мог возникнуть резонный вопрос — почему бы не убрать лишнее звено в виде 3x-ui и не использовать WARP напрямую? Ответ довольно прост: в РФ этот сервис заблокирован.


Установка WARP

Вообще в панели уже встроен WARP, и его можно активировать в пару кликов, но на некоторых серверах он тупо не заводится. Тем не менее, хотя бы для ознакомления рассмотрим и этот способ.

Вариант 1

Открываем 3x-ui в браузере и сразу идём в настройки Xray -> Базовый шаблон.

Нажимаем на зелёную кнопку WARP -> Создать -> Добавить исходящий.

WARP включён, осталось настроить правила маршрутизации. Для этого переходим в соответствующий пункт.

Как видим, каждая строка отвечает за определённое правило, например, в третьей указана блокировка (исходящий — blocked) протокола BitTorrent, чтобы не нагружать сеть торрентами.

Нам же нужно добавить два правила, чтобы все соединения с РФ сайтами проходили через WARP. Для этого нажимаем "Добавить правило".

1. Пишем следующее в строке "IP": geoip:ru, в качестве Outbound Tag указываем "warp". Жмём на зелёную кнопку.

2. В качестве второго правила будем указывать домены. В поле "Domains" пишем: geosite:category-ru,domain:livejournal.com,domain:icq.com, Outbound Tag — тот же "warp".

geoip, geosite и т.п. — обновляемые списки IP-адресов и доменов. По тегам можно понять, какие данные эти списки содержат, например geoip:ru состоит из пула российских айпишников.

Не забываем сохранить настройки и перезапустить Xray. Теперь можно обновить подписку...

И вроде как готово и должно работать, но я проверил на трёх серверах, и везде какие-то проблемы. Либо на .ру сайты вообще не заходит, будто я поставил блокировку, либо заходит напрямую без WARP. Поэтому рассмотрим более стабильный способ.

Для работы WARP в подключении также нужно включить Sniffing (настройка в нижней части раздела) — отметьте все галочки, но не активируйте "Metadata Only" и "Route Only"

Вариант 2

Для начала уберём нынешнюю конфигурацию WARP (если выполняли предыдущий пункт). В тех же настройках Xray выбираем Исходящие -> WARP -> Удалить.

Поскольку предыдущий способ не сработал, запустим WARP отдельно с помощью скрипта и изменим конфиг Xray так, чтобы соединения с .ру сайтами проксировались через этот самостоятельный процесс. В общем, настроим WARP как локальный SOCKS5-прокси.

Переходим в терминал. Выберем себе свободный порт в пределах [1000, 65535].

Напомню, что проверить занятые порты можно командой netstat -tulpn | grep LISTEN

Вставляем в консоль:

cd && bash <(curl -fsSL https://gitlab.com/fscarmen/warp/-/raw/main/menu.sh) w

Далее идёт типичный процесс установки. Выбираем язык, запускаем скрипт

Пишем порт. По умолчанию 40000. Далее спрашивают, есть ли у нас платная подписка WARP+. Если у вас есть ключ лицензии, можете выбрать второй пункт, в ином случае выбирайте первый.

По окончании процесса видим нечто вроде "Congratulations! Wireproxy is working."

Возвращаемся в 3x-ui и идём в Настройки Xray -> Расширенный шаблон. Перед нами появится шаблон конфигурации Xray, представленный в формате json. Требуется изменить outbounds, поэтому переходим в "Исходящие".

После последней ФИГУРНОЙ скобки ставим запятую -> Enter. Вставляем следующий блок конфига (если выбирали другой порт, впишите его вместо 40000):

{ "tag": "warp", "protocol": "socks", "settings": { "servers": [ { "address": "127.0.0.1", "port": 40000 } ] } }

Сохраняем настройки и перезапускаем ядро.

Так как правила маршрутизации мы не удаляли, они снова отобразились в панели. Осталось проверить работоспособность WARP.

Как видим, в качестве провайдера указан Cloudflare, всё работает!

А если нет, попробуйте обновить подключение / перезапустить панель.


Схемы взаимодействий сервисов

Для лучшего понимания того, как это всё работает, предлагаю взглянуть на упрощённые схемы.

1. Установлен WARP с фильтрами типа geoip:ru, маршрутизация в клиенте не настроена:

  • Если ресурс хостится в России или имеет доменные зоны .ru, соединение пройдёт через WARP, иначе — напрямую через сервер.
3x-ui + WARP

2. Установлен WARP с фильтрами типа geoip:ru, в клиенте настроены фильтры на запрещённые сайты:

  • Сначала клиент проверяет, заблокирован ли ресурс в России. Если нет — соединение идёт напрямую без участия прокси-сервера, иначе — через VPS;
  • Далее, если запрос дошёл до сервера, аналогично предыдущему варианту, проверяется зона хостинга ресурса и его доменная зона.
3x-ui + WARP + Client routing

3. Установлен WARP с фильтрами типа geoip:ru, в клиенте настроены фильтры типа geoip:ru:

  • Сначала клиент проверяет, хостится ли ресурс в России. Если да — соединение идёт напрямую без участия прокси-сервера, иначе — через VPS;
  • Далее, если запрос дошёл до сервера, аналогично первому варианту, проверяется зона хостинга ресурса и его доменная зона.

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

3x-ui + WARP + Client routing

The end

Очередной мини-гайд подошёл к концу. Надеюсь, было интересно и полезно :)

Всем до скорого, и спасибо, что читаете! 😀