TanodTools
RU

Генератор проброса портов MikroTik

Перечислите порты, которые нужно открыть, и серверы за ними, и получите правила dst-nat для RouterOS v7 с hairpin NAT, чтобы клиенты локальной сети тоже могли обращаться по публичному адресу.

Работает в браузере; введённые вами данные не покидают устройство

Распознавать трафик к
Пробросы
    Параметры
    Необязательно. Оставьте пустым, чтобы принимать соединения откуда угодно.

    Создаёт синтаксис RouterOS v7 (подходит и для v6) для IPv4. Порты и адреса проверяются, но на вашем маршрутизаторе не тестируются. MikroTik и RouterOS являются товарными знаками SIA Mikrotīkls. Этот инструмент независим и не связан с MikroTik и не одобрен компанией.

    Как пробросить порт на маршрутизаторе MikroTik

    1. Выберите, как правило будет распознавать трафик к вашему публичному адресу: по списку интерфейсов WAN, по фиксированному публичному IP или по любому из адресов маршрутизатора.
    2. Добавьте строку для каждой службы: протокол, публичный порт, IP внутреннего сервера и, если он отличается, внутренний порт.
    3. Включите hairpin NAT, если клиенты локальной сети должны обращаться к службе по её публичному адресу, затем скопируйте скрипт или скачайте файл .rsc.

    Как работает проброс портов в RouterOS

    Проброс порта — это правило dst-nat в цепочке dstnat раздела /ip firewall nat. Когда приходит новое соединение, подходящее под правило (протокол, порт назначения и либо интерфейс WAN, либо ваш публичный адрес), RouterOS подменяет адрес назначения на адрес внутреннего сервера и, при необходимости, порт. Отслеживание соединений запоминает трансляцию, поэтому ответы подменяются обратно автоматически; отдельное правило для обратного трафика не нужно.

    Трансляция выполняется до того, как пакет попадает в цепочку forward фильтра. Поэтому стандартное правило forward у MikroTik отбрасывает новые соединения из WAN, только если connection-nat-state=!dstnat: соединение, преобразованное правилом dst-nat, получает пометку dstnat и пропускается, а всё остальное из интернета отбрасывается.

    Hairpin NAT

    Когда компьютер в локальной сети обращается к публичному адресу сервера, который тоже находится в локальной сети, правило dst-nat направляет пакет на сервер, но сервер видит частный адрес клиента и отвечает ему напрямую. Клиент получает ответ от адреса, с которым не связывался, и отбрасывает его. Правило hairpin маскирует трафик из подсети локальной сети к серверу, поэтому сервер отвечает маршрутизатору, а тот переводит ответ обратно. Плата за это: в журналах сервера клиенты локальной сети выглядят как адрес маршрутизатора. Запись split-horizon DNS, которая указывает имя на внутренний адрес, вообще обходится без NAT и нередко оказывается более чистым решением.

    Советы

    Вопросы и ответы

    Почему проброс порта не работает из локальной сети?

    Клиент локальной сети отправляет пакет на ваш публичный IP, маршрутизатор подменяет адрес назначения на адрес сервера, а сервер отвечает клиенту напрямую, потому что оба находятся в одной подсети. Клиент ждал ответ с публичного IP и отбрасывает такой пакет. Hairpin NAT маскирует этот трафик между узлами локальной сети, и ответ возвращается через маршрутизатор. Это работает, только если правило dst-nat привязано к публичному адресу, а не к интерфейсу WAN, потому что пакет приходит на интерфейс LAN.

    Что указывать в правиле: in-interface или dst-address?

    Список интерфейсов WAN проще всего и переживает смену публичного IP, но с ним нельзя сделать hairpin NAT. Правило по dst-address работает с hairpin, но его нужно обновлять при смене IP. Вариант dst-address-type=local срабатывает на любой адрес маршрутизатора, то есть подходит и для динамических IP, и для hairpin; но есть нюанс: эти порты перехватываются и на локальном адресе самого маршрутизатора.

    Нужно ли ещё и правило в firewall filter?

    С конфигурацией MikroTik по умолчанию нет: её цепочка forward отбрасывает новые соединения из WAN, только если они «not DSTNATed», поэтому проброшенные соединения проходят. Если вы написали более строгую цепочку forward, добавьте accept для connection-nat-state=dstnat перед финальным drop.

    Как пробросить диапазон портов?

    Введите диапазон, например 50000-50100, или список, например 80,443, а внутренний порт оставьте пустым. Порты пробрасываются без изменений. Трансляция порта (публичный 8443 во внутренний 443) работает для одиночных портов.

    Безопасно ли пробрасывать RDP, SSH или Winbox?

    Открытые на весь интернет службы удалённого доступа провоцируют попытки подбора пароля. Укажите разрешённые сети-источники, чтобы ограничить проброс известными адресами, или лучше спрячьте службу за VPN, например WireGuard.

    Отправляется ли моя конфигурация куда-либо?

    Нет. Правила создаёт JavaScript на этой странице, и ничего из введённого вами не загружается, не хранится и не записывается в журналы.