mikrotik-wiki.ru
Главная
Загрузка...

UPnP на MikroTik — автоматический проброс портов

RouterOS 7.xIP7 мин30 мар. 2026 г.
TelegramVK

UPnP (Universal Plug and Play) — протокол, позволяющий приложениям на устройствах в локальной сети автоматически запрашивать у маршрутизатора проброс портов. Без UPnP каждый порт нужно пробрасывать вручную через правила NAT в firewall. С UPnP — игровая консоль, VoIP-телефон или торрент-клиент сами открывают нужные порты на роутере, без участия администратора. Это удобно, но создаёт серьёзные риски безопасности: любое приложение в сети может без ведома администратора открыть произвольный порт наружу.

В RouterOS 7 UPnP поддерживается через меню /ip/upnp. Протокол реализует спецификацию IGD (Internet Gateway Device), которую понимают Windows, macOS, PlayStation, Xbox, большинство VoIP-клиентов и торрент-программ.

Описание

Как работает UPnP

Когда UPnP включён на роутере, происходит следующее:

  1. Устройство в LAN отправляет SSDP-запрос (Simple Service Discovery Protocol) через multicast на адрес 239.255.255.250:1900
  2. Роутер отвечает, сообщая свой IP и URL для управления (control URL)
  3. Приложение на устройстве отправляет SOAP-запрос на control URL с просьбой создать port mapping
  4. Роутер создаёт динамическое правило NAT (dst-nat), перенаправляющее указанный внешний порт на внутренний IP и порт устройства
  5. Когда приложение завершает работу (или по таймауту), маппинг удаляется

Весь процесс прозрачен для пользователя. Именно поэтому UPnP так популярен в домашних сетях — пользователю не нужно разбираться в настройках NAT.

Где нужен UPnP

СценарийПочему нужен UPnPАльтернатива
Игровые консоли (PS5, Xbox Series)NAT Type Open для мультиплеераРучной проброс портов
Торрент-клиентыВходящие соединения от пировПроброс одного порта (6881)
VoIP / SIP-телефоныRTP-потоки через случайные портыSTUN/TURN сервер
Онлайн-игры на ПКMatchmaking, voice chatРучной проброс
Умный домКамеры, IoT-устройстваCloud relay (без UPnP)

NAT Type и игровые консоли

Игровые консоли (PlayStation, Xbox) классифицируют NAT по типам:

  • NAT Type 1 (Open) — консоль имеет публичный IP (DMZ или прямое подключение)
  • NAT Type 2 (Moderate) — UPnP или ручной проброс работает корректно
  • NAT Type 3 (Strict) — порты не проброшены, мультиплеер ограничен

Для комфортной игры нужен NAT Type 2 или лучше. UPnP — самый простой способ добиться NAT Type 2 без ручной настройки десятков портов, которые используют консоли.

Безопасность: почему UPnP — это дыра в firewall

UPnP не имеет механизма аутентификации. Любое приложение в вашей локальной сети может:

  • Открыть произвольный порт на роутере наружу
  • Перенаправить трафик с внешнего порта на любое устройство в LAN
  • Сделать это без уведомления администратора

Реальные угрозы:

  • Malware — вредоносное ПО на заражённом компьютере открывает порт для управления извне (C2 канал)
  • Утечка данных — троян открывает порт для прямого доступа к файлам
  • Атака на IoT — уязвимый IoT-девайс через UPnP открывает себя в интернет

Именно через UPnP работали ботнеты Mirai, Hajime и другие атаки на IoT-устройства.

Настройка

Предварительные требования

  • RouterOS 7.20+
  • Настроенный NAT (masquerade или src-nat для выхода в интернет)
  • Настроенный firewall (базовые правила фильтрации)

Шаг 1: Включение UPnP

[admin@MikroTik] >
/ip/upnp set enabled=yes allow-disable-external-interface=no

Параметр allow-disable-external-interface=no запрещает UPnP-клиентам отключать внешний интерфейс — оставьте его в no для безопасности.

Шаг 2: Добавление интерфейсов

UPnP должен знать, какой интерфейс внешний (WAN), а какой внутренний (LAN). Необходимо добавить оба:

[admin@MikroTik] >
# Внешний интерфейс (WAN)
/ip/upnp/interfaces add interface=ether1 type=external

# Внутренний интерфейс (LAN)
/ip/upnp/interfaces add interface=bridge1 type=internal

Если у вас несколько LAN-сегментов (например, VLAN для игровых устройств), добавьте каждый как internal:

[admin@MikroTik] >
/ip/upnp/interfaces add interface=vlan-gaming type=internal
/ip/upnp/interfaces add interface=vlan-home type=internal

Шаг 3: Проверка конфигурации

[admin@MikroTik] >
/ip/upnp print

Ожидаемый вывод:

code
          enabled: yes
allow-disable-external-interface: no
           show-dummy-rule: yes
[admin@MikroTik] >
/ip/upnp/interfaces print

Ожидаемый вывод:

code
Flags: X - disabled
#   INTERFACE  TYPE
0   ether1     external
1   bridge1    internal

Полная конфигурация одной командой

Для быстрого развёртывания — все команды одним блоком:

[admin@MikroTik] >
/ip/upnp set enabled=yes allow-disable-external-interface=no
/ip/upnp/interfaces add interface=ether1 type=external
/ip/upnp/interfaces add interface=bridge1 type=internal

Проверка

Просмотр активных UPnP-маппингов

После того как клиентское устройство запросило проброс, маппинг появится в таблице:

[admin@MikroTik] >
/ip/upnp/mappings print

Пример вывода (PlayStation 5):

[admin@MikroTik] >
# PROTOCOL INT-PORT EXT-PORT INT-ADDRESS    EXT-ADDRESS  DESCRIPTION              ENABLED TIMEOUT
0 udp      3478     3478     192.168.88.50  0.0.0.0      PS5-UDP-3478             yes     0s
1 udp      3479     3479     192.168.88.50  0.0.0.0      PS5-UDP-3479             yes     0s
2 tcp      3480     3480     192.168.88.50  0.0.0.0      PS5-TCP-3480             yes     0s

Здесь видно: PlayStation 5 автоматически запросила проброс трёх портов для PSN-мультиплеера.

Проверка через Winbox

В Winbox: IP → UPnP → Mappings. Вкладка показывает все активные маппинги в реальном времени. Можно видеть, какое устройство открыло какие порты.

Проверка NAT Type на консоли

После включения UPnP проверьте NAT Type в настройках сети консоли:

  • PS5: Settings → Network → Test Internet Connection → NAT Type должен быть Type 2
  • Xbox: Settings → General → Network Settings → NAT Type должен быть Open или Moderate

Мониторинг через логирование

Для отслеживания UPnP-активности включите логирование:

[admin@MikroTik] >
/system/logging add topics=upnp action=memory

Просмотр логов:

[admin@MikroTik] >
/log print where topics~"upnp"

Это позволит видеть, когда и какие устройства создают или удаляют маппинги.

Рекомендации по безопасности

Включать UPnP только при необходимости

UPnP нужен далеко не всегда. Если вы можете настроить ручной проброс портов — это всегда безопаснее:

[admin@MikroTik] >
# Ручной проброс — безопасная альтернатива UPnP для PS5
/ip/firewall/nat add chain=dstnat protocol=udp dst-port=3478-3480 \
  in-interface=ether1 action=dst-nat \
  to-addresses=192.168.88.50 to-ports=3478-3480 \
  comment="PS5 NAT open"

/ip/firewall/nat add chain=dstnat protocol=tcp dst-port=3478-3480 \
  in-interface=ether1 action=dst-nat \
  to-addresses=192.168.88.50 to-ports=3478-3480 \
  comment="PS5 NAT open TCP"

Не включать UPnP в офисной сети

В корпоративной среде UPnP — неконтролируемая дыра. Любой сотрудник (или малварь на его компьютере) может открыть порт наружу. Для офиса:

[admin@MikroTik] >
# Убедитесь что UPnP выключен
/ip/upnp set enabled=no

Ограничение UPnP на уровне VLAN

Если UPnP нужен только для игровой зоны — создайте отдельный VLAN и добавьте в UPnP только его:

[admin@MikroTik] >
# Только VLAN с консолями имеет UPnP
/ip/upnp/interfaces add interface=vlan-gaming type=internal
# НЕ добавляйте основной bridge или рабочий VLAN

Периодическая проверка маппингов

Регулярно проверяйте, какие порты открыты через UPnP:

[admin@MikroTik] >
/ip/upnp/mappings print

Если видите незнакомые устройства или подозрительные порты — расследуйте.

Альтернатива: ручной проброс портов

Ручной проброс (static dst-nat) всегда безопаснее UPnP, потому что:

  1. Администратор контролирует каждый открытый порт
  2. Нельзя открыть порт без доступа к роутеру
  3. Правила видны в firewall и поддаются аудиту
  4. Нет зависимости от поведения клиентского ПО

Для большинства сценариев достаточно пробросить несколько портов вручную:

ПриложениеПортыПротокол
PlayStation Network3478-3480TCP + UDP
Xbox Live3074TCP + UDP
qBittorrent6881 (или выбранный)TCP + UDP
SIP/VoIP5060UDP
[admin@MikroTik] >
# Пример: проброс для Xbox
/ip/firewall/nat add chain=dstnat protocol=udp dst-port=3074 \
  in-interface=ether1 action=dst-nat \
  to-addresses=192.168.88.51 comment="Xbox Live UDP"

/ip/firewall/nat add chain=dstnat protocol=tcp dst-port=3074 \
  in-interface=ether1 action=dst-nat \
  to-addresses=192.168.88.51 comment="Xbox Live TCP"

Типичные ошибки

1. UPnP включён, но маппинги не появляются

Причина: не добавлены интерфейсы в /ip/upnp/interfaces.

Решение: проверьте и добавьте оба интерфейса (external и internal):

[admin@MikroTik] >
/ip/upnp/interfaces print
# Если пусто — добавьте:
/ip/upnp/interfaces add interface=ether1 type=external
/ip/upnp/interfaces add interface=bridge1 type=internal

2. NAT Type остаётся Strict на консоли

Причина: firewall блокирует UPnP-трафик (SSDP multicast) или созданные маппинги.

Решение: убедитесь, что firewall разрешает multicast-трафик на порт 1900:

[admin@MikroTik] >
/ip/firewall/filter add chain=input protocol=udp dst-port=1900 \
  in-interface=bridge1 action=accept \
  comment="Allow UPnP SSDP" place-before=0

Также проверьте, что правило forward не блокирует трафик для проброшенных портов.

3. Несколько устройств конфликтуют за один порт

Причина: два устройства запрашивают один и тот же внешний порт (например, две консоли запрашивают порт 3074).

Решение: UPnP назначает порт первому запросившему. Второе устройство получит отказ. Варианты:

  • Настроить на втором устройстве другой порт (если приложение позволяет)
  • Использовать ручной проброс с разными внешними портами

4. UPnP работает, но приложение всё равно не подключается

Причина: маппинг создан, но firewall filter блокирует forward-трафик для этого порта.

Решение: добавьте разрешающее правило forward для подсети, где находится устройство:

[admin@MikroTik] >
/ip/firewall/filter add chain=forward dst-address=192.168.88.0/24 \
  connection-state=new,established,related action=accept \
  in-interface=ether1 comment="Allow forwarded traffic to LAN" place-before=0

5. UPnP-маппинги исчезают после перезагрузки

Это нормальное поведение. UPnP-маппинги динамические — они хранятся в памяти и пропадают при перезагрузке роутера. После загрузки приложения на клиентских устройствах заново запрашивают маппинги.

Если маппинги не восстанавливаются — перезапустите приложение или устройство.

6. Забыли выключить UPnP после тестирования

Причина: UPnP был включён для отладки и остался включённым в продакшн-сети.

Решение: если UPnP больше не нужен — выключите:

[admin@MikroTik] >
/ip/upnp set enabled=no
/ip/upnp/interfaces remove [find]

Итоги

UPnP на MikroTik — удобный инструмент для домашних сетей с игровыми консолями, торрент-клиентами и VoIP-телефонами. Он избавляет от необходимости вручную пробрасывать порты. Однако UPnP несёт серьёзные риски: любое приложение в сети может открыть порт наружу без ведома администратора.

Правила применения просты: в домашней сети с консолями — включайте. В офисной или продакшн-среде — категорически нет. Если можете обойтись ручным пробросом — всегда выбирайте его. И обязательно периодически проверяйте /ip/upnp/mappings на предмет подозрительных записей.

[admin@MikroTik] >
/ip/upnp set enabled=yes allow-disable-external-interface=no
# Внешний интерфейс (WAN)
/ip/upnp/interfaces add interface=ether1 type=external

# Внутренний интерфейс (LAN)
/ip/upnp/interfaces add interface=bridge1 type=internal
/ip/upnp/interfaces add interface=vlan-gaming type=internal
/ip/upnp/interfaces add interface=vlan-home type=internal
/ip/upnp print
enabled: yes
allow-disable-external-interface: no
           show-dummy-rule: yes
/ip/upnp/interfaces print
Flags: X - disabled
#   INTERFACE  TYPE
0   ether1     external
1   bridge1    internal
/ip/upnp set enabled=yes allow-disable-external-interface=no
/ip/upnp/interfaces add interface=ether1 type=external
/ip/upnp/interfaces add interface=bridge1 type=internal
/ip/upnp/mappings print
# PROTOCOL INT-PORT EXT-PORT INT-ADDRESS    EXT-ADDRESS  DESCRIPTION              ENABLED TIMEOUT
0 udp      3478     3478     192.168.88.50  0.0.0.0      PS5-UDP-3478             yes     0s
1 udp      3479     3479     192.168.88.50  0.0.0.0      PS5-UDP-3479             yes     0s
2 tcp      3480     3480     192.168.88.50  0.0.0.0      PS5-TCP-3480             yes     0s
/system/logging add topics=upnp action=memory
/log print where topics~"upnp"
# Ручной проброс — безопасная альтернатива UPnP для PS5
/ip/firewall/nat add chain=dstnat protocol=udp dst-port=3478-3480 \
  in-interface=ether1 action=dst-nat \
  to-addresses=192.168.88.50 to-ports=3478-3480 \
  comment="PS5 NAT open"

/ip/firewall/nat add chain=dstnat protocol=tcp dst-port=3478-3480 \
  in-interface=ether1 action=dst-nat \
  to-addresses=192.168.88.50 to-ports=3478-3480 \
  comment="PS5 NAT open TCP"
# Убедитесь что UPnP выключен
/ip/upnp set enabled=no
# Только VLAN с консолями имеет UPnP
/ip/upnp/interfaces add interface=vlan-gaming type=internal
# НЕ добавляйте основной bridge или рабочий VLAN
/ip/upnp/mappings print
# Пример: проброс для Xbox
/ip/firewall/nat add chain=dstnat protocol=udp dst-port=3074 \
  in-interface=ether1 action=dst-nat \
  to-addresses=192.168.88.51 comment="Xbox Live UDP"

/ip/firewall/nat add chain=dstnat protocol=tcp dst-port=3074 \
  in-interface=ether1 action=dst-nat \
  to-addresses=192.168.88.51 comment="Xbox Live TCP"
/ip/upnp/interfaces print
# Если пусто — добавьте:
/ip/upnp/interfaces add interface=ether1 type=external
/ip/upnp/interfaces add interface=bridge1 type=internal
/ip/firewall/filter add chain=input protocol=udp dst-port=1900 \
  in-interface=bridge1 action=accept \
  comment="Allow UPnP SSDP" place-before=0
/ip/firewall/filter add chain=forward dst-address=192.168.88.0/24 \
  connection-state=new,established,related action=accept \
  in-interface=ether1 comment="Allow forwarded traffic to LAN" place-before=0
/ip/upnp set enabled=no
/ip/upnp/interfaces remove [find]
IP / UPnP на MikroTik — автоматический проброс портов