НейроАгент

Настройка проброса портов Mikrotik и Let's Encrypt

Полное руководство по настройке проброса портов на Mikrotik для внутреннего сервера Nextcloud и получению SSL-сертификата Let's Encrypt для безопасного доступа из интернета.

Как настроить проброс портов на Mikrotik для внутреннего сервера и получить сертификат Let’s Encrypt для доступа из интернета?

Ситуация:

  1. Статический IP от Ростелекома настроен на роутере, который работает в режиме bridge с Mikrotik
  2. Внутренняя сеть содержит сервер с Nextcloud (все остальные устройства находятся в той же сети)
  3. Доменное имя указывает на статический IP из пункта 1

Задача:
Настроить доступ пользователей из интернета к внутреннему серверу Nextcloud по HTTPS протоколу.

Проблема:
Не получается получить SSL сертификат для внутреннего сервера с помощью встроенных средств Nextcloud.

Текущая ситуация:
Сотрудники могут получить доступ к серверу по http://домен.рф:1234, но не могут подключиться по HTTPS.

Дополнительный вопрос:
Как организовать подобную конфигурацию для нескольких внутренних серверов (например, корпоративный сайт)?

НейроАгент

Чтобы настроить проброс портов на Mikrotik для внутреннего сервера Nextcloud и получить сертификат Let’s Encrypt, необходимо правильно сконфигурировать NAT-правила, создать правило для HTTPS-доступа и настроить автоматическое получение сертификата. При работе в режиме bridge требуется специальная настройка firewall, так как трафик моста не проходит через стандартные цепочки NAT.

Содержание

Настройка Mikrotik в режиме bridge

При работе Mikrotik в режиме bridge с другим роутером (в вашем случае с Ростелекомом) требуется специальная настройка firewall, так как трафик моста не обрабатывается стандартными цепочками NAT. Сначала необходимо включить обработку трафика bridge в IP firewall.

bash
# Включаем обработку трафика моста в firewall
/interface bridge
set [find name=bridge1] use-ip-firewall=yes

Для корректной работы проброса портов в режиме bridge необходимо настроить цепочку dstnat. Согласно документации Mikrotik, при использовании моста нужно явно указать интерфейс назначения.

bash
# Настройка bridge портов
/interface bridge port
add bridge=bridge1 interface=ether1
add bridge=bridge1 interface=ether2  # Порты, к которым подключены устройства
add bridge=bridge1 interface=ether3

Важно проверить, что VLAN-фильтрация отключена, если не требуется работа с VLAN:

bash
/interface bridge
set [find name=bridge1] vlan-filtering=no

Настройка проброса портов для Nextcloud

Для доступа к Nextcloud по HTTPS (порт 443) необходимо создать правило dstnat. В режиме bridge нужно указать как входной интерфейс, так и адрес назначения.

bash
# Создание правила проброса порта 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-адрес сервера Nextcloud
  • dst-port=443 - порт на внешнем интерфейсе
  • to-ports=443 - порт на внутреннем сервере

Для доступа по HTTP (если требуется) добавьте аналогичное правило:

bash
# Проброс порта 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 для доступа, как указано в текущей ситуации:

bash
# Проброс порта 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 на внутренний сервер:

bash
# Полная настройка для 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, который будет принимать трафик и перенаправлять на внутренний сервер:

bash
# Настройка 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: Разные порты

bash
# Корпоративный сайт на порту 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:

bash
# Настройка виртуальных хостов
/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-тегирования:

bash
# Настройка 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 не может проверить домен из-за конфигурации сети.

Решение:

  1. Проверьте, что порты 80 и 443 открыты и проброшены на Mikrotik
  2. Убедитесь, что доменное имя указывает на ваш статический IP
  3. Временно откройте порт 80 на Mikrotik для проверки
  4. Используйте утилиту certbot для ручного получения сертификата

Проблема 2: Доступ по HTTPS не работает

Причина: Неправильная настройка firewall или конфликт с другим оборудованием.

Решение:

bash
# Проверка правил firewall
/ip firewall nat print
/ip firewall filter print

# Временное отключение firewall для теста
/ip firewall filter
set [find chain=input] action=accept

Проблема 3: Трафик не проходит через bridge

Причина: Отключена обработка IP-трафика в bridge.

Решение:

bash
# Включение IP firewall для bridge
/interface bridge
set [find name=bridge1] use-ip-firewall=yes

Проблема 4: Конфликт с Ростелекомом

Причина: Ростелеком блокирует определенные порты.

Решение:

  1. Используйте альтернативные порты (8080, 8443 и т.д.)
  2. Обратитесь в поддержку Ростелекома для открытия необходимых портов
  3. Настройте Mikrotik для работы с проброшенными портами

Важное замечание: При работе в режиме bridge Mikrotik behaves как коммутатор, а не как маршрутизатор. Для корректной работы проброса портов необходимо явно указать интерфейсы и включить обработку IP-трафика в документации Mikrotik.

Заключение

  1. Основные шаги настройки: Включите обработку IP-трафика в bridge, создайте правила dstnat для портов 80 и 443, настройте DNS для доменного имени.

  2. Получение сертификата Let’s Encrypt: Настройте проброс портов 80 и 443 на внутренний сервер, или используйте reverse proxy, или получайте сертификат вручную.

  3. Для нескольких серверов: Используйте разные порты, поддомены или VLAN для разделения доступа к разным внутренним ресурсам.

  4. Рекомендации: Регулярно проверяйте работу проброса портов, обновляйте сертификаты Let’s Encrypt, мониторьте логи firewall для выявления проблем.

  5. Альтернативные решения: Если возникают сложности с bridge режимом, рассмотрите возможность настройки Mikrotik в режиме роутера с двойным NAT, что может упростить конфигурацию проброса портов.

Источники

  1. MikroTik Documentation - Bridging and Switching
  2. MikroTik Wiki - Manual:Interface/Bridge
  3. Bridge NAT Port Forwarding - MikroTik Forum
  4. Use MikroTik Bridge as a Public IP Firewall - Server Fault
  5. Is it OK to set public IP to bridge? - MikroTik Forum
  6. Quick Set - RouterOS - MikroTik Documentation
  7. Bridge - RouterOS - MikroTik Documentation
  8. NAT Port Forwarding — Manito Networks
  9. How to port forward on MikroTik - YouTube
  10. Port Forwarding Step by Step - Mikrotik Tutorial - YouTube
  11. Getting Started: MikroTik Bridge Configuration - YouTube