WARP в 3X-UI
Всем привет! Сегодня обсудим, как активировать WARP в 3x-ui и для чего это может понадобиться. Начнём с небольшой теории...
Контакты и не только
Автор: https://t.me/noisycake
Гайд по установке 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 нужен именно нам:
- Самое главное: чтобы спокойно посещать .ру ресурсы. В настоящее время системы цензуры умеют анализировать характер трафика, поэтому двойные пересечения границы за доли секунды покажутся подозрительными, из-за чего IP-адрес прокси может быть помещён в blacklist провайдера. В РФ (насколько я знаю) подобных прецедентов ещё не было, но в один прекрасный день РКН могут "апгрейднуться", и тогда будет совсем не весело;
- Если какой-то зарубежный сайт не пускает с IP вашего сервера (привет, Reddit), можно попробовать зайти на него через WARP;
- Снижается риск получить капчу 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, иначе — напрямую через сервер.
2. Установлен WARP с фильтрами типа geoip:ru, в клиенте настроены фильтры на запрещённые сайты:
- Сначала клиент проверяет, заблокирован ли ресурс в России. Если нет — соединение идёт напрямую без участия прокси-сервера, иначе — через VPS;
- Далее, если запрос дошёл до сервера, аналогично предыдущему варианту, проверяется зона хостинга ресурса и его доменная зона.
3. Установлен WARP с фильтрами типа geoip:ru, в клиенте настроены фильтры типа geoip:ru:
- Сначала клиент проверяет, хостится ли ресурс в России. Если да — соединение идёт напрямую без участия прокси-сервера, иначе — через VPS;
- Далее, если запрос дошёл до сервера, аналогично первому варианту, проверяется зона хостинга ресурса и его доменная зона.
Казалось бы, зачем нужны два одинаковых фильтра на разных уровнях? Действительно, в контексте одного соединения это не имеет смысла. Но если нашим прокси будет пользоваться несколько людей, мы не сможем контролировать настройки их клиентов (в том числе фильтры), поэтому, если есть нужда в маршрутизации, стоит делать её непосредственно на самом сервере.
The end
Очередной мини-гайд подошёл к концу. Надеюсь, было интересно и полезно :)