7sergeynazarov7 Posted November 23, 2020 Posted November 23, 2020 Добрый день коллеги, есть задача сделать на Микротике передачу данных с какого канала пришел в тот и ушел. Сейчас настроенна балансировка через prepend, а требуется сделать если абонент пришел из А канала значит в него и ушел, если из B аналогично А, Имеется две сессии FV с разными магистралами. Подскажите пожалуйста как это реализовать ? Вставить ник Quote
alibek Posted November 23, 2020 Posted November 23, 2020 Как абонент может "прийти" из аплинка? Вставить ник Quote
7sergeynazarov7 Posted November 23, 2020 Author Posted November 23, 2020 12 minutes ago, alibek said: Как абонент может "прийти" из аплинка? Имеется сеть xx.xxx.xxx.xx/23 она поделена на две сети которые анонсируеются магистралам xx.xxx.xxx.xx/24 , настроен NAT. Вставить ник Quote
pppoetest Posted November 23, 2020 Posted November 23, 2020 Абонент не может придти извне. Пакеты от абонентов прилетают из внутренней сети, и согласно правилам и таблицам маршрутизации улетают во внешку на тот или иной канал. Ответ не обязательно придёт на тот же интерфейс с которого улетел ответ, и это нормально. Вставить ник Quote
7sergeynazarov7 Posted November 23, 2020 Author Posted November 23, 2020 Just now, pppoetest said: Абонент не может придти извне. Пакеты от абонентов прилетают из внутренней сети, и согласно правилам и таблицам маршрутизации улетает во внешку на тот или иной канал. Ответ не обязательно придёт на тот же интерфейс с которого улетел ответ, и это нормально. Получается асинхронная передача данных, для некоторые сервисов это не подходит. Вопрос: Как сделать, чтоб приходил и уходил в один интерфейс, есть мысли ? Подскажите пожалуйста. Вставить ник Quote
pppoetest Posted November 23, 2020 Posted November 23, 2020 6 минут назад, 7sergeynazarov7 сказал: для некоторые сервисов это не подходит. Это что за сервисы такие? 6 минут назад, 7sergeynazarov7 сказал: Как сделать, чтоб приходил и уходил в один интерфейс, есть мысли ? Подскажите пожалуйста. В общем случае никак. Но если сильно хочется, убираете с анонсов префикс /23, анонсите в канал А первый /24, в канал Б второй /24, ну и правка NAT соот-но. Но я бы так не делал, потому что нет таких сервисов о которых вы говорите. Вставить ник Quote
7sergeynazarov7 Posted November 23, 2020 Author Posted November 23, 2020 1 minute ago, pppoetest said: Это что за сервисы такие? В общем случае никак. Но если сильно хочется, убираете с анонсов префикс /23, анонсите в канал А первый /24, в канал Б второй /24, ну и правка NAT соот-но. Но я бы так не делал, потому что нет таких сервисов о которых вы говорите. Сейчас и сделан Анонс сети А в первый predend 3 и второй канал /24 и канал Б первый второй prepend 3 /24 префикс /23 не анонсируется. На Cisco это реализовывается, а на микротике реально ? Вставить ник Quote
DeLL Posted November 23, 2020 Posted November 23, 2020 ,,,,,,,,,,,,,,,, вот, расставте, а то "казнить нельзя помиловать" получается Что реализовать на микроте? Анонс разных сетей в разные аплинки? Вставить ник Quote
VolanD666 Posted November 23, 2020 Posted November 23, 2020 3 часа назад, 7sergeynazarov7 сказал: Сейчас и сделан Анонс сети А в первый predend 3 и второй канал /24 и канал Б первый второй prepend 3 /24 префикс /23 не анонсируется. На Cisco это реализовывается, а на микротике реально ? А почему вы /23 не анонсируете? Если у вас один канал упадет, то пол сети курят? Так получается? Вставить ник Quote
sdy_moscow Posted November 23, 2020 Posted November 23, 2020 Поскольку из-за НАТа трафик сам собой в сеть не запрыгнет, можно для разных абонентов прописать разные дефаулт гейтвэй. Вставить ник Quote
lugoblin Posted November 24, 2020 Posted November 24, 2020 18 hours ago, 7sergeynazarov7 said: на Микротике передачу данных с какого канала пришел в тот и ушел. Вам, наверное, надо чтобы ответ на входящие подключения уходил на гейт соответсвующего канала, а не на default gateway, который один. На Линуксах и Микротике это решается policy based routing, это позволяет базировать выбор маршрута не только на dst IP, но и на других параметрах пакета, например src IP. По сути, в системе присутствует несколько таблиц маршрутизации, одна из них дефолтная. Разными способами можно заставить применять ту или иную таблицу к исходящим пакетам. Описанно здесь, но не слишком детально: https://wiki.mikrotik.com/wiki/Manual:IP/Route#Forwarding_Information_Base Релевантный пример, описывает решение несколько иной задачи, но все элементы для вашего кейса там есть: https://wiki.mikrotik.com/wiki/Per-Traffic_Load_Balancing (в примере аплинк выбирается исходя из dst-port, вам надо исходя из src-address вашего интерфейса) Вставить ник Quote
7sergeynazarov7 Posted November 24, 2020 Author Posted November 24, 2020 18 hours ago, VolanD666 said: А почему вы /23 не анонсируете? Если у вас один канал упадет, то пол сети курят? Так получается? Нет, получается анонс сети осуществляется и в канал А и в канал Б, только сети поделены не целая /23, а две сети /24, балансируется это все дело через prepend. 18 hours ago, sdy_moscow said: Поскольку из-за НАТа трафик сам собой в сеть не запрыгнет, можно для разных абонентов прописать разные дефаулт гейтвэй. А пример можно ? И что будет если один gateway станет не рабочим ? Как это дело переключится ? 3 hours ago, lugoblin said: Вам, наверное, надо чтобы ответ на входящие подключения уходил на гейт соответсвующего канала, а не на default gateway, который один. На Линуксах и Микротике это решается policy based routing, это позволяет базировать выбор маршрута не только на dst IP, но и на других параметрах пакета, например src IP. По сути, в системе присутствует несколько таблиц маршрутизации, одна из них дефолтная. Разными способами можно заставить применять ту или иную таблицу к исходящим пакетам. Описанно здесь, но не слишком детально: https://wiki.mikrotik.com/wiki/Manual:IP/Route#Forwarding_Information_Base Релевантный пример, описывает решение несколько иной задачи, но все элементы для вашего кейса там есть: https://wiki.mikrotik.com/wiki/Per-Traffic_Load_Balancing (в примере аплинк выбирается исходя из dst-port, вам надо исходя из src-address вашего интерфейса) Вы правы "надо чтобы ответ на входящие подключения уходил на гейт соответсвующего канала" - именно это и нужно. Вставить ник Quote
pppoetest Posted November 24, 2020 Posted November 24, 2020 33 минуты назад, 7sergeynazarov7 сказал: Вы правы "надо чтобы ответ на входящие подключения уходил на гейт соответсвующего канала" - именно это и нужно. Так бы сразу и сказали, вам нужен pbr Вставить ник Quote
7sergeynazarov7 Posted November 24, 2020 Author Posted November 24, 2020 15 minutes ago, pppoetest said: Так бы сразу и сказали, вам нужен pbr А с BGP это все нормально срастется ? Вставить ник Quote
pppoetest Posted November 24, 2020 Posted November 24, 2020 Нормально, тут главное продумать куда будут ходить пакеты в случае падения того или оного канала, и в какие адреса отнатятся. Вставить ник Quote
7sergeynazarov7 Posted November 24, 2020 Author Posted November 24, 2020 3 hours ago, pppoetest said: Нормально, тут главное продумать куда будут ходить пакеты в случае падения того или оного канала, и в какие адреса отнатятся. https://nixman.info/?p=133 согласно этой статье не понравилась строчка out-interface=ether1 и out-interface=ether2 в случае падения выщестоящего магистрала переключение не произойдет. Подскажите коллеги у кого как реализовано ? /ip firewall nat add chain=srcnat action=masquerade out-interface=ether1 src-address=192.168.88.0/24 /ip firewall nat add chain=srcnat action=masquerade out-interface=ether2 src-address=192.168.89.0/24 Вставить ник Quote
lugoblin Posted November 24, 2020 Posted November 24, 2020 7 hours ago, 7sergeynazarov7 said: в случае падения выщестоящего магистрала переключение не произойдет Вы замечательную шпаргалку нашли, и её автор имеет толковую репутацию. Не произойдёт, но это совсем другая задача. Рекомендую достигнуть сначала одного, и уже потом решать другое. У меня под рукой примера нет, но я бы попробовал так: 1. В правилах NAT, убрать ограничение по src-address, оно всё равно достаточно бессмысленно. Пусть применяет srcnat ко всем пакетам что уходят по данному out-interface. От кого идут пакеты, всё равно решается в другом месте. 2. В кастомных таблицах маршруизации, прописать гейт обоих провайдеров, но с разными приоритетами. В одной пусть приоритет будет у первого провайдера, в другой у второго. 3. В кастомных таблицах маршруизации, добавить опцию check-gateway к каждому гейту.https://wiki.mikrotik.com/wiki/Manual:IP/Route#General_properties Если мне не изменяет память, у меня работало что-то похожее, но неважно обрабатывало flapping. Это ещё более другая задача. Вставить ник Quote
7sergeynazarov7 Posted November 25, 2020 Author Posted November 25, 2020 10 hours ago, lugoblin said: Вы замечательную шпаргалку нашли, и её автор имеет толковую репутацию. Не произойдёт, но это совсем другая задача. Рекомендую достигнуть сначала одного, и уже потом решать другое. У меня под рукой примера нет, но я бы попробовал так: 1. В правилах NAT, убрать ограничение по src-address, оно всё равно достаточно бессмысленно. Пусть применяет srcnat ко всем пакетам что уходят по данному out-interface. От кого идут пакеты, всё равно решается в другом месте. 2. В кастомных таблицах маршруизации, прописать гейт обоих провайдеров, но с разными приоритетами. В одной пусть приоритет будет у первого провайдера, в другой у второго. 3. В кастомных таблицах маршруизации, добавить опцию check-gateway к каждому гейту.https://wiki.mikrotik.com/wiki/Manual:IP/Route#General_properties Если мне не изменяет память, у меня работало что-то похожее, но неважно обрабатывало flapping. Это ещё более другая задача. Спасибо за диалог можно с Вами подискутировать на эту тему ? 1) src-address в правилах NAT, в данном случае у меня обеспечивает деление по пулам. Пример 10.0.0.0-10.0.28.0 к same no by dst xx.xxx.xxx.xx 1-й пул и 10.0.28.0-10.0.57.0 2 к same no by dst xx.xxx.xxx.xx 2-й пул. 2) Как это сделать не совсем понимаю. если в ip routes находится очень большая часть маршрутов. 3) Понятно. По поводу флапа согласен очень плохо отрабатывало если указывать out-interface Вставить ник Quote
VolanD666 Posted November 25, 2020 Posted November 25, 2020 Дк вы шлите /23 на все аплинки и /24 только в соотвествующие. По поводу pbr, там не получится делать маршрут через другой маршрут? Вставить ник Quote
Saab95 Posted November 25, 2020 Posted November 25, 2020 Просто надо поставить 2 микротика и на каждом анонсировать свою /24, НАТ делать там же и все пойдет куда надо. Вставить ник Quote
7sergeynazarov7 Posted November 25, 2020 Author Posted November 25, 2020 (edited) А как быть с одним, реально сделать синхронную передачу данных. Вообще чем опасна асинхронная передача данных. Edited November 25, 2020 by 7sergeynazarov7 Вставить ник Quote
lugoblin Posted November 25, 2020 Posted November 25, 2020 2 hours ago, 7sergeynazarov7 said: 1) src-address в правилах NAT, в данном случае у меня обеспечивает деление по пулам. Пример 10.0.0.0-10.0.28.0 к same no by dst xx.xxx.xxx.xx 1-й пул и 10.0.28.0-10.0.57.0 2 к same no by dst xx.xxx.xxx.xx 2-й пул. Примера вашего я не понял, но подозреваю что вы собираетесь этими правилами задать, какая сеть через какой аплинк пойдёт в Интернет. Типа пусть 192.168.88.0/24 выходит через ether1, а 192.168.89.0/24 через ether2. Оно раборает не так, интерфейс куда пакет пресылается определяется маршрутизацией а не параметрами правила NAT. /ip firewall nat add chain=srcnat action=masquerade out-interface=ether1 src-address=192.168.88.0/24 /ip firewall nat add chain=srcnat action=masquerade out-interface=ether2 src-address=192.168.89.0/24 С такой конфигурацией как у вас, action=masquerade будет применено только если пакет удовлетворяет обоим условиям: out-interface=ether1 и src-address=192.168.88.0/24. А если вдруг у вас заработает failover и через ether1 пойдут пакеты от 192.168.89.0/24, то NAT к ним применятся не будет, и провайдер их отбросит, т.к. приватные адреса не должны маршрутизироваться в публичных сетях. Читайте доку: https://wiki.mikrotik.com/wiki/Manual:IP/Firewall/NAT src-address (Ip/Netmaks, Ip range; Default: ) Matches packets which source is equal to specified IP or falls into specified IP range. Если вам надо чтобы пакет уходил с другим обратным адресом, не с адресом интерфейса, то это указывается параметром to-addresses . 2 hours ago, 7sergeynazarov7 said: 2) Как это сделать не совсем понимаю. если в ip routes находится очень большая часть маршрутов. Приоритет правила маршрутизации (которое вы добавляете /ip route add ...) конторолируется параметром distance. distance (integer[1..255]; Default: "1") Value used in route selection. Routes with smaller distance value are given preference. Смотрите https://wiki.mikrotik.com/wiki/Manual:IP/Route#General_properties Не пытайтесь настроить всё сразу. Делайте мелкие и контролируемые шаги, фиксируйте достигнутый функционал. 1 hour ago, Saab95 said: Просто надо поставить 2 микротика и на каждом анонсировать свою /24, НАТ делать там же и все пойдет куда надо. Кстати, да. Только для failover-а всё равно придётся странности мутить. 1 hour ago, 7sergeynazarov7 said: А как быть с одним, реально сделать синхронную передачу данных. Вообще чем опасна асинхронная передача данных. Да, реально. (Синхронную маршрутизацию, синхронная передача данных это про другое) Асинхронная маршрутизация опасна своей запутанностью. Будут глюки в функционале, зависящем от connection tracking, плохо предсказуемое поведение доступа, и вообще трудности с траблшутингом. Вставить ник 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.