landy Posted October 20, 2015 · Report post Есть два роутера (CentOS), каждый подключен к отдельному провайдеру и считает его шлюзом по умолчанию. Между роутерами есть iBGP, между каждым роутером и его провайдером есть eBGP. Есть отдельная сеть /24 на роль DMZ. Дал каждому роутеру по интерфейсу в эту сеть, на них поднял vrrp (через keepalived), роутер 1 выдаёт себя за шлюз, роутер 2 его страхует. При таком раскладе весь трафик из DMZ уходит через роутер 1, пока он жив. Если роутер 1 внезапно погибает, роутер 2 подхватывает роль шлюза dmz, а интернет узнаёт о переменах через bgp. Работает, годится. Есть одно "но" - если у роутера 1 по какой-то причине теряется связь с dmz, сам он анонсировать себя по bgp как маршрут к dmz не перестаёт. При таком раскладе трафик из dmz выходит через роутер 2, а возвращается через роутер 1, где благополучно дохнет. Вопрос - как следует разбираться с такой ситуацией? Есть какие-то решения на уровне дизайна, кроме хитрой системы скриптовых костылей? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Liner's Posted October 20, 2015 · Report post всё очень просто, питание на роутер 1 надо подать через диодный мост на микротике (220В), на нём поставить ватчдог на роутер 1, как только пропадает пинг на него, микротик выключает poe на диод и гасит роутер1 по питанию до прихода экстренных служб Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
NiTr0 Posted October 20, 2015 · Report post Железяка в DMZ которая собссно и анонсирует маршруты в BGP? LACP (для уменьшения вероятности отказа)? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
landy Posted October 21, 2015 · Report post всё очень просто, питание на роутер 1 надо подать через диодный мост на микротике (220В), на нём поставить ватчдог на роутер 1, как только пропадает пинг на него, микротик выключает poe на диод и гасит роутер1 по питанию до прихода экстренных служб Бомба :D у меня были мысли через хитрые каналы скриптами довыключать, но вот так прямо по питанию... Если серьезно, то решение выглядит очень драконовским, хотя проблему решает. Железяка в DMZ которая собссно и анонсирует маршруты в BGP? LACP (для уменьшения вероятности отказа)? Можно поподробнее идею про железку в dmz? Перетащить ebgp к провайдерам на отдельную железку, живущую внутри dmz? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan Rostovikov Posted October 21, 2015 · Report post Роутер 1 должен анонсировать /24 (DMZ) по данным от какого-либо динамического протокола. Если у роутера 1 пропадет связность с подсетью /24 то динамический протокол (например OSPF) позволит Роутеру1 узнать об этом и тот прекратит анонсировать ее в BGP. В принципе аналогичное справедливо и для Роутера2 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
rdntw Posted October 21, 2015 · Report post Есть одно "но" - если у роутера 1 по какой-то причине теряется связь с dmz, сам он анонсировать себя по bgp как маршрут к dmz не перестаёт. При таком раскладе трафик из dmz выходит через роутер 2, а возвращается через роутер 1, где благополучно дохнет. анонсить сеть DMZ как connected. грубо говоря пока линк в UP то анонс уходит, ушел в down, анонса нет) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Night_Snake Posted October 21, 2015 · Report post Роутер 1 должен анонсировать /24 (DMZ) по данным от какого-либо динамического протокола. Если у роутера 1 пропадет связность с подсетью /24 то динамический протокол (например OSPF) позволит Роутеру1 узнать об этом и тот прекратит анонсировать ее в BGP. В принципе аналогичное справедливо и для Роутера2 два чая этому господину Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
sol Posted October 21, 2015 · Report post анонсить сеть DMZ как connected.грубо говоря пока линк в UP то анонс уходит, ушел в down, анонса нет) Не полностью решает проблему. Линк может быть, а связи при этом может не быть. Медиаконвертор завис. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted October 21, 2015 · Report post BFD Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
landy Posted October 21, 2015 · Report post Анонсировать DMZ как connected - не вариант, об этом уже упомянули. BFD - помогло бы ускорить обсыхание BGP, но мне по сути надо рвать подключение eBGP при разрыве сессии iBGP. Мимо. Анонсировать DMZ от третьего лица. Предположим между роутерами 1-2 и DMZ я ставлю роутеры 3 и 4 (чтобы иметь резервный шлюз из DMZ), через которые кручу DMZ. 3 и 4 дружу по какому-нибудь протоколу с 1 и 2. Пусть это будет ospf, между 1-2-3-4 один VLAN, все динамично друг с другом дружатся. На 1 и 2 редистрибуцию из ospf, играться с метриками... На бумаге выглядит реализуемым, но громоздким. Своя идея - на роутере 1 запускать раз в 5 секунд пинговалку до 2 через dmz-интерфейс. Если связность пропала, скриптом рвать ebgp с провайдером (вариант - убирать dmz из анонсов). 2 подхватывает шлюз, по ebgp всем всё рассказывает, наступает идиллия до момента, пока 1 не вернётся в строй. Когда связность восстанавливается, роль шлюза возвращается на 1, а скрипт возвращает ebgp к исходному состоянию. Выглядит реализуемым, несложным, но попахивает колхозом :) Всем спасибо за участие, будут ещё комментарии и предложения? PS. Три сообщения в сутки - это сильно. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
ollsanek Posted October 21, 2015 (edited) · Report post [*]Анонсировать DMZ от третьего лица. Предположим между роутерами 1-2 и DMZ я ставлю роутеры 3 и 4 (чтобы иметь резервный шлюз из DMZ), через которые кручу DMZ. 3 и 4 дружу по какому-нибудь протоколу с 1 и 2. Пусть это будет ospf, между 1-2-3-4 один VLAN, все динамично друг с другом дружатся. На 1 и 2 редистрибуцию из ospf, играться с метриками... На бумаге выглядит реализуемым, но громоздким. 3/4 ставьте просто в ДМЗ, не надо "между", и "дружите" их с 1/2 по iBGP, потом на 3/4 делаете редистрибъют коннектед, на 1/2 - не делаете. тогда если 2 видит 3/4, то отдаёт провайдеру маршруты, если не видит, то не отдаёт. [*]Своя идея - на роутере 1 запускать раз в 5 секунд пинговалку до 2 через dmz-интерфейс. Если связность пропала, скриптом рвать ebgp с провайдером (вариант - убирать dmz из анонсов). 2 подхватывает шлюз, по ebgp всем всё рассказывает, наступает идиллия до момента, пока 1 не вернётся в строй. Когда связность восстанавливается, роль шлюза возвращается на 1, а скрипт возвращает ebgp к исходному состоянию. Выглядит реализуемым, несложным, но попахивает колхозом :) если работает правильно, коментарии в коде/конфигах есть и в вики всё задокументировано, то это фантомные ароматы. Edited October 21, 2015 by ollsanek Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
NiTr0 Posted October 21, 2015 · Report post Своя идея - на роутере 1 запускать раз в 5 секунд пинговалку до 2 через dmz-интерфейс. Если связность пропала, скриптом рвать ebgp с провайдером (вариант - убирать dmz из анонсов). Упал шлюз 2. Связность пропала. Шлюз 1 - скукожился тоже. И?... Если уж колхозить - я бы vrrp на всех ифейсах устроил, и запускал бы bgpd на одной из нод этого "кластера". Хотя все равно надо по-хорошему еще одна нода для кворума... Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
landy Posted October 22, 2015 · Report post Упал шлюз 2. Связность пропала. Шлюз 1 - скукожился тоже. И?... Спасибо, дельное замечание. 3/4 ставьте просто в ДМЗ, не надо "между", и "дружите" их с 1/2 по iBGP, потом на 3/4 делаете редистрибъют коннектед, на 1/2 - не делаете. тогда если 2 видит 3/4, то отдаёт провайдеру маршруты, если не видит, то не отдаёт. Сейчас погоняю такой вариант, отпишусь по результатам. В первом приближении завелось. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
landy Posted October 26, 2015 · Report post Косяк нечаянно нагрянул. Если трафик порождается откуда-то из сетей резервного провайдера, то он очевидным образом идёт через роутер 2, а обратно через 1, т.е. рушится внутри. Попробую добавить к схеме conntrackd... Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
martini Posted October 26, 2015 · Report post надо подать через диодный мост на микротике (220В), на нём поставить ватчдог на роутер 1, как только пропадает пинг на него, микротик выключает poe на диод и гасит роутер1 по питанию Saab после прочтения в блаженстве ))) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
NiTr0 Posted October 26, 2015 · Report post Косяк нечаянно нагрянул. Если трафик порождается откуда-то из сетей резервного провайдера, то он очевидным образом идёт через роутер 2, а обратно через 1, т.е. рушится внутри. Попробую добавить к схеме conntrackd... У вас что, нат? Если нет - то ниего не должно рушиться, и conntrackd не спасет. А если трафик криво ходит - смотрите rp_filter Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
ollsanek Posted October 28, 2015 · Report post Косяк нечаянно нагрянул. Если трафик порождается откуда-то из сетей резервного провайдера, то он очевидным образом идёт через роутер 2, а обратно через 1, т.е. рушится внутри. Попробую добавить к схеме conntrackd... У вас что, нат? Если нет - то ниего не должно рушиться, и conntrackd не спасет. А если трафик криво ходит - смотрите rp_filter не, там скорее всего, просто стейтфул фаервол и конекты отлетают по таймауту, т.к. на "2" нет ответного трафика, а на "1" соединение не создано и пакеты вообще дропаются. landy - пишите как получается. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
landy Posted December 1, 2015 · Report post ollsanek NiTr0 Всё оказалось проще - у провайдера были свои прихотливые настройки в плане доверия анонсам из интернета и от клиентов. Месяц мучал провайдера - получил перенастроенный local preference. Коммуните через него как-то своенравно ходили. В принципе, схема действительно рабочая. Сейчас буду ловить тараканов в плане доступа изнутри - у меня тут своё тяжелое наследство. Возможно, по итогам даже рожу статью :) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
YuryD Posted December 1, 2015 · Report post всё очень просто, питание на роутер 1 надо подать через диодный мост на микротике (220В), на нём поставить ватчдог на роутер 1, как только пропадает пинг на него, микротик выключает poe на диод и гасит роутер1 по питанию до прихода экстренных служб Круть :) Вспомнились советские счпу, с их корзинами питания. Каждый источник имел предохранитель плавкий, тиристор в козу, и стабилитрон для контроля выхода. Как напряжение на выходе превышало номинал, открывался стабилитрон и открывал тиристор. Тиристор коротил выход источника и пережигал предохранитель :) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vmoroz Posted December 1, 2015 (edited) · Report post Круть :) Вспомнились советские счпу, с их корзинами питания. Каждый источник имел предохранитель плавкий, тиристор в козу, и стабилитрон для контроля выхода. Как напряжение на выходе превышало номинал, открывался стабилитрон и открывал тиристор. Тиристор коротил выход источника и пережигал предохранитель :) что-там счпу... на подстанциях 110кВ без выключателей! (называется мы придумали как экономить), защита трансформатора выполнена по классической схеме (газовая, диф, мтз и т.д.) вот только нет выключателя, а есть отделитель и короткозамыкатель, который принудительно создает замыкание на землю (одну из фаз принудительно заземляет) и находящиеся в несколько км питающий центр видя что на линии произошло КЗ, отключает ее на 6-8 сек. (за это время на подстанции где произошла авария должны отключится отделители), через 6-8 сек. линия включается по АПВ (автоматическое повторное включение), если отделители сработали, ура, если что-то пошло не так, включение на кз и линия отключается еще раз но уже без АПВ....а Вы говорите тиристор в козу... Edited December 1, 2015 by vmoroz Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...