cobald Posted October 9, 2015 · Report post Приветствую всех! Помогите, пожалуйста, найти решение для хотелки. Исходные данные: - 2 провайдера (если важно, никаких PPP, сразу на eth у одного статический адрес, у второго dhcp) - два микротика - коммутировать их можно как угодно, есть ещё свич с поддержкой VLAN - несколько машин в LAN Что хочу получить в итоге: сохранять связь машин в LAN с интернетом при отказе любого из провайдеров или самих роутеров. При этом в полнофункциональном режиме проброс портов до машины в LAN должен корректно работать для обоих провайдеров. При аварии роутера терять одного провайдера допустимо. Время переключения не первостепенно, простой допустим даже в минуты. В какие стороны пробовал копать сам: Если ставить только один микротик - то в него заводятся оба провайдера, check-gateway или скрипты, conntrack, PCC и нет проблем. Вот только если отрубается сам роутер по какой-то причине? (в частности, помер тут недавно UPS, на котором этот роутер жил и всё, связи больше нет) Ок, тоже рядовое решение - добавляем второй роутер, одного провайдера заводим на него, включаем VRRP. Но это решение для исходящего трафика. А на входящем закономерно получаю бяку: если из интернета приходит пакет через провайдера backup-роутера, тот передаётся машинке в LAN, а оттуда машинка отвечает на master-роутер, который об этом соединении ничего не знает и отправляет через своего провайдера. Т.е. не туда. Прежде чем строить какие-то костыли решил посоветоваться, нет ли какого-то более стандартного решения? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
cobald Posted October 11, 2015 · Report post Хочу чего-то очень странного? Или чего-то очень простого, что должно гуглиться за час? Вот такой вариант сильно наркоманский? В каждый микротик воткнуть по провайдеру, включить VRRP, между роутерами сделать отдельный VLAN. Исходящий из LAN-сегмента трафик раскидывать через PCC одну часть напрямую в провайдера этого роутера, вторую передавать второму роутеру по этому vlan'у. Входящий трафик от провайдера принудительно заворачивать в этот vlan для регистрации в conntrack второго роутера. Наверное, достаточно так отправлять только первый пакет соединения. Вроде бы в конечном итоге пакеты должны ходить куда надо. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
NiTr0 Posted October 11, 2015 · Report post Да, хочется чего-то очень странного, учитывая что микротики в принципе не могут шарить коннтрак между несколькими железками. Не, можно конечно попробовать сделать из буханки хлеба троллейбус, но работать оно будет через пень-колоду. Я бы поставил линукс-тазики, или если объем трафика небольшой - какое-то сохо, перешитое в опенврт, и поднял бы conntrackd из conntrack-tools чтобы синхронизировать коннтрак. Ну либо мириться с тем, что при смерти одного из роутеров сессии порвутся. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
cobald Posted October 11, 2015 (edited) · Report post Ну либо мириться с тем, что при смерти одного из роутеров сессии порвутся. Половина коннектов в любом случае порвётся - без роутера же будет физически недоступен подключённый к нему провайдер. То что порвутся соединения - это пофиг. Всё-таки довольно редкая ситуация и это гораздо лучше, чем вообще без связи оказаться. Трафика не слишком много - от 2k до 10k pps, 30-150мбит/с суммарно по обоим аплинкам. conntrackd и openwrt - хм, любопытно. Вроде бы даже на имеющийся RB951G-2HnD можно поставить openwrt. Только проверю, можно ли будет потом ros обратно впилить или это безвозвратно. Edited October 11, 2015 by cobald Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
cobald Posted October 14, 2015 · Report post Пробую собрать из пары openwrt. L3 топологию я ведь правильно понял? Входящий от провайдеров трафик фиксируется в conntrack, реплицируется на соседа и отдаётся напрямую в локальную сеть. А обратно: VRRP мастер получает пакет от клиента. По conntrack видит, через какого провайдера надо отправить пакет. Если это провайдер этого роутера - то отправляет напрямую. А если это провайдер другого роутера, то отправляет пакет на отдельный интерфейс до второго роутера. Второй роутер все входящие пакеты с этого линка отправляет сразу через своего провайдера. И ещё один vlan между роутерами понадобится для изоляции conntrackd от остального мира. Всё правильно? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
NiTr0 Posted October 14, 2015 · Report post Входящий от провайдеров трафик фиксируется в conntrack, реплицируется на соседа и отдаётся напрямую в локальную сеть. Реплицировать на соседа нафига? Скучно соседу, пускай чужие байтики полопатит? Запустить conntrackd, чтобы таблицы соединений синхронизировать. Оба аплинка завести на оба роутера через свич, и заюзать VRRP на всех интерфейсах. Итог - резервирование всего л3. Как-то так. Возможно и получится маршрутизировать пакеты согласно коннтрака, но как это просто сделать - не представляю. Хотя, если у провов нет фильтра по source IP, все будет работать и без VRRP на аплинках. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
cobald Posted October 15, 2015 · Report post Коряво написал - реплицируется состояние conntrack через conntrackd, а сами пакеты данных передаются в LAN напрямую этим роутером. У провайдеров фильтр по MAC'у точно, возможно ещё какие-то, не проверял. Соответственно в одном L2 домене вещать с двух одинаковых маков - хорошо это работать не будет. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
NiTr0 Posted October 15, 2015 · Report post У провайдеров фильтр по MAC'у точно, возможно ещё какие-то, не проверял. Соответственно в одном L2 домене вещать с двух одинаковых маков - хорошо это работать не будет. VRRP демон может иметь возможность использовать внешние скрипты - можно и гасить/поднимать интерфейсы с одинаковыми маками... Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Saab95 Posted October 18, 2015 · Report post Не в ту сторону смотрите - нужно больше микротиков. На каждого провайдера ставите по микротику, каждый анонсит дефолт через OSPF, через нетвоч пингуете что-то в инете, если пинг перестал ходить, убираете анонс дефолта. Этим решаете проблему отказа операторов и самих микротиков, если оператор отключится, или сломается микротик, эта ветка выйдет из работы. Далее ставите еще один микротик, к которому уже и подключаете потребителей. Если нужен проброс портов - то с первых двух делаете пробросы на третий, а уже с него пробросы на конечные станции. Если хотите зарезервировать микротики на каналах, хотя они обычно сами по себе не ломаются, просто ставите по микротику дополнительно, прописываете те же сетевые реквизиты, только другие сети для OSPF, они друг друга пингуют и в случае не доступности берут функционал на себя. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...