Другое

Настройка маршрутизации MikroTik для SSTP и веб-сервера

Решение проблемы одновременной работы SSTP VPN и веб-сервера на MikroTik. Настройка маркировки пакетов, NAT и обратной маршрутизации для порта 443.

Как настроить маршрутизацию маркированных пакетов для одновременной работы SSTP и веб‑сервера на MikroTik?

У меня настроен SSTP‑сервер на MikroTik на порту 443, и я пытаюсь добавить веб‑сервер внутри сети (192.168.1.15) на том же порту. Я создал правила маркировки пакетов:

add action=mark-connection chain=prerouting comment="Web server rule 0" content=web.mydomain.com disabled=no new-connection-mark=WebServer
add action=mark-routing chain=prerouting comment="Web server rule 1" connection-mark=WebServer disabled=no new-routing-mark=WebServerRoute passthrough=no

Маркировка работает – я вижу соединения с Connection Mark – WebServer. Однако при попытке направить трафик на внутренний веб‑сервер через таблицу маршрутизации или правило NAT пакеты не доходят до сервера:

add comment=" access to WebServer" disabled=no distance=3 dst-address=0.0.0.0/0 gateway=192.168.1.15 routing-table=WebServerRoute scope=30 suppress-hw-offload=no target-scope=10

или

add action=dst-nat chain=dstnat comment="Apache2 server" connection-mark=WebServer dst-port=443 protocol=tcp to-addresses=192.168.1.15 to-ports=443

Статистика показывает, что пакеты доходят до правила Mangle, но не до правила NAT. При этом tcpdump на сервере показывает, что запросы доходят, но ответы не уходят обратно. Возможно, проблема с обратным маршрутом. Как правильно настроить маршрутизацию и NAT для работы обоих сервисов на MikroTik?

Основная проблема заключается в неправильном порядке правил и отсутствии обратной маршрутизации для ответных пакетов. Для одновременной работы SSTP и веб‑сервера на MikroTik нужно использовать правильную последовательность правил маркировки и NAT, а также настроить обратную маршрутизацию.

Содержание


Основные проблемы конфигурации

Как видно из вашего описания, основная проблема заключается в том, что пакеты доходят до правил маркировки, но не достигают правил NAT. Это типичная ситуация, возникающая из‑за неверного порядка обработки правил в MikroTik.

Согласно документации MikroTik, NAT обрабатывается до маршрутизации, что означает, что правила dst‑nat должны быть установлены до того, как маршрутизация начнет обрабатывать пакеты. Если вы используете passthrough=no в правилах маркировки маршрутизации, это может блокировать дальнейшую обработку пакетов.


Правильная последовательность правил

Критически важно соблюдать правильную последовательность правил в MikroTik:

  1. Правила Mangle (маркировка) – должны быть первыми
  2. Правила dst‑nat (NAT) – должны следовать за Mangle
  3. Правила маршрутизации – обрабатываются после NAT
  4. Правила src‑nat (маскарад) – для обратного трафика

Внимание: Если вы используете passthrough=no в правилах маркировки маршрутизации, последующие правила (включая NAT) не будут обработаны для этого соединения.


Настройка маркировки пакетов

Используйте следующий подход для правильной маркировки:

bash
# Правило для маркировки соединений на основе домена
/ip firewall mangle add chain=prerouting action=mark-connection \
    comment="Web server connection mark" \
    content="web.mydomain.com" \
    new-connection-mark=WebServer

# Правило для маркировки маршрутизации с passthrough=yes
/ip firewall mangle add chain=prerouting action=mark-routing \
    comment="Web server routing mark" \
    connection-mark=WebServer \
    new-routing-mark=WebServerRoute \
    passthrough=yes

Ключевое отличие – использование passthrough=yes, которое позволяет пакетам продолжать обработку через следующие правила.


Конфигурация NAT для веб‑сервера

Правила dst‑nat должны быть настроены после правил маркировки, но до маршрутизации:

bash
# Правило NAT для веб‑сервера
/ip firewall nat add chain=dstnat action=dst-nat \
    comment="Apache2 server" \
    connection-mark=WebServer \
    dst-port=443 protocol=tcp \
    to-addresses=192.168.1.15 to-ports=443

# Правило обработки SSTP VPN (без маркировки для других трафика)
/ip firewall nat add chain=dstnat action=dst-nat \
    comment="SSTP VPN server" \
    dst-port=443 protocol=tcp \
    to-addresses=192.168.1.1 to-ports=443

Важно: Правила NAT обрабатываются в порядке их следования, поэтому SSTP правило должно быть после веб‑сервера, если вы хотите приоритезировать веб‑сервер для домена web.mydomain.com.


Настройка обратной маршрутизации

Проблема с обратными пакетами решается правильной настройкой маскарада и маршрутизации:

bash
# Таблица маршрутизации для веб‑сервера
/ip route add route=192.168.1.15/32 gateway=192.168.1.15 \
    routing-table=WebServerRoute

# Правило маскарада для обратного трафика
/ip firewall nat add chain=srcnat action=masquerade \
    comment="Masquerade for WebServer traffic" \
    routing-mark=WebServerRoute

Это обеспечит правильную обработку ответных пакетов от веб‑сервера обратно в интернет.


Альтернативные подходы

Использование tls-host опции

Если вы используете MikroTik версии 6.43+, можно использовать опцию tls‑host для разделения трафика:

bash
# SSTP с указанием домена
/interface sstp-server server add enabled=yes name=vpn \
    authentication=mschap2,mchap2 \
    certificate=server-certificate \
    tls-host=vpn.mydomain.com

Использование нескольких IP‑адресов

Как обсуждается в форуме MikroTik, идеальным решением является использование разных публичных IP‑адресов для разных сервисов:

bash
# Пример конфигурации для разных IP
/ip address add address=203.0.113.10/24 interface=ether1-WAN1
/ip address add address=203.0.113.11/24 interface=ether1-WAN2

# NAT для веб‑сервера на первом IP
/ip firewall nat add chain=dstnat action=dst-nat \
    dst-address=203.0.113.10 dst-port=443 \
    to-addresses=192.168.1.15 to-ports=443

# SSTP на втором IP
/ip firewall nat add chain=dstnat action=dst-nat \
    dst-address=203.0.113.11 dst-port=443 \
    to-addresses=192.168.1.1 to-ports=443

Полный пример конфигурации

Вот полный пример рабочей конфигурации для решения вашей задачи:

bash
# Создание таблицы маршрутизации
/ip route add route=192.168.1.15/32 gateway=192.168.1.15 \
    routing-table=WebServerRoute

# Правила маркировки
/ip firewall mangle add chain=prerouting action=mark-connection \
    content="web.mydomain.com" new-connection-mark=WebServer
/ip firewall mangle add chain=prerouting action=mark-routing \
    connection-mark=WebServer new-routing-mark=WebServerRoute \
    passthrough=yes

# Правила NAT (в правильном порядке!)
/ip firewall nat add chain=dstnat action=dst-nat \
    connection-mark=WebServer dst-port=443 protocol=tcp \
    to-addresses=192.168.1.15 to-ports=443 comment="Web server NAT"
/ip firewall nat add chain=dstnat action=dst-nat \
    dst-port=443 protocol=tcp \
    to-addresses=192.168.1.1 to-ports=443 comment="SSTP VPN NAT"

# Правило маскарада для обратного трафика
/ip firewall nat add chain=srcnat action=masquerade \
    routing-mark=WebServerRoute comment="WebServer masquerade"

# Правила маршрутизации для ответного трафика
/ip route add route=0.0.0.0/0 gateway=192.168.1.1 \
    routing-table=WebServerRoute

Источники

  1. MikroTik NAT Documentation
  2. SSTP and HTTPS coexistence - MikroTik Forum
  3. Firewall Marking - RouterOS Documentation
  4. Connection mark and routing relationships - MikroTik Forum
  5. Multi-IP WAN Gateway configuration

Заключение

Для успешной одновременной работы SSTP и веб‑сервера на MikroTik необходимо:

  1. Использовать правильную последовательность правил: Mangle → dst‑nat → маршрутизация
  2. Применять passthrough=yes в правилах маркировки маршрутизации
  3. Настроить обратную маршрутизацию с правилами маскарада
  4. Рассмотреть альтернативные подходы: tls‑host опцию или разные публичные IP

Если проблема сохраняется, проверьте логи с помощью /log print для отслеживания обработки пакетов и убедитесь, что правила не блокируют друг друга.

Авторы
Проверено модерацией
Модерация