Введение / Зачем это нужно
Проброс портов (port forwarding) на роутере MikroTik позволяет предоставлять доступ к сервисам, запущенным в вашей локальной сети (веб-сервер, камера видеонаблюдения, игровой хост, SSH-сервер), из глобального интернета. Без этой настройки все входящие соединения с интернета будут блокироваться фаерволом роутера, так как внутренние устройства находятся за NAT.
После выполнения этого гайда вы сможете:
- Открыть доступ к веб-интерфейсу IP-камеры с любого компьютера в мире.
- Разрешить подключение к удалённому рабочему столу (RDP) или SSH-серверу.
- Настроить хостинг для многопользовательской игры.
⚠️ Важно: Проброс портов снижает безопасность, так как "протягивает" сервис в интернет. Обязательно:
- Используйте сложные пароли для сервисов.
- Ограничивайте доступ по IP в правилах фаервола, если это возможно.
- Регулярно обновляйте ПО сервиса и RouterOS.
Требования / Подготовка
Перед началом убедитесь, что у вас есть:
- Доступ к интерфейсу MikroTik RouterOS (через WinBox, WebFig или SSH).
- Работающий локальный сервис (например, веб-сервер на
192.168.88.100:80), доступный из внутренней сети. - Статический IP-адрес для внутреннего устройства (настроен через DHCP Reservation или вручную на самом устройстве).
- Публичный IP-адрес от провайдера (если у вас динамический IP, потребуется сервис DDNS).
- Базовые знания о работе сетей, IP-адресации и портах.
Шаг 1: Определение параметров проброса
Прежде чем создавать правила, соберите следующую информацию:
- Внешний порт (Public Port) — порт, который будет слушать роутер из интернета (например,
8080). - Внутренний IP-адрес (Internal IP) — локальный адрес сервера (например,
192.168.88.100). - Внутренний порт (Internal Port) — порт, на котором работает сервис на сервере (например,
80для HTTP). - Протокол (Protocol) —
TCP,UDPили оба. Для веб-сервера обычноTCP, для VoIP или игр может потребоватьсяUDP.
Пример:
Вы хотите, чтобы веб-камера с адресом 192.168.88.50:8080 была доступна из интернета по порту 8090. Тогда:
- Внешний порт:
8090 - Внутренний IP:
192.168.88.50 - Внутренний порт:
8080 - Протокол:
TCP(если камера использует только TCP).
Шаг 2: Создание правила NAT (dst-nat)
Правило dst-nat (destination NAT) перенаправляет входящий трафик с внешнего интерфейса и порта на внутренний адрес.
- Откройте RouterOS.
- Перейдите в IP → Firewall → NAT.
- Нажмите кнопку '+' (Add) для создания нового правила.
- Заполните поля:
- Chain:
dstnat - Src. Address: оставьте пустым (или укажите конкретный IP, если хотите ограничить доступ).
- Dst. Address: ваш публичный IP (можно оставить
0.0.0.0/0, если один публичный IP). - Protocol: выберите
tcp,udpили6(TCP) /17(UDP). - Dst. Port: внешний порт (например,
8090). - In. Interface: интерфейс, с которого приходит трафик (обычно
ether1илиsfp1— WAN-порт). Можно оставить пустым, чтобы правило работало на всех интерфейсах.
- Chain:
- Во вкладке Action выберите
dst-nat. - Укажите:
- To Addresses: внутренний IP (
192.168.88.50) - To Ports: внутренний порт (
8080)
- To Addresses: внутренний IP (
- Нажмите OK.
Пример правила в командной строке RouterOS:
/ip firewall nat add chain=dstnat protocol=tcp dst-port=8090 \
in-interface=ether1 action=dst-nat to-addresses=192.168.88.50 to-ports=8080
Шаг 3: Настройка правил фаервола (Filter Rules)
По умолчанию RouterOS блокирует все входящие соединения, кроме ответов на исходящие. Нужно явно разрешить трафик на проброшенный порт.
- Перейдите в IP → Firewall → Filter Rules.
- Создайте новое правило ('+').
- Настройте:
- Chain:
input - Protocol: тот же, что в NAT-правиле (
tcp). - Dst. Port: внешний порт (
8090). - In. Interface: тот же интерфейс, что в NAT-правиле (
ether1).
- Chain:
- Во вкладке Action выберите
accept. - Разместите это правило выше правил, которые блокируют всё (обычно правило с
action=dropв цепочкеinput). В интерфейсе можно перетащить или изменить номер.
💡 Совет: Для безопасности ограничьте правило по источнику (
Src. Address), если вы знаете статический IP своего офиса или используете DDNS. Например:Src. Address=94.25.150.32/32.
Пример правила фаервола:
/ip firewall filter add chain=input protocol=tcp dst-port=8090 \
in-interface=ether1 action=accept comment="Allow camera access"
Шаг 4: Проверка работы
- Локальная проверка: Убедитесь, что сервис доступен из локальной сети по внутреннему IP и порту.
- Внешняя проверка:
- Узнайте ваш публичный IP (зайдите на сайт 2ip.ru или
whatismyip.com). - С другого устройства (например, с мобильного интернета) откройте в браузере:
http://ваш_публичный_IP:внешний_порт(например,http://95.142.12.34:8090). - Если сервис требует HTTPS, используйте
https://.
- Узнайте ваш публичный IP (зайдите на сайт 2ip.ru или
- Проверка порта: Используйте онлайн-сканеры портов (например,
ping.eu/port-chk), чтобы убедиться, что порт открыт и слушает роутер. - Логи RouterOS: В Log можно увидеть, приходят ли пакеты. Фильтруйте по
topic=firewall,debug.
Шаг 5: Расширенные настройки (опционально)
Проброс диапазона портов
Если нужно пробросить диапазон (например, для P2P-игр), укажите порты через дефис: Dst. Port=3478-3480.
Проброс UDP и TCP одновременно
Создайте два отдельных NAT-правила (с protocol=tcp и protocol=udp) и два правила в фаерволе, или одно правило с protocol=udp,tcp (в RouterOS можно указать через запятую).
Hairpin NAT (доступ из локальной сети по внешнему IP)
Если вы хотите, чтобы устройства в локальной сети могли обращаться к сервису по внешнему IP и порту, настройте Hairpin NAT. Это отдельная тема, но кратко:
- В NAT добавьте правило с
chain=srcnat,src-address=192.168.88.0/24,action=masquerade. - В
dstnatдобавьте правило сin-interface=bridge-local(или вашего локального интерфейса) иto-addresses=192.168.88.50.
Возможные проблемы
| Проблема | Решение |
|---|---|
| Порт закрыт, внешний сканер не видит | 1. Проверьте, что правило NAT и фаервола активны и в правильном порядке. 2. Убедитесь, что провайдер не блокирует порт (попробуйте другой, например 8080). 3. Проверьте, что сервис слушает внутренний порт ( netstat -an на сервере). |
| Доступ есть, но сервис не отвечает | 1. Проверьте, что внутренний сервис настроен на прослушивание всех интерфейсов (0.0.0.0), а не только 127.0.0.1.2. Убедитесь, что на сервере нет своего фаервола (например, iptables на Linux). |
| Работает только из локальной сети | 1. Проверьте публичный IP — возможно, у вас CG-NAT от провайдера. Нужен статический IP или настройка проброса на уровне провайдера. 2. Убедитесь, что используется правильный публичный IP (не внутренний 192.168.x.x). |
| После перезагрузки роутера правила пропали | Настройки должны сохраняться. Если нет — проверьте, есть ли права на запись, и не перезаписываются ли они скриптами или конфигурационными бэкапами. |
| Конфликт портов | Если на внутреннем сервере уже используется порт, который вы пробрасываете, измените внутренний порт сервиса или выберите другой внешний порт. |
Заключительные рекомендации
- Документируйте свои правила: используйте поле
commentв NAT и Filter Rules, чтобы потом не забыть, что делает каждое правило. - Тестируйте с разных сетей (мобильный интернет, у друга).
- Обновляйте RouterOS для безопасности.
- Используйте мониторинг: в Tools → Torch можно наблюдать за трафиком на порту.
Если после всех проверок доступ не работает, временно отключите фаервол (/ip firewall set [find] disabled=yes), чтобы исключить проблему с правилами, но делайте это только для диагностики и на короткое время.