Подключение на MikroTik

В данной инструкции рассматривается работа с MikroTik RouterOS версии v7.18.2 и выше, а также настройка протокола XRay VLESS Reality для подключения к VPN.

circle-info

Материал рассчитан на пользователей со средним уровнем подготовки. Перед применением приведённых настроек настоятельно рекомендуется иметь практический опыт конфигурирования устройств MikroTik.

Для опытных пользователей доступны готовые контейнеры на Docker Hubarrow-up-right, которые можно использовать непосредственно в среде RouterOS. Контейнеры предоставлены для трёх архитектур: ARM, ARM64 и x86.

Преднастройка RouterOS

Создадим отдельную таблицу маршрутизации:

/routing table 
add disabled=no fib name=r_to_vpn

Добавим address-list "to_vpn" что бы находившиеся в нём IP адреса и подсети заворачивать в пока ещё не созданный туннель:

/ip firewall address-list
add address=8.8.8.8 list=to_vpn

Добавим address-list "RFC1918" что бы не потерять доступ до RouterOS при дальнейшей настройке:

/ip firewall address-list
add address=10.0.0.0/8 list=RFC1918
add address=172.16.0.0/12 list=RFC1918
add address=192.168.0.0/16 list=RFC1918

Добавим правила в mangle для address-list "RFC1918" и переместим его в самый верх правил:

Добавим правило транзитного трафика в mangle для address-list "to_vpn":

Добавим правило для транзитного трафика, указывающее использовать таблицу маршрутизации r_to_vpn для поиска маршрута к узлу назначения:

Маршрут по умолчанию в созданную таблицу маршрутизации "r_to_vpn" добавим чуть позже.

circle-exclamation

Сборка контейнера на Windows

Данный пункт настройки подходит только для устройств с архитектурой ARM, ARM64 или x86. Перед запуском контейнера в RouteOS убедитесь, что у вас включены контейнерыarrow-up-right. С полным списком устройств можно ознакомится тутarrow-up-right. Включаем поддержку контейнеров в RouterOSarrow-up-right. Также предполагается, что на устройстве (либо на подключённой по USB флешке) доступно около 50 МБ свободного места для развертывания контейнера в RouterOS, а также не менее 150 МБ оперативной памяти. Если на накопителе недостаточно свободного места, его можно временно расширить за счёт оперативной памятиarrow-up-right. После перезагрузки RouterOS, всё что находится в RAM, стирается.

Где взять контейнер? Его можно собрать самому из текущего репозитория каталога Containersarrow-up-right или скачать готовый образ под выбранную архитектуру из Docker Hubarrow-up-right. Скачав готовый образ, переходим сразу к настройке.

Для самостоятельной сборки следует установить подсистему Docker buildxarrow-up-right, "make" и "go".

В текущем примере будем собирать на Windows:

  1. Скачиваем Docker Desktoparrow-up-right и устанавливаем.

  2. Скачиваем каталог Containersarrow-up-right.

  3. Открываем CMD и переходим в каталог "Containers" (cd <путь до каталога>).

  4. Запускаем Docker с ярлыка на рабочем столе (окно приложения должно просто висеть в фоне при сборке) и через cmd собираем контейнер под выбранную архитектуру RouterOS.

  • ARMv8 (arm64/v8) — спецификация 8-го поколения оборудования ARM, которое поддерживает архитектуры AArch32 и AArch64.

  • ARMv7 (arm/v7) — спецификация 7-го поколения оборудования ARM, которое поддерживает только архитектуру AArch32.

  • AMD64 (amd64) — это 64-битный процессор, который добавляет возможности 64-битных вычислений к архитектуре x86.

Для ARMv8 (Containers\Dockerfile_arm64):

Для ARMv7 (Containers\Dockerfile_arm):

Для amd64 (Containers\Dockerfile_amd64):

Иногда процесс создания образа может подвиснуть из-за плохого соединения с интернетом. Следует повторно запустить сборку. После сборки образа вы можете загрузить контейнер в приватный репозиторий Docker HUB и продолжить настройку по следующему пункту.

Вариант с локальным сохранением контейнера в .tar через docker save тоже может сработать, однако на последней версии Docker в RouterOS могут возникать ошибки при попытке импорта таким способом.

Настройка контейнера в RouterOS

В данном примере на устройстве MikroTik USB-накопитель отсутствует, поэтому всё будет храниться с использованием расширенного хранилища на базе оперативной памятиarrow-up-right. Если у вас есть USB-порт и флешка, рекомендуется размещать контейнер именно на ней. Также возможно комбинированное размещение: образ контейнера можно загрузить во временное хранилище в оперативной памяти, а развернуть сам контейнер — в постоянной файловой системе.

Рекомендуется создать пространство из ОЗУ хотя бы для tmp директории. Размер регулируйте самостоятельно:

circle-exclamation

В RouterOS выполняем:

  1. Подключем Docker HUB в наш RouterOS.

  1. Создадим интерфейс для контейнера.

  1. Добавим правило в mangle для изменения mss для трафика, уходящего в контейнер. Поместите его после правила с RFC1918 (его мы создали ранее).

  1. Назначим на созданный интерфейс IP адрес. IP 172.18.20.6 возьмёт себе контейнер, а 172.18.20.5 будет адрес RouterOS.

  1. В таблице маршрутизации "r_to_vpn" создадим маршрут по умолчанию ведущий на контейнер.

  1. Включаем masquerade для всего трафика, уходящего в контейнер.

  1. Создадим переменные окружения envs под названием "xvr", которые позже при запуске будем передавать в контейнер.

circle-check

Далее предстоит работа с ключом.

Размещаем данные параметры для передачи в контейнер:

  1. Теперь создадим сам контейнер. Здесь вам нужно выбрать репозиторий из Docker Hubarrow-up-right с архитектурой под ваше устройство.

Варианты:

  • catesin/xray-mikrotik-amd64

  • catesin/xray-mikrotik-arm

  • catesin/xray-mikrotik-arm64

Пример импорта контейнера в ramstorage (по факту в оперативную память) для arm64. Подставьте в remote-image нужный репозиторий и отредактируйте местоположение контейнера в root-dir при необходимости.

Подождите, пока контейнер полностью распакуется. В результате вы должны увидеть структуру с распакованным контейнером и окружением envs. Если в процессе импорта возникают ошибки — внимательно изучите журнал логов в RouterOS.

Контейнер будет использовать только локальный DNS сервер на IP адресе 172.18.20.5. Необходимо разрешить DNS запросы TCP/UDP порт 53 на данный IP в правилах RouterOS в разделе /ip firewall filter

  1. Запускаем контейнер через WinBox в разделе меню WinBox "container". В логах MikroTik вы увидите характерные сообщения о запуске контейнера.

Настройка завершена. Можно проверить доступность IP 8.8.8.8 из списка "to_vpn" (этот адрес добавлен ранее).

Last updated