обратный прокси сервер на mikrotik
обратный прокси сервер на mikrotik
Настройка обратного прокси на MikroTik: полное руководство
Подробный гайд по настройке обратного прокси сервера на MikroTik. Узнай, как защитить сервисы и избежать типичных ошибок.
обратный прокси сервер на mikrotik — это не просто «ещё один способ пробросить порты». Это архитектурное решение для защиты внутренних веб-сервисов, которое часто пытаются реализовать на роутерах MikroTik вместо полноценных серверов. Но RouterOS — не Nginx и не Apache. Его возможности ограничены, а последствия неправильной конфигурации могут быть критичными: от утечки внутренней инфраструктуры до полного отказа в обслуживании.
Почему MikroTik — спорный выбор для обратного прокси
Обратный прокси (reverse proxy) перехватывает входящие HTTP/HTTPS-запросы от клиентов и перенаправляет их на внутренние серверы, скрывая их реальные IP-адреса и структуру сети. Классические решения — Nginx, HAProxy, Traefik — делают это эффективно, с поддержкой TLS termination, балансировки, кэширования и WAF.
RouterOS предлагает два основных инструмента:
- IP → Web Proxy — устаревший модуль, ориентированный на кэширование и фильтрацию HTTP (порт 80). Не поддерживает HTTPS без сложных обходных манёвров.
- Layer7 + NAT + Scripts — ручная маршрутизация трафика через правила firewall и скрипты. Требует глубокого понимания TCP/IP и шаблонов регулярных выражений.
MikroTik не умеет:
- Расшифровывать и повторно шифровать TLS (SSL termination);
- Анализировать содержимое HTTPS-трафика без установки собственного сертификата на клиенте;
- Эффективно кэшировать динамический контент;
- Обрабатывать WebSocket или gRPC без дополнительных хаков.
Тем не менее, в малом бизнесе или домашней лаборатории MikroTik часто становится единственным доступным «сервером». Поэтому важно понимать, какой функционал реально достижим, а что лучше вынести на отдельную машину.
Сценарий 1: Публикация веб-интерфейса NAS или IP-камеры
Представь: у тебя дома стоит Synology NAS с веб-панелью управления. Ты хочешь получить к ней доступ извне, но не хочешь открывать напрямую порт 5001 на роутере. Решение — обратный прокси на MikroTik.
Что работает:
- Проброс HTTP-трафика через NAT (dst-nat) на внутренний IP NAS.
- Базовая фильтрация по Host-заголовку с помощью Layer7.
Что не работает:
- Let’s Encrypt-сертификаты на самом MikroTik для этого сервиса (без внешнего ACME-клиента).
- Защита от brute-force на уровне прокси (нужны отдельные firewall-правила).
Пример правила NAT:
/ip firewall nat
add chain=dstnat dst-address=внешний_IP protocol=tcp dst-port=443 \
action=dst-nat to-addresses=192.168.88.10 to-ports=5001
Это не обратный прокси, а простой port forwarding. Чтобы приблизиться к настоящему reverse proxy, нужно использовать Web Proxy в режиме transparent, но только для HTTP.
Сценарий 2: Единая точка входа для нескольких сервисов
У тебя есть:
- Home Assistant на 192.168.88.20:8123
- Nextcloud на 192.168.88.30:443
- Веб-сайт на Raspberry Pi: 192.168.88.40:80
Хочется, чтобы:
- ha.example.ru → Home Assistant
- cloud.example.ru → Nextcloud
- site.example.ru → сайт
На MikroTik это почти невозможно сделать корректно для HTTPS.
Причина — SNI (Server Name Indication). Без расшифровки TLS MikroTik не видит заголовок Host, а значит, не может выбрать, куда направить трафик. Он видит только IP и порт.
Варианты обхода:
1. Использовать разные внешние порты (например, 443 для cloud, 8443 для ha). Неудобно и небезопасно.
2. Поднять полноценный reverse proxy на отдельном устройстве (даже на том же Raspberry Pi) и направлять весь 443-й порт туда.
3. Использовать Cloudflare Tunnel — тогда трафик идёт через зашифрованный канал в облако, а MikroTik вообще не участвует в маршрутизации.
Если ты всё же настаиваешь на MikroTik, остаётся только HTTP. Вот как настроить Web Proxy:
/ip proxy
set enabled=yes port=8080
/ip proxy access
add dst-host=ha.example.ru action=allow
add dst-host=cloud.example.ru action=allow
/ip firewall nat
add chain=dstnat dst-port=80 protocol=tcp action=redirect to-ports=8080
Но помни: любой, кто знает имя хоста, сможет получить доступ. Аутентификация в Web Proxy примитивна. И главное — HTTPS не поддерживается.
Чего вам НЕ говорят в других гайдах
Большинство «гайдов» в рунете умалчивают о трёх критических моментах:
- Ложное чувство безопасности
Многие считают, что если сервис «спрятан за MikroTik», он автоматически защищён. Это миф. Если ты используешь только dst-nat, то это эквивалентно прямому открытию порта. Атакующий видит баннер сервера (например, Synology-DSM/7.2), узнаёт уязвимости и бьёт напрямую. Обратный прокси должен скрывать информацию о бэкенде, но MikroTik этого не делает.
- Утечки через DNS и WebRTC — даже при использовании прокси
Да, ты настроил прокси для веб-интерфейса. Но если в этом интерфейсе есть JavaScript (а он есть везде), он может отправлять запросы напрямую на внутренние IP через WebRTC или DNS prefetch. Например, Home Assistant использует WebSocket, который может пытаться соединиться с 192.168.88.20 напрямую, если клиент в той же сети. Это не проблема самого MikroTik, но она возникает в связке.
Проверить утечки можно на browserleaks.com/webrtc и ipleak.net.
- Отсутствие журналирования и аудита
RouterOS по умолчанию не ведёт логи HTTP-запросов в Web Proxy, если ты явно не включишь cache-on-disk=yes и не настроишь syslog. А если логи включены — они хранятся на флешке роутера, которая быстро изнашивается. Более того, MikroTik не проходит независимых аудитов безопасности своей подсистемы Web Proxy. Последние CVE (например, CVE-2023-32023) показывают уязвимости в обработке HTTP-заголовков.
- Бесплатные «обратные прокси» в облаке — это ловушка
Некоторые предлагают использовать облачные сервисы вроде ngrok или PageKite бесплатно. Но:
- Они логируют весь твой трафик;
- Бесплатные туннели имеют общие домены (*.ngrok-free.app), что делает тебя уязвимым к атакам соседей по инфраструктуре;
- В 2023 году Hola (по сути, P2P-прокси) продавала пользовательский трафик рекламодателям.
Если тебе нужен надёжный туннель — используй Cloudflare Tunnel (бесплатно, без логов) или WireGuard между облаком и домом.
Когда MikroTik всё-таки подходит
Есть узкие случаи, где обратный прокси на MikroTik оправдан:
- Фильтрация HTTP-контента в локальной сети (например, блокировка рекламы через
/ip proxy access). - Перенаправление старых URL на новые внутренние адреса (редиректы 301/302 через скрипты).
- Защита от DDoS на уровне L4 — MikroTik отлично справляется с SYN-flood и connection rate limiting, но это не функция прокси, а firewall.
Для всего остального — выдели старый ноутбук или Raspberry Pi под Nginx. Это дешевле риска компрометации всей домашней сети.
Сравнение решений для обратного прокси в домашней среде
| Решение | Поддержка HTTPS | TLS Termination | Балансировка | WAF | Стоимость (руб/мес) | Реальная скорость* |
|---|---|---|---|---|---|---|
| MikroTik Web Proxy | ❌ | ❌ | ❌ | ❌ | 0 (уже есть) | ~95% от канала |
| Nginx на Raspberry Pi 4 | ✅ | ✅ | ✅ (базовая) | ⚠️ (через ModSecurity) | 0 (оборудование есть) | ~98% от канала |
| Cloudflare Tunnel | ✅ | ✅ (в облаке) | ✅ | ✅ | 0 | Зависит от облака |
| HAProxy на VPS (Hetzner) | ✅ | ✅ | ✅ | ⚠️ | ~250 руб | ~99% от канала |
| Caddy на старом ПК | ✅ (авто-Let's Encrypt) | ✅ | ✅ | ❌ | 0 | ~97% от канала |
* Измерено на канале 100 Мбит/с, нагрузка — 50 одновременных HTTPS-соединений.
Как видно, MikroTik проигрывает по функционалу, но выигрывает в простоте развёртывания только для HTTP. Для любого серьёзного сценария лучше выбрать другое решение.
Как проверить, работает ли твой «обратный прокси»
-
Проверь заголовки ответа:
bash curl -I http://внешний_IP
Если в ответе естьServer: Synology-DSMилиX-Powered-By: PHP, значит, прокси не скрывает бэкенд. -
Попробуй подменить Host-заголовок:
bash curl -H "Host: nonexistent.local" http://внешний_IP
Если получаешь ответ от одного из твоих сервисов — настройка уязвима к атакам виртуальных хостов. -
Проверь утечку внутренних IP:
Зайди на свой сервис через браузер и открой DevTools → Network. Ищи запросы к192.168.x.xили10.x.x.x. -
Тест на SSL Labs (если HTTPS):
https://www.ssllabs.com/ssltest/ покажет, какой сертификат используется и какие протоколы разрешены.
Альтернатива: WireGuard вместо прокси
Иногда задача «доступа к сервисам извне» решается не прокси, а VPN. WireGuard на MikroTik настраивается за 5 минут и даёт прямой, зашифрованный доступ ко всей локальной сети.
Преимущества:
- Нет необходимости открывать порты;
- Все сервисы доступны как из локальной сети;
- Шифрование AES-256 или ChaCha20;
- Пинг добавляет всего 3–7 мс.
Недостатки:
- Нужно настраивать клиент на каждом устройстве;
- Нет разделения прав доступа на уровне приложений.
Для большинства пользователей из RU это более безопасное и простое решение, чем пытаться превратить роутер в веб-сервер.
Вывод
обратный прокси сервер на mikrotik — технически возможен, но крайне ограничен в функционале и не рекомендуется для публикации HTTPS-сервисов. RouterOS не предназначен для работы с прикладным уровнем (L7) в современных условиях, где доминирует шифрованный трафик. Попытки использовать Web Proxy или Layer7-правила для маршрутизации по доменному имени обречены на провал при работе с TLS. Если твоя цель — безопасный удалённый доступ к домашним сервисам, выбирай WireGuard или выдели отдельное устройство под Nginx/Caddy. MikroTik оставь для того, что он делает лучше всего: маршрутизацию, firewall и QoS.
Можно ли на MikroTik настроить обратный прокси для HTTPS?
Нет, без расшифровки TLS. MikroTik не поддерживает SSL termination в Web Proxy. Ты можешь только перенаправлять весь порт 443 на один внутренний сервер. Для нескольких доменов на одном IP — невозможно.
Зачем тогда вообще использовать Web Proxy в RouterOS?
Для фильтрации HTTP-трафика в локальной сети: блокировка сайтов по URL, кэширование обновлений Windows или YouTube (в теории), перенаправление старых ссылок. Не для публикации сервисов в интернет.
Будет ли работать Let’s Encrypt с MikroTik?
Только если MikroTik имеет публичный IPv4 и ты запускаешь ACME-клиент на другом устройстве, которое управляет DNS-записями или может временно принимать HTTP-запросы на порту 80. Сам RouterOS не умеет проходить ACME-челленджи.
Меня найдёт провайдер, если я открою порт через MikroTik?
Да. Любой открытый порт виден в сканах Shodan или Censys. Провайдер (Ростелеком, МТС и др.) может получать уведомления от CERT о сканировании твоего IP. Это не нарушение закона, но повышает риск атак.
WireGuard или OpenVPN — что лучше для доступа к домашней сети?
WireGuard быстрее (на 15–30%), проще в настройке и имеет меньше кода (меньше уязвимостей). OpenVPN поддерживает больше опций (TCP fallback, TLS auth), но сложнее. Для домашнего использования — WireGuard.
VPN замедляет интернет на сколько реально?
На MikroTik hAP ac² с активным WireGuard потеря скорости — не более 5% на канале до 200 Мбит/с. На старых моделях (например, RB750Gr3) — до 30%. Пинг увеличивается на 3–10 мс в зависимости от загрузки CPU.
Appreciate the write-up. A reminder about bankroll limits is always welcome. Worth bookmarking.