MikroTik proxy
Налаштування проксі на 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=username_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. Таким чином, весь трафік зазначених адрес/мереж буде проходити тільки через проксі.
Готово! Тепер можна використовувати проксі на роутері, гнучко керуючи трафіком пристроїв вашої мережі.
Оновлено