denilkor Posted March 24, 2018 Posted March 24, 2018 Здравствуйте дорогие форумчане.С недавних пор бьюсь с проблемой и не могу самостоятельно найти решение . Прошу у вас помощи . Имеется две сети обе управляются роутерами 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
nkusnetsov Posted March 27, 2018 Posted March 27, 2018 (edited) В 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
denilkor Posted March 27, 2018 Author Posted March 27, 2018 15 minutes ago, nkusnetsov said: Во-первых, не ленитесь. Раз уже нарисовали схему, допишите адресацию к ней. Во-вторых, причина в том, что ближний к серверу роутер(slave) отправляет ответы клиенту сразу в Интернет. Отправляет со своего внешнего slave-IP в то время, когда клиент ждёт ответ со стороны main-IP роутера(main) к которому обратился. Да действительно нехватает адресов Вставить ник Quote
nkusnetsov Posted March 27, 2018 Posted March 27, 2018 @denilkor , как-то так оно происходит у Вас: Вставить ник Quote
denilkor Posted March 27, 2018 Author Posted March 27, 2018 3 minutes ago, nkusnetsov said: @denilkor , как-то так оно происходит у Вас: Да это как раз понятно . Запрос уходит на сервер , а ответ возвращается через WAN роутера Slave . Как заставить пакеты ходить нормально ? Вставить ник Quote
nkusnetsov Posted March 27, 2018 Posted March 27, 2018 (edited) @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
McSea Posted March 27, 2018 Posted March 27, 2018 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
denilkor Posted March 28, 2018 Author Posted March 28, 2018 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
nkusnetsov Posted March 28, 2018 Posted March 28, 2018 (edited) 4 минуты назад, denilkor сказал: на каком из роутеров это делать ? Не надо так делать. Если сделаете, то все удаленные клиенты для сервера будут представляться одним серым IP-адресом роутера main. Проще говоря, сервер не увидит IP клиентов и не сможет различать клиентов по IP. Edited March 28, 2018 by nkusnetsov Вставить ник Quote
denilkor Posted March 28, 2018 Author Posted March 28, 2018 1 hour ago, nkusnetsov said: Не надо так делать. Если сделаете, то все удаленные клиенты для сервера будут представляться одним серым IP-адресом роутера main. Проще говоря, сервер не увидит IP клиентов и не сможет различать клиентов по IP. Понял . А в Вашей схеме у меня все прекрасно заработало , вот только сервер отказался получать время по NTP. Да и не совсем правильно весь трафик от него пускать через роутер Main . Можно как то пометить пакеты чтобы сервер только отвечал на входящие соединения ? Да и давно уже всем известно , что аппетит приходит во время еды . Поэтому мне захотелось пробросить порты для управления еще устройствами из этой же сети . Боюсь запутаться и через пол года не разобраться в правилах Вставить ник Quote
myth Posted March 28, 2018 Posted March 28, 2018 Не, что-то в дизайне не так. Если есть VPN с удаленными офисами, то нужно просто разобраться с маршрутизацией, без пробросов портов Вставить ник Quote
denilkor Posted March 28, 2018 Author Posted March 28, 2018 1 minute ago, myth said: Не, что-то в дизайне не так. Если есть VPN с удаленными офисами, то нужно просто разобраться с маршрутизацией, без пробросов портов Как тут можно обойтись без проброса портов если мне нужно открыть доступ к серверу из интернета допустим по такому адересу myserver.com:1883 Вставить ник Quote
myth Posted March 28, 2018 Posted March 28, 2018 Если из Инета, то да. Но если хочется чем-то управлять через инет, то используйте любой VPN на компьютере. Вставить ник Quote
nkusnetsov Posted March 28, 2018 Posted March 28, 2018 @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
McSea Posted March 28, 2018 Posted March 28, 2018 7 hours ago, denilkor said: на каком из роутеров это делать ? Там же, где правило dst-nat для сервера сделали. Насчет представления всех клиентов одним IP адресом - а это существенно в данном случае ? Т.е. IP адреса клиентов используются на сервере для чего-то ? Вставить ник Quote
McSea Posted March 28, 2018 Posted March 28, 2018 7 hours ago, nkusnetsov said: Проще говоря, сервер не увидит IP клиентов и не сможет различать клиентов по IP. А если клиенты будут приходить откуда-то из инета из-за одного NAT-а, как он будет их различать ? Имхо не особо правильно рассчитывать на уникальные IP адреса каждого клиента, потом имеем проблемы типа L2TP сервера микротика, к которому несколько виндовс клиентов из-за одного NAT-а не могут подключиться. Вставить ник Quote
denilkor Posted March 28, 2018 Author Posted March 28, 2018 16 minutes ago, McSea said: Там же, где правило dst-nat для сервера сделали. Насчет представления всех клиентов одним IP адресом - а это существенно в данном случае ? Т.е. IP адреса клиентов используются на сервере для чего-то ? Конечно существенно т.к. помимо авторизации каждый клиент подписывается на определенный набор топиков MQTT и будет не правильно если все перемешается в кашу Вставить ник Quote
McSea Posted March 28, 2018 Posted March 28, 2018 1 hour ago, denilkor said: Конечно существенно т.к. помимо авторизации каждый клиент подписывается на определенный набор топиков MQTT и будет не правильно если все перемешается в кашу Тогда мой способ не подходит. Хотя не понимаю как ваш сервер будет различать скажем 1000 клиентов из моей корпоративной сети, которые наружу все через один адрес идут. Вставить ник Quote
nkusnetsov Posted March 28, 2018 Posted March 28, 2018 1 час назад, McSea сказал: А если клиенты будут приходить откуда-то из инета из-за одного NAT-а, как он будет их различать ? Имхо не особо правильно рассчитывать на уникальные IP адреса каждого клиента, потом имеем проблемы типа L2TP сервера микротика, к которому несколько виндовс клиентов из-за одного NAT-а не могут подключиться. Вы прежде чем столь категорично высказываться изучите алгоритмы прохожления пакетов. А то с Вашей рекомендации по постановке правила src-nat ниже dst-nat людям смешно 9 часов назад, denilkor сказал: поставить ниже правила dst-nat для В пределах одного src-ip различать клиентов можно средствами веб-сервера на уровне 7. Когда их действительно много за одним IP - это кривой провайдер. Таких терпил даже гугл на капчу редиректит. Вставить ник Quote
DRiVen Posted March 28, 2018 Posted March 28, 2018 nkusnetsov, по packetflow в данном случае srcnat выполняется после dstnat, в postrouting, посмотрите внимательней. Вставить ник Quote
McSea Posted March 28, 2018 Posted March 28, 2018 (edited) 39 minutes ago, nkusnetsov said: А то с Вашей рекомендации по постановке правила src-nat ниже dst-nat людям смешно Ну если Вам легче читать файрвол, когда правила, которые относятся к одному объекту, находятся на разных страницах, можете смеяться. Edited March 28, 2018 by McSea Вставить ник Quote
nkusnetsov Posted March 28, 2018 Posted March 28, 2018 (edited) @DRiVen , я то в курсе. Это McSea отмочил про перестановку правил, а теперь отмазывается. 5 минут назад, McSea сказал: Ну если Вам легче читать файвол, когда правила, которые относятся к одному объекту, находятся на разных страницах, можете смеяться. Видимо, Вы не имели дело с действительно большим количеством правил в фаерволе. Чтобы их удобно читать - в правом верхнем углу окна winbox есть выпадающий список-фильтр. Очень помогает. Edited March 28, 2018 by nkusnetsov Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.