Как настроить проброс портов на Mikrotik для внутреннего сервера и получить сертификат Let’s Encrypt для доступа из интернета?
Ситуация:
- Статический IP от Ростелекома настроен на роутере, который работает в режиме bridge с Mikrotik
- Внутренняя сеть содержит сервер с Nextcloud (все остальные устройства находятся в той же сети)
- Доменное имя указывает на статический IP из пункта 1
Задача:
Настроить доступ пользователей из интернета к внутреннему серверу Nextcloud по HTTPS протоколу.
Проблема:
Не получается получить SSL сертификат для внутреннего сервера с помощью встроенных средств Nextcloud.
Текущая ситуация:
Сотрудники могут получить доступ к серверу по http://домен.рф:1234, но не могут подключиться по HTTPS.
Дополнительный вопрос:
Как организовать подобную конфигурацию для нескольких внутренних серверов (например, корпоративный сайт)?
Чтобы настроить проброс портов на Mikrotik для внутреннего сервера Nextcloud и получить сертификат Let’s Encrypt, необходимо правильно сконфигурировать NAT-правила, создать правило для HTTPS-доступа и настроить автоматическое получение сертификата. При работе в режиме bridge требуется специальная настройка firewall, так как трафик моста не проходит через стандартные цепочки NAT.
Содержание
- Настройка Mikrotik в режиме bridge
- Настройка проброса портов для Nextcloud
- Получение сертификата Let’s Encrypt
- Конфигурация для нескольких серверов
- Решение типовых проблем
- Заключение
Настройка Mikrotik в режиме bridge
При работе Mikrotik в режиме bridge с другим роутером (в вашем случае с Ростелекомом) требуется специальная настройка firewall, так как трафик моста не обрабатывается стандартными цепочками NAT. Сначала необходимо включить обработку трафика bridge в IP firewall.
# Включаем обработку трафика моста в firewall
/interface bridge
set [find name=bridge1] use-ip-firewall=yes
Для корректной работы проброса портов в режиме bridge необходимо настроить цепочку dstnat. Согласно документации Mikrotik, при использовании моста нужно явно указать интерфейс назначения.
# Настройка bridge портов
/interface bridge port
add bridge=bridge1 interface=ether1
add bridge=bridge1 interface=ether2 # Порты, к которым подключены устройства
add bridge=bridge1 interface=ether3
Важно проверить, что VLAN-фильтрация отключена, если не требуется работа с VLAN:
/interface bridge
set [find name=bridge1] vlan-filtering=no
Настройка проброса портов для Nextcloud
Для доступа к Nextcloud по HTTPS (порт 443) необходимо создать правило dstnat. В режиме bridge нужно указать как входной интерфейс, так и адрес назначения.
# Создание правила проброса порта 443 для HTTPS
/ip firewall nat
add chain=dstnat action=dst-nat dst-port=443 protocol=tcp \
in-interface=ether1 to-addresses=192.168.88.10 to-ports=443 \
comment="Nextcloud HTTPS access"
Где:
in-interface=ether1- интерфейс, получающий трафик от Ростелекомаto-addresses=192.168.88.10- внутренний IP-адрес сервера Nextclouddst-port=443- порт на внешнем интерфейсеto-ports=443- порт на внутреннем сервере
Для доступа по HTTP (если требуется) добавьте аналогичное правило:
# Проброс порта 80 для HTTP
/ip firewall nat
add chain=dstnat action=dst-nat dst-port=80 protocol=tcp \
in-interface=ether1 to-addresses=192.168.88.10 to-ports=80 \
comment="Nextcloud HTTP access"
Если вы используете порт 1234 для доступа, как указано в текущей ситуации:
# Проброс порта 1234 для временного доступа
/ip firewall nat
add chain=dstnat action=dst-nat dst-port=1234 protocol=tcp \
in-interface=ether1 to-addresses=192.168.88.10 to-ports=80 \
comment="Nextcloud temporary access"
Получение сертификата Let’s Encrypt
Проблема с получением сертификата Let’s Encrypt для внутреннего сервера возникает из-за того, что Let’s Encrypt проверяет домен из интернета, а ваш сервер находится в локальной сети. Есть несколько решений:
Вариант 1: Настройка проброса на уровне Mikrotik
Настройте Mikrotik для проброса порта 80 и 443 на внутренний сервер:
# Полная настройка для Let's Encrypt
/ip firewall nat
add chain=dstnat action=dst-nat dst-port=80 protocol=tcp \
in-interface=ether1 to-addresses=192.168.88.10 to-ports=80 \
comment="Let's Encrypt HTTP challenge"
add chain=dstnat action=dst-nat dst-port=443 protocol=tcp \
in-interface=ether1 to-addresses=192.168.88.10 to-ports=443 \
comment="Let's Encrypt HTTPS"
Вариант 2: Использование reverse proxy на Mikrotik
Создайте reverse proxy на Mikrotik, который будет принимать трафик и перенаправлять на внутренний сервер:
# Настройка reverse proxy
/ip firewall nat
add chain=dstnat action=dst-nat dst-port=80 protocol=tcp \
in-interface=ether1 to-addresses=192.168.88.10 to-ports=80 \
comment="Reverse proxy HTTP"
add chain=dstnat action=dst-nat dst-port=443 protocol=tcp \
in-interface=ether1 to-addresses=192.168.88.10 to-ports=443 \
comment="Reverse proxy HTTPS"
Вариант 3: Настройка DNS для валидации
Добавьте PTR-запись для вашего статического IP, чтобы Let’s Encrypt мог проверить доменную принадлежность.
Вариант 4: Ручное получение сертификата
Получите сертификат вручную на другом сервере с доступом в интернет и перенесите его на ваш Nextcloud сервер.
Пример успешной настройки bridge с портфорвардингом из форума Mikrotik:
В режиме bridge можно назначить публичный IP на сам мост:
/ip address add address=92.62.3.13/32 interface=bridgeЭто позволяет настроить проброс портов для серверов в локальной сети.
Конфигурация для нескольких серверов
Для организации доступа к нескольким внутренним серверам (корпоративный сайт, почтовый сервер и т.д.) используйте разные порты или поддомены:
Вариант 1: Разные порты
# Корпоративный сайт на порту 8080
/ip firewall nat
add chain=dstnat action=dst-nat dst-port=8080 protocol=tcp \
in-interface=ether1 to-addresses=192.168.88.20 to-ports=80 \
comment="Corporate website HTTP"
# Почтовый сервер на порту 25
/ip firewall nat
add chain=dstnat action=dst-nat dst-port=25 protocol=tcp \
in-interface=ether1 to-addresses=192.168.88.30 to-ports=25 \
comment="Mail server SMTP"
Вариант 2: Поддомены с использованием reverse proxy
Настройте Mikrotik как reverse proxy с поддержкой SNI:
# Настройка виртуальных хостов
/ip firewall nat
add chain=dstnat action=dst-nat dst-port=443 protocol=tcp \
in-interface=ether1 to-addresses=192.168.88.10 to-ports=443 \
comment="HTTPS for all services"
# Настройка маршрутизации по доменам (требуется дополнительная настройка)
Вариант 3: Использование VLAN
Если серверы находятся в разных VLAN, настройте проброс портов с учетом VLAN-тегирования:
# Настройка VLAN на bridge
/interface bridge
set [find name=bridge1] vlan-filtering=yes
# Добавление VLAN интерфейсов
/interface vlan
add interface=bridge1 name=vlan10 vlan-id=10
add interface=bridge1 name=vlan20 vlan-id=20
# Проброс портов для разных VLAN
/ip firewall nat
add chain=dstnat action=dst-nat dst-port=443 protocol=tcp \
in-interface=vlan10 to-addresses=192.168.10.10 to-ports=443 \
comment="Nextcloud in VLAN 10"
add chain=dstnat action=dst-nat dst-port=443 protocol=tcp \
in-interface=vlan20 to-addresses=192.168.20.10 to-ports=443 \
comment="Corporate site in VLAN 20"
Решение типовых проблем
Проблема 1: Сертификат Let’s Encrypt не получается
Причина: Let’s Encrypt не может проверить домен из-за конфигурации сети.
Решение:
- Проверьте, что порты 80 и 443 открыты и проброшены на Mikrotik
- Убедитесь, что доменное имя указывает на ваш статический IP
- Временно откройте порт 80 на Mikrotik для проверки
- Используйте утилиту
certbotдля ручного получения сертификата
Проблема 2: Доступ по HTTPS не работает
Причина: Неправильная настройка firewall или конфликт с другим оборудованием.
Решение:
# Проверка правил firewall
/ip firewall nat print
/ip firewall filter print
# Временное отключение firewall для теста
/ip firewall filter
set [find chain=input] action=accept
Проблема 3: Трафик не проходит через bridge
Причина: Отключена обработка IP-трафика в bridge.
Решение:
# Включение IP firewall для bridge
/interface bridge
set [find name=bridge1] use-ip-firewall=yes
Проблема 4: Конфликт с Ростелекомом
Причина: Ростелеком блокирует определенные порты.
Решение:
- Используйте альтернативные порты (8080, 8443 и т.д.)
- Обратитесь в поддержку Ростелекома для открытия необходимых портов
- Настройте Mikrotik для работы с проброшенными портами
Важное замечание: При работе в режиме bridge Mikrotik behaves как коммутатор, а не как маршрутизатор. Для корректной работы проброса портов необходимо явно указать интерфейсы и включить обработку IP-трафика в документации Mikrotik.
Заключение
-
Основные шаги настройки: Включите обработку IP-трафика в bridge, создайте правила dstnat для портов 80 и 443, настройте DNS для доменного имени.
-
Получение сертификата Let’s Encrypt: Настройте проброс портов 80 и 443 на внутренний сервер, или используйте reverse proxy, или получайте сертификат вручную.
-
Для нескольких серверов: Используйте разные порты, поддомены или VLAN для разделения доступа к разным внутренним ресурсам.
-
Рекомендации: Регулярно проверяйте работу проброса портов, обновляйте сертификаты Let’s Encrypt, мониторьте логи firewall для выявления проблем.
-
Альтернативные решения: Если возникают сложности с bridge режимом, рассмотрите возможность настройки Mikrotik в режиме роутера с двойным NAT, что может упростить конфигурацию проброса портов.
Источники
- MikroTik Documentation - Bridging and Switching
- MikroTik Wiki - Manual:Interface/Bridge
- Bridge NAT Port Forwarding - MikroTik Forum
- Use MikroTik Bridge as a Public IP Firewall - Server Fault
- Is it OK to set public IP to bridge? - MikroTik Forum
- Quick Set - RouterOS - MikroTik Documentation
- Bridge - RouterOS - MikroTik Documentation
- NAT Port Forwarding — Manito Networks
- How to port forward on MikroTik - YouTube
- Port Forwarding Step by Step - Mikrotik Tutorial - YouTube
- Getting Started: MikroTik Bridge Configuration - YouTube