MikroTik прокси
Настройка прокси на MikroTik
Системные требования
Для использования прокси на маршрутизаторах MikroTik следует учитывать следующие требования к оборудованию:
1) RouterOS как минимум 7 версии, так как потребуется поддержка контейнеризации
2) Модели роутеров имеющие свыше >128 MB ОЗУ
3) Роутер должен иметь архитектуру процессоров arm64, arm или x86, так как виртуализация поддерживается только на данных архитектурах. Подробнее об этом можно узнать по ссылке:
https://help.mikrotik.com/docs/spaces/ROS/pages/84901929/Container
Подойдут примерно такие роутеры, доступные сейчас на рынке - hAP ax2, hAP ax3, Chateau PRO ax, RB5009,L009UiGS
Предостережение:
Для включения поддержки контейнеров требуется физический доступ к устройству RouterOS - по умолчанию эта функция отключена.
- После включения контейнеры можно добавлять/настраивать/запускать/останавливать/удалять удалённо!
- Если ваше устройство RouterOS будет скомпрометировано, контейнеры могут быть использованы для лёгкой установки вредоносного ПО на устройство и в сеть.
- Устройство RouterOS настолько безопасно, насколько безопасно то, что вы запускаете в контейнере.
- Используя контейнеры, вы не получаете никаких гарантий безопасности.
- Запуск стороннего образа контейнера на устройстве RouterOS может открыть брешь/вектор атаки/поверхность атаки.
- Эксперт, знающий, как строить эксплойты, сможет выполнить джейлбрейк/повышение привилегий до root.
https://help.mikrotik.com/docs/spaces/ROS/pages/84901929/Container#Container-Disclaimer
Подготовка роутера
- Установка требуемого пакета
Откройте консоль и введите следующие команды для установки канала обновления
/system package update set channel=stableЗатем выгрузите список пакетов
/system package update check-for-updatesВключите пакет "container" и перезагрузите роутер
/system/package enable container
Или вручную установите пакет 'Container' через Winbox, предварительно загрузив "Extra packages" для вашей версии ROS и архитектуры с сайта MikroTik (https://mikrotik.com/download)
.png?sha=79ea6c0eee34581e86820227a7538d084a74d366)
Откройте скаченный архив, скопируйте пакет в File List и перезагрузите устройство
.png?sha=8e4563e12804b497f7787660bb2f8d96ff42f4ff)
После перезагрузки у вас должен появится пакет "Container"
- Включение поддержки контейнеризации
Для активации контейнеризации на маршрутизаторе, в терминале необходимо ввести команду:
/system/device-mode/update container=yesЗатем произведите перезагрузку роутера в течении 5 минут и после перезагрузки у вас станет доступно создание контейнеров .png?sha=d91e08773a704f66853188ccd0fd44a68b7a3ef9)
Также проверить можно через консоль:
/system/device-mode/print"Сontainer" должен быть "yes"
Установка и настройка контейнера
Создание VETH интерфейса
Создайте виртуальный интерфейс для будущего контейнера:
/interface veth add address=10.0.201.2/24 dhcp=no gateway=10.0.201.1 gateway6="" mac-address=6D:F3:B2:85:44:45 name=veth1Где:
address - адрес, который вы желаете присвоить контейнеру
gateway - адрес вашего бриджа (основного шлюза сети)
Просмотр адреса bridge
Для наглядности мы будем делать все действия во внутренней сети, без разделении сети контейнера от домашней сети.
- Добавление интерфейса на действующий бридж
Добавьте созданный интерфейс в бридж
/interface bridge port add bridge=bridge1 interface=veth1- Настройка виртуализации и добавления контейнера
В данном примере мы будем использовать докер образ от wiktorbgu основанный на hev-socks5-tunnel
Ссылка на Docker-образ
Создадим переменные для контейнера
Для контейнера требуется создать переменные, включающие параметры подключения к прокси. Для этого в консоли MikroTik добавьте следующие переменные:
/container envs
add key=SOCKS5_ADDR list=proxy1 value=ip/domain_proxy
add key=SOCKS5_INTERFACE list=proxy1 value=xray_eth
add key=SOCKS5_PASSWORD list=proxy1 value=password_proxy
add key=SOCKS5_PORT list=proxy1 value=port_proxy
add key=SOCKS5_UDP_MODE list=proxy1 value=udp
add key=SOCKS5_USERNAME list=proxy1 value=pasword_proxyДанные поля требуется заполнить в зависимости от данных приобретенного заказа
С примером настройки прокси вы можете ознакомиться в разделе Инструкция по настройке
Обратите внимание, тестовое подключение производится через SOCKS5! Для того чтобы узнать порт подключения SOCKS, требуется нажать Show socks5 внутри заказа
Добавление контейнера
Добавьте registry-url и временную папку для загрузки образов
/container config
set registry-url=https://registry-1.docker.io tmpdir=/tmpЗатем создайте контейнер с указанием "work dir", "interface" и других параметров
/container
add check-certificate=no envlists=proxy1 interface=veth1 name=hev-socks5-tunnel-mikrotikS1 remote-image=wiktorbgu/hev-socks5-tunnel-mikrotik root-dir=hev-datas1 workdir=/ start-on-boot=yesЗапустите контейнер
/container/start hev-socks5-tunnel-mikrotikS1.png?sha=e14351169b376b6d1017c3fa855ae1e63b2a48b2)
На данном этапе стоит проверить еще связь с контейнером
ping 10.0.201.2Настройка кастомной маршрутизации
- Добавление маршрутов
Для того, чтобы настроить точёную маршрутизацию отдельных устройств сети или трафика на определенные ресурсы, требуется создать отдельный FIB
/routing/table/add name=proxy_s1 fibДобавить маршрут по умолчанию на контейнер, для будущих правил
/ip route
add disabled=no dst-address=0.0.0.0/0 gateway=10.0.201.2 routing-table=
proxy_s1 suppress-hw-offload=yes- Добавление правил для перенаправление трафика под определенные ресурсы
Для добавление перенаправления трафика на интересующий ресурс через прокси требуется создать статический список адресов в "ip/firewall/address list"
Допустим мы хоти открывать сайт example.com через прокси, создайте список с произвольным именем и укажите ip адрес ресурса или его домен
/ip firewall address-list
add address=example.com list=proxyДалее создайте правило в Mangle помечающий весь трафик до указанного ресурса и в "Action" укажите новый путь маршрута, который ранее был создан в предыдущем этапе.
/ip firewall mangle
add action=mark-routing chain=prerouting dst-address-list=proxy new-routing-mark=proxy_s1 passthrough=noПо такой аналогии можно добавить другие ресурсы, например Youtube:
Стоит отметить, что не все ресурсы могут в полном количестве опросить все адреса через домен, как на примере с example.com, потому требуется указывать полный список статических IPv4 как на примере с Yotube. В противном случае часть трафика сайта/ресурса проходить через прокси не будут или могут работать некорректно, для других ресурсов список статических адресов вы можете поискать в интернете.
- Добавление правил для перенаправление всего трафика устройств или сети
Для перенаправления определенных устройств или всей сети требуется создать правило в Mangle, с четким указанием источника.
Допустим, в сети есть устройство с адресом 10.0.201.244, мы желаем, чтоб его трафик проходил через прокси, то требуется создать следующее правило:
/ip firewall mangle
add action=mark-routing chain=prerouting src-address=10.0.201.244 new-routing-mark=proxy_s1 passthrough=noВ качестве src-address можно указывать как всю подсеть так и отдельные хосты, например src-address=192.168.0.0/24. Таким образом весь трафик указанных адресов/сетей будет проходить только через прокси.
Готово! Теперь вы можете использовать прокси на роутере, гибко управляя трафиком устройств вашей сети.
Обновлено