Всем привет, у меня проблема с Hairpin. У меня базовая настройка (с нуля). Локальная сеть: 192.168.88.0/24 Шлюз: 192.168.88.1 WAN через PPPoE (IP 100.100.100.100) Версия: 6.35
У меня есть NAT-правило для прямого доступа к камере, оно работает снаружи. Но если пытаюсь обратиться к ней из локальной сети по её WAN IP, то не срабатывает (http://100.100.100.100).
Раньше я добавлял такое NAT-правило: /ip firewall nat add chain=srcnat src-address=192.168.88.0/24 dst-address=192.168.88.238 protocol=tcp dst-port=80 out-interface=brigde-local action=masquerade
В цепочке forward нет правила drop. Правило стоит на первом месте, но я не вижу, чтобы через него проходили пакеты.
Раньше такое работало на предыдущих версиях Mikrotik. Буду благодарен за помощь. Спасибо заранее! С уважением,
Если что, я боролся с этой проблемой годами и наконец решил её благодаря этой теме. Для полноты картины вот рабочая конфигурация hairpin NAT с пробросом портов:
Первый src-nat — это маскарадинг с локалки в интернет. Второй src-nat — маскарадинг локалка-внутри сети. dst-nat переправляет локальный и внешний трафик с порта 1234 внешнего IP на 192.168.88.120:1234.
Поменял свой 8-летний роутер dlink на новый RouterBoard с прошивкой v6.38.5. Всё запустил, вайфай настроил и защитил. Основные моменты готовы к работе. Пока что прочитал вики про hairpin NAT и ещё пару разных постов. Добавил 2 NAT правила, как указано в вики, но веб-сервер всё равно заблокирован на порту 8080. Он настроен на работу по портам 80 и 8080. По локальному IP на 80-й порт заходит сразу, а на 8080 — ни в какую. Ещё он запускает сервис динамического DNS и настроен на мой публичный IP:8080, потому что Cox не пропускает исходящие на порт 80. Входящий трафик на 8080 с моего интернет-IP должен пробрасываться к веб-серверу в сети 192 на тот же порт 8080.
Пробовал такое правило сначала: add action=dst-nat chain=dstnat comment=“” disabled=no dst-port=8080 in-interface=ether1 protocol=tcp to-address=192.168.0.200 to-ports=8080
Но это не сработало. Потом прочитал вики про Hairpin NAT. Там два правила: первое очень похоже на вышеописанное, но с добавлением dst-address=(мой публичный IP) и без to-ports=8080, а второе — это: add chain=srcnat out-interface=ether1 action=masquerade. Добавил второе правило — всё равно нет удачи, даже на локальном IP:8080. Пробовал как с to-ports, так и без — результата нет.
Потом нашёл эту тему, выглядит перспективно. Я не использую pppoe, возможно именно из-за этого копирование почти дословно — моя проблема.
Вот моя текущая конфигурация после обновления NAT правил: [admin@MikroTik] > ip firewall nat export apr/26/2017 19:49:55 by RouterOS 6.38.5 software id = T5XA-V4CM
Выходит, мои правила выше были правильными. Веб-сервер почему-то не работал на 8080… Когда локально на 8080 не сработало, я подумал, что между Ethernet-портами файрвол блокирует. Поменял порты на 80 — теперь всё отлично работает.
Привет, у меня такая же проблема. Хочу просканировать публичный IP моего Mikrotik роутера. Но каждый раз, когда запускаю nmap, он показывает открытые порты для LAN, а не для WAN-интерфейса. Вот мои правила ip firewall nat:
У вас есть внутренний сервер с адресом 10.2.0.X и одно или несколько правил dstnat для перенаправления трафика с публичного адреса на 10.2.0.X, верно? Если да, то в последнем правиле вам нужно указать dst-address=10.2.0.X. Если это не поможет, поделитесь дополнительной информацией (точными правилами dstnat, подробностями о том, что именно вы пытаетесь сделать и т.п.).
Привет, Sob. Здесь всего два правила для перенаправления всех DNS-запросов на Mikrotik: chain=dstnat action=dst-nat to-addresses=10.2.0.1 to-ports=53 protocol=tcp in-interface=bridge dst-port=53 log=no log-prefix="" chain=dstnat action=dst-nat to-addresses=10.2.0.1 to-ports=53 protocol=udp in-interface=bridge dst-port=53 log=no log-prefix=""
Суть в том, что я хочу иметь возможность сканировать внешний интерфейс моего Mikrotik с любых клиентов в LAN. Конкретно — я хочу запускать nmap -sS -Pn -vvv -O external_ip и видеть внешний интерфейс, а не 10.2.0.1, который я вижу сейчас с открытыми портами tcp/80 и tcp/8291.
И, указывая внутренний ip 10.2.0.1, я бы хотел видеть все открытые порты так, как они должны быть.
nmap -sS -Pn -vvv -O external_ip
Это должно позволить мне видеть все порты на внешнем интерфейсе Mikrotik.
Не думаю, что так можно. Если у вас на роутере запущена какая-то служба (например, WinBox на tcp/8291), она слушает на всех адресах и интерфейсах. Даже если ограничить разрешённые адреса клиентов в «/ip services», это не позволит подключиться с других адресов, но порт всё равно будет показываться как открытый отовсюду. И если вы заблокируете входящие подключения из интернета с помощью фаервола (например, командой /ip firewall filter add chain=input protocol=tcp dst-port=8291 in-interface=WAN), чтобы никто из интернета не мог подключиться, при тестировании из локальной сети вы получите ложные результаты, потому что независимо от настроек, in-interface будет LAN, и правило не сработает. Проще говоря, если хотите достоверно проверить, что доступно снаружи, нужно делать это именно снаружи.
Спасибо, Sob, но это довольно странно. Я уверен, что смог бы сделать это даже на базовой прошивке Tomato для Linksys WRT-54GL, например — там просто ставишь галочку «NAT loopback» и всё работает.
Быстрый поиск в Google дал мне именно это, и именно так можно использовать hairpin NAT в RouterOS. Это ситуация, когда у вас есть внутренний сервис (например, веб-сервер), вы хотите, чтобы он был доступен из интернета (перенаправляете порт с публичного адреса на внутренний), и при этом хотите иметь возможность подключаться к этому серверу по публичному адресу с клиента в той же локальной сети, что и сервер. По умолчанию это не работает, и страница в вики объясняет, почему и как это исправить. Но если у вас вообще нет такого внутреннего сервера, эта функция для вас бесполезна.
Добрый день, ребята, извиняюсь, что поднимаю старую тему, но у меня похожая проблема, только я работаю через два роутера. Моя схема выглядит так:
«У меня на самом деле три интернет-роутера для резервирования, все они подключены к Eth1 - Eth3 моего офисного Mikrotik, и настроены маршруты для резервирования. Но я уверен, что если запустить основной роутер, остальные должны заработать без дополнительной настройки».
Mikrotik 1 Интернет: IP → 192.168.1.1 Интернет → PPPoE со статическим публичным адресом 169.255.XXX.XXX
Mikrotik 2 Офис: IP → 192.168.230.1 IP Eth1, связанного с Mikrotik 1 → 192.168.1.2 Сеть 1 → 192.168.230.0/24 «для всех статичных устройств, таких как камеры и серверы» Сеть 2 → 192.168.220.0/24 «для всех устройств, например телефонов и ноутбуков, которые подключаются к нашей беспроводной сети»
У меня настроен DNS через IP/Cloud с указанием Mikrotik 1, и все серверы и камеры, к которым нужно подключаться извне, работают как надо, без проблем. Единственная сложность — это настройка hairpin NAT для устройств внутри офиса в сети 192.168.220.0/24 и для серверов в сети 192.168.230.0/24, чтобы они могли через DNS-имя и нужный порт обращаться к другим нашим сервисам и камерам.
Может, кто-нибудь подскажет, в каком направлении копать? Спасибо!