о сетях, обходе блокировок и борьбе с цензурой

Установка и настройка XRay на OpenWRT (для Shadowsocks, XTLS-Reality и всего-всего-всего)

По многочисленным просьбам, настало время статьи про настройку XRay на OpenWRT.

Про настройку этого дела под OpenWRT уже недавно рассказывал @Andrevich в своей отличной статье Обход блокировок на OpenWRT с помощью Passwall (v2ray, xray, trojan) и tun2socks. Там описывалась настройка на базе Passwall, приведены подробные инструкции по сборке прошивки (если не хватит памяти в ФС роутера) и настройки до мельчайших деталей. Я рекомендую ознакомиться сначала с той статьей, и вообще попробовать настраивать именно по ней, потому что там описывается стандартное и надежное решение.

Также есть инструкция по настройке для роутеров Keenetic: Xray на Keenetic / Xkeen

Ну а мы здесь сегодня поговорим об альтернативном варианте для OpenWRT — просто, чтобы было.

Мы будем устанавливать на роутер классический XRay и набор скриптов с вебмордой для них под названием Luci-app-xray.

Поехали.

Дано: у вас есть роутер, и на нем есть свободное место в файловой системе. У меня установка (без учета geoip.dat и geosites.dat) заняла 23 мегабайта.

Если у вас места меньше — можете воспользоваться советами по пересборке прошивки из уже упомянутой статьи.

Проверить свободное место можно в интерфейсе OpenWRT на вкладке Software:

Там же можно нажать «Update lists» чтобы обновить списки пакетов для пакетного менеджера — операция должна завершиться без ошибок. Либо, если вам больше по душе консоль (а дальнейшие операции мы будем делать именно в консоли), подключиться к роутеру по ssh с именем пользователя root и выполнив команду

opkg update

Все готово, начинаем.

Идем на https://github.com/yichya/luci-app-xray/releases и скачиваем последний релиз Luci-app-xray, а именно два файла:

wget https://github.com/yichya/luci-app-xray/releases/download/v2.1.2/luci-app-xray-fw4_2.1.2-1_all.ipk -O luci-app-xray-fw4_2.1.2-1_all.ipk
wget https://github.com/yichya/luci-app-xray/releases/download/v2.1.2/luci-app-xray-shared_2.1.2-1_all.ipk -O luci-app-xray-shared_2.1.2-1_all.ipk

Если качать wget’ом с Github’а, то нередко файлы сохраняются с каким-то неприличным именем, поэтому я использовал опцию -O чтобы явно указать, под каким именем нужно их сохранять.

Один файл содержит непосредственно скрипты и интерфейс Luci-app-xray, а второй не содержит почти ничего, кроме указанной зависимости от пакета xray-core.

Устанавливаем сначала shared-файл, потом устанавливаем второй файл.

opkg install ./luci-app-xray-shared_2.1.2-1_all.ipk
opkg install ./luci-app-xray-fw4_2.1.2-1_all.ipk

Иногда opkg может ругнуться на нехватку каких-либо еще зависимостей (то ли авторы забыли добавить их в список, то ли это зависит от дефолтной сборки прошивки конкретного роутера), доустанавливаем их вручную. В моем случае это был kmod-nft-tproxy:

opkg install kmod-nft-tproxy

Удаляем скачанные файлы, чтобы они не занимали драгоценное место на флешке, оно нам еще пригодится:

rm ./luci-app-xray-shared_2.1.2-1_all.ipk
rm ./luci-app-xray-fw4_2.1.2-1_all.ipk

Перезапускаем роутер, и в веб-интерфейсе видим, что у нас появилась новая вкладка с настройками и состоянием XRay:

Xray is running — уже хорошо, но сразу же рядом мы видем предупреждение, что отсутствуют файлы geoip.dat и geosite.dat (список IP-адресов по странам и список адресов сайтов по группам для настроек правил маршрутизации), и без них XRay может работать некорректно.

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

Итак, где же взять эти недостающие файлы?

Вариант раз, «всё как у людей».

Идем на https://github.com/XTLS/Xray-core/releases, скачиваем свежий XRay для десктопа (например версию linux-64, на самом деле не важно), достаем из архива geoip.dat и geosite.dat, и закидываем на роутер по SCP в нужное место:

scp ./geoip.dat root@192.168.1.1:/usr/share/xray
scp ./geosite.dat root@192.168.1.1:/usr/share/xray

Такая связка займет 10+1.5 мегабайт.
Upd: в комментах посоветовали просто устанвить v2ray-geoip + v2ray-geosite через opkg.

Альтернатива, примерно с тем же содержимым:

GeoIP устанавливаем из репозитория OpenWRT, получая сразу самую новую версию, а Geosite — из репозитория https://github.com/v2fly/domain-list-community. Скачанный dlc.dat-файл нужно переименовать в geosite.dat и положить в роутер в /usr/share/geosite.dat:

opkg install xray-geodata
wget https://github.com/v2fly/domain-list-community/releases/download/20230825070717/dlc.dat -O /usr/share/geosite.dat

Вариант два, экономный.

Для тех, кто не может себе позволить занять десяток мегабайт флеша, тоже не все потеряно. Идем на https://github.com/v2fly/geoip и качаем оттуда private.dat, который занимает всего 248 байт, и по факту не содержит никаких GeoIP-записей кроме «локальные адреса» (естественно, GeoIP-маршрутизации у вас тогда уже не будет). Кладем в /usr/share/ под именем geoip.dat

С Geosite сложнее, но в уже упомянутой репе https://github.com/v2fly/domain-list-community есть инструкция по сборке geosite.dat самостоятельно — можно удалить из папки «data» все содержимое кроме чего-то одного, например, «category-gov-ru» или «category-gov-ru» c «category-ads», и собрать себе крохотный geosite.dat-файл. Если кому-то не лень, сделайте плиз и загрузите куда-нибудь, люди вам спасибо скажут.

Перезапускаемся еще раз, и видим, что больше предупреждений нет, можно начинать настройку.

Скроллим вниз, и нажимаем Add в разделе «Xray Servers»:

По сравнению с десктопными клиентами, настройка производится немножко «наоборот»: сначала вы задаете имя сервера, адрес сервера, порт и данные пользователя, например ключ для Shadowsocks, UUID для VMess/VLESS, и т.д.:

А уже потом на второй вкладке выбираете используемый протокол, тип шифрования, и т.д. Например, для Shadowsocks поля конфигурации выглядят так:

Для VLESS с включенным XTLS-Reality так:

Если вы не используете Reality, то лишние поля скроются.

На третьей вкладке можно выбрать дополнительные настройки транспорта, например, если вы проксируетесь через websockets.

Заполняем все поля (пример настроек «в общем и целом» я уже описывал в предыдущих статьях), нажимаем Save.

После этого, на главной странице настроек XRay, выбираем в поле TCP Server ваш новый сервер, в поле UDP Server его же — и сохраняем настройки. Готово.

В теории, на этом всё. Как только вы указали TCP Server и UDP Server и сохранили настройки, весь трафик от устройств вашей сети должен будет пойти в интернет через выбранный прокси-сервер.

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

На третьей вкладке настраиваются DNS-сервера и настройки маршрутов:

По умолчанию там в первом поле, отвечающем за DNS для запросов, которые не будут идти на прокси, а будут пропускаться сразу в интернет напрямую, прописан китайский сервер 114.114.114.114 — советую заменить его на какой-нибудь российский близкий к вам DNS (например, провайдерский), или хотя бы на обычные 8.8.8.8 или 1.1.1.1. Secure DNS и Default DNS — это уже сервера, используемые для походов через прокси, с ними по умолчанию все нормально.

Обратите внимание на поля «Bypassed domain rules» и «Forwarded domain rules«. По умолчанию там прописаны условия для Китая (домен «.cn») — удалите их. Дальше, может быть я криворукий и что-то не учел или куда-то не туда ткнул, но у меня сложилось впечатление, что если оставть первое поле пустым или указать там что-то отсутствующее в ваших geoip/geosite базах, то XRay может заглючить и начать пускать весь трафик напрямую вместо прокси. Попробуйте, и если у вас это действительно так, заполните его как-нибудь правдоподобно — например, geoip:private или domain:gosuslugi.ru.

Возможно для forwarded актуально то же самое, у меня в пустым полем работало нормально.

Еще одна ремарка: убедитесь, что у вас на клиентских устройствах в качестве адреса DNS-сервера используется адрес самого роутера — если они получают адрес автоматически по DHCP, то скорее всего так оно и есть. Если на клиентских устройсвах в качестве DNS-сервера указано что-то другое (например, явно прописаны провайдерские или гугловские DNS), то XRay может работать странно.

И наконец, если что-то не работает как надо и не понятно почему, на вкладке XRay можно увеличить уровень логгирования, и включить дополнительные логи. Смотреть логи можно в интерфейсе OpenWrt в «System Log», либо же командой logread. Когда все работает, лучше поставить уровень warning и отключить доп.логи чтобы экономить ресурсы.

На этом всё.

Удачи, и да прибудет с вами сила.

Если вы хотите сказать спасибо автору — сделайте пожертвование в один из благотворительных фондов: «Подари жизнь«, «Дом с маяком«, «Антон тут рядом«.

Attention: Пользователь в Telegram с таким же ником, как у меня — мошенник, не имеющий никакого отношения к автору статьи.

¶¶¶¶¶

¶¶¶¶¶

¶¶¶¶¶

Создайте подобный сайт на WordPress.com
Начало работы