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

Здравствуйте!

Конфигурация вполне стандартная:
ether1 (WAN) - указан статичный IP от провайдера, допустим 1.2.3.4
ether2 (LAN) - уходит аплинком в коммутатор, подсеть 192.168.0.0/24

В правилах IP->Firewall->NAT:

# Дефалтный маскарадинг
Chain: src-nat
Out-interface: ether1
Action: masquerade

# Проброс порта
Chain: dst-nat
Protocol: 6 (tcp)
Dst. Port: 87
In. Interface: ether1
Action: netmap
To adrr: 192.168.0.2
To ports: 87

Проблема в следующем. Изнутри сети такой проброс не работает. А надо, чтобы при обращении изнутри сети к внешнему адресу 1.2.3.4 и порту 87, происходило все-таки такое перенаправление.

P.S.: Проблема не в In. Interface, пробовал разные там указывать.

192.168.0.100 ----(TCP packet with dst: 1.2.3.4)---> 192.168.0.1 [ether2] -> здесь видимо срабатывает маскарадинг и пакет идет от ether2 на ether1 c уже подмененным src adr 1.2.3.4, т.е. src. adr. = dst. adr
После чего пакет по идее должен придти все-таки в порт ether1 и там уже должен быть обрабатан dst-nat, но что-то где-то в этой цепочке происходит не так. У меня такое ощущение, что я просто где-то туплю и надо как-то поправить маскарадинг или вписать еще одно правило src-nat, ну или что-то в таком духе. Помогите люди знающие, а то я что-то запутался совсем.

Заранее спасибо.
  • Вопрос задан
  • 69922 просмотра
Решения вопроса 1
EvilMan
@EvilMan
Маскардинг не работает в вашем случае. Добавляйте явное правило SNAT для таких пакетов.
В общем, всё выглядит примерно так.
1. LAN client -> Mikrotik, 192.168.0.100:4555 -> 1.2.3.4:87 (на роутере у этого пакета будет in-interface ether2, так как пакет действительно прилетел из локальной сети) - если в правиле указано сопоставление пакета по входящему интерфейсу для dst-nat (логичнее предположить, что он у вас указан как ether1), то никакого перенаправления не будет. Либо заводите два правила, либо не проверяете для перенаправляемых пакетов входящий интерфейс, а только адрес назначения, протокол и порт. Двигаемся дальше.

2. Mikrotik -> LAN server, 192.168.0.100:4555 -> 192.168.0.2:87 (output-interface ether2) - Победили перенаправление и пакеты теперь успешно улетают в локалку после замены адреса назначения (в том-то и суть dst-nat). Но что будет дальше? Локальный сервак получает перенаправленный через роутер пакет и отвечает на него напрямую в обход роутера.

3. LAN server -> LAN client, 192.168.0.2:87 -> 192.168.0.100:4555 - Это ответный пакет от сервера. Но клиент ожидает пакеты с адресом источника 1.2.3.4, а не эти, и отбрасывает их. Либо молча, либо явно с посылкой ICMP-сообщения.

Вот такие дела. Отсюда решение. Правила ната на микротике.
1. Правило для проброса портов из интернета:
chain = nat/prerouting,
  input-interface = ether1, 
  dst-ip = 1.2.3.4, 
  protocol = tcp, 
  dst-port = 87, 
  action = dst-nat, 
  dst-nat-address = 192.168.0.2, 
  dst-nat-port = 87.

2. Правило для проброса портов из локалки:
chain = nat/prerouting
  input-interface = ether2, 
  dst-ip 1.2.3.4, 
  src-ip = 192.168.0.0/24, 
  protocol = tcp, 
  dst-port = 87, 
  action = dst-nat, 
  dst-nat-address = 192.168.0.2, 
  dst-nat-port = 87.

3. Правило для source-nat, чтобы ответные пакеты сервера так же пошли через роутер:
chain = nat/postrouting,
  output-interface = ether2, 
  dst-ip = 192.168.0.2, 
  src-ip = 192.168.0.0/24, 
  protocol = tcp, 
  dst-port = 87, 
  action = src-nat, 
  src-nat-address = 192.168.0.1

Вот как-то так. Можно, кстати, пакеты из локалки в локалку метить в цепочке FORWARD и уже на основе метки делать src-nat.
Ответ написан
Пригласить эксперта
Ответы на вопрос 7
p00h
@p00h
Фехтовальщик-стропальщик
А еще добавлю, что если уж 1.2.3.4 у нас действительно статичный, то лучше вместо маскарада сделать src-nat на известный нам адрес.
Ответ написан
Drugsoul
@Drugsoul
1. В Action: нужно прописать dst-nat
2. Обновите прошивку на 6.7. Там исправили баг с hairpin nat
www.mikrotik.com/download/CHANGELOG_6
Ответ написан
@Brossinger
Много уважаем автор ответа. Есть такая проблема.
есть два роутера mikrotik CRS125-24G-1S-IN и сервер 192.168.0.110. (условно роутер А и роутер В)
Сеть построена следующим образом.
Роутер А:
1) Порт 1 - приходит интернет со статическим адресом(1.2.3.4(допустим)). 2-24 порт объединены в свитч с мастер портом 2. Поднят DHPC(192.168.0.1/24) с днс от провайдера.
# Дефалтный маскарадинг
Chain: src-nat
Out-interface: ether1
Action: masquerade
2) Проброшены серии портов 9292 , 9090 и так далее.
Роутер В
1) сброшены все настройки на ноль . объединены все порты в свитч. более правил нету не создавал.

В общем у меня выходит централизованная сеть на 40 машин в сети 192.168.0.1.

Столкнулся со следующими проблемами:
1) Как и у автора данного вопроса из вне до сервера возможно достучаться. из внутри ноль на массу. проделал все три ваших совета. мне почему то не помогло. глухо как в танке. Заменял 192.168.0.2 на 192.168.0.110(на сервер) и все равно не помогло
2) почему блокируются сайты гугл фейсбук и так далее. Хотя у меня дома настроен rb750gl и все сайты топают нормально. Для меня этот нонсент. Провайдера проверял. Подключал обычный тплинк он пакеты легко пропускает. подключал к нему роутер А тоже нормально из под роутера бегают пакеты. А как только в основной интернет пускаю напрямую в А роутер. гугл сразу с фейсбуком отваливаються, Ряд сайтов банков и т.д.

Находил что надо MTU менять на вановском порте. не помогло. Притом хочу указать что с роутера сайты пингуются. Помогите пожалуйста
Ответ написан
Комментировать
@Skiminok81
Всем привет.
Подскажите как правильно настроить проброс портов.
Имеется: MikroTik RB951G-2HnD
В MikroTik на порты 4 и 5 подключено холодильное оборудование с одинаковым IP (1 холодильник 10.100.1.199, 2 холодильник 10.100.1.199). На 1-й порт подключена локальная сеть IP (192.168.0.2/24).
Холодильники управляются через web интерфейс на 80 порт.
Подскажите как настроить проброс портов из локальной сети к холодильникам например по такому адресу (1 холодильник 192.168.0.2:8000, второй 192.168.0.2:8001)
Заранее благодарен за ответ.

P.S. Перенастройка ip холодильников невозможна
Ответ написан
@Alain
Начинающий админ
Доброго дня! Имеется головной офис, в нем микротик с VPN сервером (PPTP) и статическим (белым) IP. есть филиалы и просто пользователи, которые подключаются по VPN к головному офису (на филиалах используем микротик с VPN клиентом). Есть задача пустить определенный тип траффика внутри VPN не используя статический адрес головного офиса, на котором этот VPN собственно и поднимается. Допустим, белый IP головного офиса 1.1.1.1, локалка 192.168.0.0/24, удаленный офис локалка 192.168.2.0/24. локалке головного офиса есть сервер с адресом 192.168.0.10 (АТС) и портом 4545, нужно что-бы на филиале связь работала в обе стороны, а не в одну (меня слышно, если звонить с головного офиса, а абонента - нет).
С уважением!
Ответ написан
Комментировать
@Alex2613ST
Нашел вам мини статью, думаю она ответит на ваш вопрос https://mikrotiklab.ru/nastrojka/probros-portov-mi...
Ответ написан
Комментировать
@Businka76
Допустим мы имеем конфигурацию, когда в вашей офисной или домашней сети есть веб-сервер. На него из-вне проброшен 80 порт. Ваши клиенты могут заходить на ваш домен domain.ru, который имеет внешний IP185.173.153.2 с переадресацией через Mikrotik на web-сервер 192.168.1.99. Визуально такое правило выглядит так:

/ip firewall nat
add chain=dstnat dst-address=185.173.153.2 protocol=tcp 
dst-port=22 action=dst-nat to-address=192.168.1.99


Все запросы с внешнего IP 1.1.1.1 на 80 порт направлять на наш веб-сервер. Второе правило — обычный NAT для нашей внутренный сети:

add chain=srcnat out-interface=bridge action=masquerade


Когда внешний клиент с WAN-интерфейса совершает подключение к нашему веб-серверу это выглядит так:

Внешний клиент посылает пакет с IP-адресом источника 2.2.2.2 (IP внешнего клиента) на IP-адрес назначения 185.173.153.2 (IP резольва нашего ресурса domain.ru) на порт TCP / 22 для запроса веб-ресурса.
Пакет попадает в NAT маршрутизатора, роутер заменяет IP назначения на 192.168.1.99. Источник IP-адрес остается прежним: 2.2.2.2.
Сервер отвечает на запрос клиента. Пакет имеет IP-адрес источника 192.168.1.99 и IP-адрес назначения 2.2.2.2.
Маршрутизатор определяет, что пакет является частью предыдущего соединения, применяет NAT (помещает исходный IP-адрес назначения в поле IP-адрес источника). IP-адрес назначения 2.2.2.2, а источник IP-адре с185.173.153.2 .

Клиент получает ответный пакет который он ожидает — соединение установлено. Такая схема рабочая.

Проблемы начинаются тогда, когда клиент (источник пакета) находится внутри вашей сети. Например, на ваш веб-сервер, на домен domain.ru, который разрешается DNS как 185.173.153.2 хочет зайти клиент с адресом 192.168.1.10, который находится в одной подcети с нашим веб-сервером, который имеет IP 192.168.1.99 (подсеть 192.168.1.0/24).

Клиент посылает пакет с IP-источником 192.168.1.10 на IP-адрес назначения 1.1.1.1 на порт TCP / 80 для запроса веб-ресурса.
В NAT маршрутизатор пакет назначения заменяет на 192.168.1.2, IP-адрес источника остается прежним: 192.168.1.10.
Сервер отвечает на запрос клиента. Так как IP-адрес источника запроса находится в той же подсети, что и веб-сервер, веб-сервер не отправляет ответ обратно к маршрутизатору, а отправляет его непосредственно на 192.168.1.10 с исходным IP-адресом в ответе — 192.168.1.2.
Фактически, клиент получает ответ не от того отправителя, от которого ожидает. Он отправлял пакет на маршрутизатор с IP 1.1.1.1 и должен получить от IP 1.1.1.1, а получил от IP 192.168.1.2. Этот пакет считается недействительным и связь не устанавливается, а страничка domain.ru не открывается.

Что-бы решить эту проблему нужно добавить еще одно правило в Mikrotik, для того что-бы весь ответ на нужных нам портах проходил через маршрутизатор.

/ip firewall nat
add chain=srcnat src-address=192.168.1.0/24 dst-address=192.168.1.99 protocol=tcp dst-port=22 out-interface=bridge action=masquerade


Рассмотрим этот вариант:
Клиент посылает пакет с IP-источником 192.168.1.10 на IP-адрес назначения 185.173.153.2 на порт TCP / 80 для запроса веб-ресурса.
В NAT маршрутизатор пакет назначения заменяет на 192.168.1.99. IP-адрес источника заменяет на IP-адрес LAN-порта маршрутизатора: 192.168.1.1.
Веб-сервер отвечает на запрос и отправляет ответ с источником 192.168.1.99 обратно в LAN интерфейс маршрутизатора — на 192.168.1.1.
Маршрутизатор определяет, что пакет является частью предыдущего соединения, разрешает NAT, помещает в источник IP 1.1.1.1 и отправляет пакет на 192.168.1.10.
Клиент получает ответный пакет тот, который он ожидает — соединение будет установлено. Нужно учитывать, что при такой схеме ваш веб-сервер всегда видит IP-источника 192.168.1.1 при подключении к нему внутренних клиентов из вашей сети.

Так же, стоит сказать, если вы в Mikrotik в статические записи ДНС добавите правило:

/ip dns static
add address=192.168.1.99 name=domain.ru


И ваши клиенты будут использовать роутер как DNS-сервер, то все пакеты, которые будут отправлены на domain.ru сразу зарезольвятся на адрес 192.168.1.2. Таким образом они попадут на веб-сервер минуя маршрутизатор, и ваш веб-сервер ответит напрямую компьютеру из сети, и пакет тоже отлично пройдет, и сайт откроется. Недостатком такого метода можно считать то, что большое количество сайтов добавлять в статический записи неудобно. Плюс при такой схеме обязательно нужно использовать Mikrotik как главный и единственный DNS-сервер.

В примере приведен образец с WEB-сервером, хотя эту схему можно использовать и для других сервисов и портов (например ftp, ssh и т.д.).

ps не смог почему то вставить ссылку... пришлось скопировать текст - ссылка на оригинал хтппс: galaxydata.ru/community/nat-mikrotik-dostup-k-wan-iz-lokalnoy-seti-hairpin-nat-dostu-577
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы