Jump to content
Калькуляторы

mikrotik, резервирование роутера и conntrack когда VRRP надо дополнить чем-то ещё...

Приветствую всех!

 

Помогите, пожалуйста, найти решение для хотелки.

 

Исходные данные:

- 2 провайдера (если важно, никаких PPP, сразу на eth у одного статический адрес, у второго dhcp)

- два микротика

- коммутировать их можно как угодно, есть ещё свич с поддержкой VLAN

- несколько машин в LAN

 

Что хочу получить в итоге: сохранять связь машин в LAN с интернетом при отказе любого из провайдеров или самих роутеров. При этом в полнофункциональном режиме проброс портов до машины в LAN должен корректно работать для обоих провайдеров. При аварии роутера терять одного провайдера допустимо. Время переключения не первостепенно, простой допустим даже в минуты.

 

В какие стороны пробовал копать сам:

Если ставить только один микротик - то в него заводятся оба провайдера, check-gateway или скрипты, conntrack, PCC и нет проблем.

Вот только если отрубается сам роутер по какой-то причине? (в частности, помер тут недавно UPS, на котором этот роутер жил и всё, связи больше нет)

Ок, тоже рядовое решение - добавляем второй роутер, одного провайдера заводим на него, включаем VRRP. Но это решение для исходящего трафика. А на входящем закономерно получаю бяку: если из интернета приходит пакет через провайдера backup-роутера, тот передаётся машинке в LAN, а оттуда машинка отвечает на master-роутер, который об этом соединении ничего не знает и отправляет через своего провайдера. Т.е. не туда.

 

Прежде чем строить какие-то костыли решил посоветоваться, нет ли какого-то более стандартного решения?

Share this post


Link to post
Share on other sites

Хочу чего-то очень странного? Или чего-то очень простого, что должно гуглиться за час?

 

Вот такой вариант сильно наркоманский?

В каждый микротик воткнуть по провайдеру, включить VRRP, между роутерами сделать отдельный VLAN.

Исходящий из LAN-сегмента трафик раскидывать через PCC одну часть напрямую в провайдера этого роутера, вторую передавать второму роутеру по этому vlan'у.

Входящий трафик от провайдера принудительно заворачивать в этот vlan для регистрации в conntrack второго роутера. Наверное, достаточно так отправлять только первый пакет соединения.

Вроде бы в конечном итоге пакеты должны ходить куда надо.

Share this post


Link to post
Share on other sites

Да, хочется чего-то очень странного, учитывая что микротики в принципе не могут шарить коннтрак между несколькими железками. Не, можно конечно попробовать сделать из буханки хлеба троллейбус, но работать оно будет через пень-колоду.

 

Я бы поставил линукс-тазики, или если объем трафика небольшой - какое-то сохо, перешитое в опенврт, и поднял бы conntrackd из conntrack-tools чтобы синхронизировать коннтрак.

 

Ну либо мириться с тем, что при смерти одного из роутеров сессии порвутся.

Share this post


Link to post
Share on other sites

Ну либо мириться с тем, что при смерти одного из роутеров сессии порвутся.

Половина коннектов в любом случае порвётся - без роутера же будет физически недоступен подключённый к нему провайдер.

То что порвутся соединения - это пофиг. Всё-таки довольно редкая ситуация и это гораздо лучше, чем вообще без связи оказаться.

 

Трафика не слишком много - от 2k до 10k pps, 30-150мбит/с суммарно по обоим аплинкам.

conntrackd и openwrt - хм, любопытно. Вроде бы даже на имеющийся RB951G-2HnD можно поставить openwrt. Только проверю, можно ли будет потом ros обратно впилить или это безвозвратно.

Edited by cobald

Share this post


Link to post
Share on other sites

Пробую собрать из пары openwrt. L3 топологию я ведь правильно понял?

post-130384-068384500 1444829085_thumb.png

Входящий от провайдеров трафик фиксируется в conntrack, реплицируется на соседа и отдаётся напрямую в локальную сеть.

А обратно: VRRP мастер получает пакет от клиента. По conntrack видит, через какого провайдера надо отправить пакет. Если это провайдер этого роутера - то отправляет напрямую. А если это провайдер другого роутера, то отправляет пакет на отдельный интерфейс до второго роутера. Второй роутер все входящие пакеты с этого линка отправляет сразу через своего провайдера.

И ещё один vlan между роутерами понадобится для изоляции conntrackd от остального мира.

 

Всё правильно?

Share this post


Link to post
Share on other sites

Входящий от провайдеров трафик фиксируется в conntrack, реплицируется на соседа и отдаётся напрямую в локальную сеть.

Реплицировать на соседа нафига? Скучно соседу, пускай чужие байтики полопатит?

 

Запустить conntrackd, чтобы таблицы соединений синхронизировать. Оба аплинка завести на оба роутера через свич, и заюзать VRRP на всех интерфейсах. Итог - резервирование всего л3. Как-то так.

 

Возможно и получится маршрутизировать пакеты согласно коннтрака, но как это просто сделать - не представляю. Хотя, если у провов нет фильтра по source IP, все будет работать и без VRRP на аплинках.

Share this post


Link to post
Share on other sites

Коряво написал - реплицируется состояние conntrack через conntrackd, а сами пакеты данных передаются в LAN напрямую этим роутером.

У провайдеров фильтр по MAC'у точно, возможно ещё какие-то, не проверял. Соответственно в одном L2 домене вещать с двух одинаковых маков - хорошо это работать не будет.

Share this post


Link to post
Share on other sites

У провайдеров фильтр по MAC'у точно, возможно ещё какие-то, не проверял. Соответственно в одном L2 домене вещать с двух одинаковых маков - хорошо это работать не будет.

VRRP демон может иметь возможность использовать внешние скрипты - можно и гасить/поднимать интерфейсы с одинаковыми маками...

Share this post


Link to post
Share on other sites

Не в ту сторону смотрите - нужно больше микротиков.

 

На каждого провайдера ставите по микротику, каждый анонсит дефолт через OSPF, через нетвоч пингуете что-то в инете, если пинг перестал ходить, убираете анонс дефолта. Этим решаете проблему отказа операторов и самих микротиков, если оператор отключится, или сломается микротик, эта ветка выйдет из работы.

Далее ставите еще один микротик, к которому уже и подключаете потребителей. Если нужен проброс портов - то с первых двух делаете пробросы на третий, а уже с него пробросы на конечные станции.

Если хотите зарезервировать микротики на каналах, хотя они обычно сами по себе не ломаются, просто ставите по микротику дополнительно, прописываете те же сетевые реквизиты, только другие сети для OSPF, они друг друга пингуют и в случае не доступности берут функционал на себя.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this