denilkor Posted March 24, 2018 · Report post Здравствуйте дорогие форумчане.С недавних пор бьюсь с проблемой и не могу самостоятельно найти решение . Прошу у вас помощи . Имеется две сети обе управляются роутерами Mikrotik. Первая сеть с имеет статический IP доменное имя и управляется роутером MAIN (по схеме) там много подсетей VLANы для нескольких компаний , несколько WIFI мостов и больше 15 компов. Вторая сеть моя домашняя имеет серый динамический IP управляется роутером SECOND имеет пару подсетей (мою и соседей) так же в моей подсети находится сервер умного дома и MQTT брокер . Между этими двумя сетями благополучно проброшен тунель SSTP и включена динамическая маршрутизация OSPF тачки пингуются в обоих направлениях все работает . Теперь перед мной стоит задача пробросить порт из сервера с брокером MQTT так чтобы обращаться к нему можно было через интернет по доменному имени . В настоящий момент пытался добавить правило в NAT add action=dst-nat chain=dstnat dst-port=1883 in-interface=ether1-WAN \ protocol=tcp to-addresses=192.168.88.10(адрес сервера). Результата нет . Помогите настроить пожалуйста Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
nkusnetsov Posted March 27, 2018 (edited) · Report post В 24.03.2018 в 20:32, denilkor сказал: T add action=dst-nat chain=dstnat dst-port=1883 in-interface=ether1-WAN \ protocol=tcp to-addresses=192.168.88.10(адрес сервера). Во-первых, не ленитесь. Раз уже нарисовали схему, допишите адресацию к ней. Во-вторых, причина в том, что ближний к серверу роутер(slave) отправляет ответы клиенту сразу в Интернет. Отправляет со своего внешнего slave-IP в то время, когда клиент ждёт ответ со стороны main-IP роутера(main) к которому обратился. Edited March 27, 2018 by nkusnetsov Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
denilkor Posted March 27, 2018 · Report post 15 minutes ago, nkusnetsov said: Во-первых, не ленитесь. Раз уже нарисовали схему, допишите адресацию к ней. Во-вторых, причина в том, что ближний к серверу роутер(slave) отправляет ответы клиенту сразу в Интернет. Отправляет со своего внешнего slave-IP в то время, когда клиент ждёт ответ со стороны main-IP роутера(main) к которому обратился. Да действительно нехватает адресов Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
nkusnetsov Posted March 27, 2018 · Report post @denilkor , как-то так оно происходит у Вас: Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
denilkor Posted March 27, 2018 · Report post 3 minutes ago, nkusnetsov said: @denilkor , как-то так оно происходит у Вас: Да это как раз понятно . Запрос уходит на сервер , а ответ возвращается через WAN роутера Slave . Как заставить пакеты ходить нормально ? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
nkusnetsov Posted March 27, 2018 (edited) · Report post @denilkor , простой вариант - заставить ВСЕ пакеты сервака идти через VPN-линк./ip route add distance=1 gateway= 192.168.100.1 check-gateway=ping routing-mark=serv /ip route rule add src-address=192.168.88.10/32 table=serv Edited March 27, 2018 by nkusnetsov Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
McSea Posted March 27, 2018 · Report post 13 hours ago, denilkor said: Да это как раз понятно . Запрос уходит на сервер , а ответ возвращается через WAN роутера Slave . Как заставить пакеты ходить нормально ? Можно использовать src-nat. Что-то типа /ip firewall nat add action=src-nat chain=srcnat dst-address=192.168.88.10 dst-port=1833 out-interface=Имя_SSTP_интерфейса protocol=tcp to-addresses=192.168.100.1 поставить ниже правила dst-nat для 192.168.88.10. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
denilkor Posted March 28, 2018 · Report post 8 hours ago, McSea said: Можно использовать src-nat. Что-то типа /ip firewall nat add action=src-nat chain=srcnat dst-address=192.168.88.10 dst-port=1833 out-interface=Имя_SSTP_интерфейса protocol=tcp to-addresses=192.168.100.1 поставить ниже правила dst-nat для 192.168.88.10. на каком из роутеров это делать ? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
nkusnetsov Posted March 28, 2018 (edited) · Report post 4 минуты назад, denilkor сказал: на каком из роутеров это делать ? Не надо так делать. Если сделаете, то все удаленные клиенты для сервера будут представляться одним серым IP-адресом роутера main. Проще говоря, сервер не увидит IP клиентов и не сможет различать клиентов по IP. Edited March 28, 2018 by nkusnetsov Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
denilkor Posted March 28, 2018 · Report post 1 hour ago, nkusnetsov said: Не надо так делать. Если сделаете, то все удаленные клиенты для сервера будут представляться одним серым IP-адресом роутера main. Проще говоря, сервер не увидит IP клиентов и не сможет различать клиентов по IP. Понял . А в Вашей схеме у меня все прекрасно заработало , вот только сервер отказался получать время по NTP. Да и не совсем правильно весь трафик от него пускать через роутер Main . Можно как то пометить пакеты чтобы сервер только отвечал на входящие соединения ? Да и давно уже всем известно , что аппетит приходит во время еды . Поэтому мне захотелось пробросить порты для управления еще устройствами из этой же сети . Боюсь запутаться и через пол года не разобраться в правилах Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
myth Posted March 28, 2018 · Report post Не, что-то в дизайне не так. Если есть VPN с удаленными офисами, то нужно просто разобраться с маршрутизацией, без пробросов портов Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
denilkor Posted March 28, 2018 · Report post 1 minute ago, myth said: Не, что-то в дизайне не так. Если есть VPN с удаленными офисами, то нужно просто разобраться с маршрутизацией, без пробросов портов Как тут можно обойтись без проброса портов если мне нужно открыть доступ к серверу из интернета допустим по такому адересу myserver.com:1883 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
myth Posted March 28, 2018 · Report post Если из Инета, то да. Но если хочется чем-то управлять через инет, то используйте любой VPN на компьютере. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
nkusnetsov Posted March 28, 2018 · Report post @denilkor , чтобы получить более гибкий вариант для Вас: 1) Завести полноценную альтернативную таблицу маршрутизации "serv" (routing-mark=serv), в которой есть маршруты такие же как и в таблице "main", за исключением default route (0.0.0.0/0) ведущего через туннель 192.168.100.1. 2) в фаерволе, в mangle-prerouting маркировать входящие соединения по критерию in-interface=sstp. Далее в mangle-prerouting, для пакетов принадлежащих отмеченным соединениям, делать mark-routing=serv (пускать их по альтернативной таблице маршрутизации) Таким образом, все соединения входящие через sstp, ответные пакеты будут отсылать обратно через тот же sstp Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
McSea Posted March 28, 2018 · Report post 7 hours ago, denilkor said: на каком из роутеров это делать ? Там же, где правило dst-nat для сервера сделали. Насчет представления всех клиентов одним IP адресом - а это существенно в данном случае ? Т.е. IP адреса клиентов используются на сервере для чего-то ? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
McSea Posted March 28, 2018 · Report post 7 hours ago, nkusnetsov said: Проще говоря, сервер не увидит IP клиентов и не сможет различать клиентов по IP. А если клиенты будут приходить откуда-то из инета из-за одного NAT-а, как он будет их различать ? Имхо не особо правильно рассчитывать на уникальные IP адреса каждого клиента, потом имеем проблемы типа L2TP сервера микротика, к которому несколько виндовс клиентов из-за одного NAT-а не могут подключиться. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
denilkor Posted March 28, 2018 · Report post 16 minutes ago, McSea said: Там же, где правило dst-nat для сервера сделали. Насчет представления всех клиентов одним IP адресом - а это существенно в данном случае ? Т.е. IP адреса клиентов используются на сервере для чего-то ? Конечно существенно т.к. помимо авторизации каждый клиент подписывается на определенный набор топиков MQTT и будет не правильно если все перемешается в кашу Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
McSea Posted March 28, 2018 · Report post 1 hour ago, denilkor said: Конечно существенно т.к. помимо авторизации каждый клиент подписывается на определенный набор топиков MQTT и будет не правильно если все перемешается в кашу Тогда мой способ не подходит. Хотя не понимаю как ваш сервер будет различать скажем 1000 клиентов из моей корпоративной сети, которые наружу все через один адрес идут. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
nkusnetsov Posted March 28, 2018 · Report post 1 час назад, McSea сказал: А если клиенты будут приходить откуда-то из инета из-за одного NAT-а, как он будет их различать ? Имхо не особо правильно рассчитывать на уникальные IP адреса каждого клиента, потом имеем проблемы типа L2TP сервера микротика, к которому несколько виндовс клиентов из-за одного NAT-а не могут подключиться. Вы прежде чем столь категорично высказываться изучите алгоритмы прохожления пакетов. А то с Вашей рекомендации по постановке правила src-nat ниже dst-nat людям смешно 9 часов назад, denilkor сказал: поставить ниже правила dst-nat для В пределах одного src-ip различать клиентов можно средствами веб-сервера на уровне 7. Когда их действительно много за одним IP - это кривой провайдер. Таких терпил даже гугл на капчу редиректит. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
DRiVen Posted March 28, 2018 · Report post nkusnetsov, по packetflow в данном случае srcnat выполняется после dstnat, в postrouting, посмотрите внимательней. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
McSea Posted March 28, 2018 (edited) · Report post 39 minutes ago, nkusnetsov said: А то с Вашей рекомендации по постановке правила src-nat ниже dst-nat людям смешно Ну если Вам легче читать файрвол, когда правила, которые относятся к одному объекту, находятся на разных страницах, можете смеяться. Edited March 28, 2018 by McSea Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
nkusnetsov Posted March 28, 2018 (edited) · Report post @DRiVen , я то в курсе. Это McSea отмочил про перестановку правил, а теперь отмазывается. 5 минут назад, McSea сказал: Ну если Вам легче читать файвол, когда правила, которые относятся к одному объекту, находятся на разных страницах, можете смеяться. Видимо, Вы не имели дело с действительно большим количеством правил в фаерволе. Чтобы их удобно читать - в правом верхнем углу окна winbox есть выпадающий список-фильтр. Очень помогает. Edited March 28, 2018 by nkusnetsov Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...