Перейти к содержанию

Особенности работы OSPF в Mikrotik

Намедни собрал клиенту схему организации КПД с резервированием на основе EoIP-туннелей и OSPF.
Собрал — работает. Но ровно через полчаса точки переставали получать по OSPF дефолт. Проверка и перепроверка настроек, а так же обновление RouterOS до последней версии не помогло.
Еще одним нюансом было то, что дефолт приходил с совершенно неправильным костом и через резервный линк вместо основного.
Путем применения квадратно-гнездового инженерного метода (пальцем в небо), было установлено, что для того, чтобы выполнять фунцкцию ABR (сиречь, инжектировать в зону дефолтный маршрут), Микротику необходимо наличие интерфейса в backbone area. Что, с одной стороны, вроде бы логично (ABR должен быть связан с 0.0.0.0). С другой — как это влияет на инжектирование дефолта в зону — совершенно непонятно.

33 комментария

  1. Можно у Вас проконсультироваться по тонкостям работы OSPF в RouterOS? Столкнулся с одной проблемой.

    • admin admin

      Разумеется можно 🙂 Пишите здесь или на форуме

  2. На форуме зарегистрироваться не получается. На вопрос о создателе ядра Linux отвечаю Линус Торвальдс или Linus Torvalds — пишет ответ неверный. Поэтому спрашиваю здесь.
    Имеется сеть 192.168.0.0/16 с OSPF. К ней по vpn подключается ещё одна сеть 172.16.0.0/12. Необходимо настроить OSPF так, чтобы на обеих сторонах показывался только граничный роутер (сервер/клиент vpn). Остальные маршруты прописываем руками через этот самый шлюз. В одной связке такое сделать удалось, а во второй те же самые действия ни к чему не приводят.
    Не силен в OSPF. Поэтому подозреваю, что сделал неправильно и положительный результат работы на одной связке — всего лишь глюк RouterOS.

    • admin admin

      Там нужно два слова маленькими буквами. поправил вопрос.

    • admin admin

      А зачем вам статик-роуты, если у вас есть динамика? Тут, кмк, нужно плясать от дизайна в первую очередь — т.е. грамотно спроектировать, а потом уже думать над конкретной реализацией.

      • 192.168.0.0/16 — наша сеть. 172.16.0.0/12 — сеть сторонней организации и мы не хотим отдавать им информацию о своей топологии. Вот я и хочу, чтобы они видели лишь сервер VPN, а дальше до необходимых им серверов руками прописали маршруты через этот VPN-сервер.

        • admin admin

          Я стесняюсь спросить, а зачем тогда вам OSPF? настройте друг на друга статик-роуты прямо на сети друг друга. А доступ режьте фаерволами.

          • На нашей стороне куча роутеров и прописывать на каждом маршрут нереально.

    • admin admin

      И все-таки я не вижу смысла в OSPF, Этот протокол не предназначен для межсетевого взаимодействия.
      Если уж так хочется динамики, есть BGP, а в нем — весьма удобные фильтры.
      И ксти VPN в чьей зоне ответственности? Вы можете спокойно поднять OSPF внутри своей сети, сообщая роутерам о маршрутах, а на VPN-серверах использовать BGP либо статику

      • devi1 devi1

        спасибо за помощь. подумаю над вашим комментарием последним. Но пока всё-таки хочу с OSPF разобраться. не подскажете мануалов в картинках желательно на великом и могучем?

        • admin admin

          посмотрите на xgu.ru, там довольно подробно и понятно все расписано.

        • wolf_ktl wolf_ktl

          в OSPF можно сделать несколько областей … почитай про stub area

  3. du du

    А это не только микротику нужно. Этоиз стандарта растет. Дефолт носится обычно LSA type3, А LSA type3 могут оригинировать только ABR’ы. А ABR’ом является роутер имеющий активный интерефйс в area0.

    • Ну с другими железками я так не извращался, так что предсказать их поведение не могу

  4. satoo satoo

    а почему бы не воспользоваться фильтрами для ospf? там богатый фукнционал

    • С фильтрами на Микротике нужно быть предельно аккуратным, т.к. их поведение далеко не всегда именно такое, какое от них ожидаешь. BGP это тоже касается.
      В данном же случае, как уже правильно заметили, ноги росли именно из нюансов реализации стандарта OSPF в RouterOS, и, формально, такая схема и не должна была работать

  5. ascer ascer

    Подскажите, пожалуйста, как правильно сделать:
    Есть два офиса, связанные через vpn (pptp, поднято на микротиках). В офисах есть свои подсети. Хочется через ospf передать информацию.

    Получается интересная картина:
    1 ВПН поднимается
    2. Происходит обмен маршрутами (оба маршрутизатора успевают получить/передать маршруты)
    3. В маршруты попадает внешний интерфейс каждого офиса, т.е. офис1 получает маршрут до внешнего ip-адреса офиса2 через ospf с метрикой 110. Соответственно, офис1 пытается передавать следующую информацию не через шлюз по умолчанию, а через этот маршрут. Соответственно, ничего не выходит.
    4. Из-за неправильного маршрута до соседнего офиса рвется ВПН и пропадают ospf маршруты
    5. Переходим на пункт 1 😉

    Решили явным указанием сетей, но хочется без этого — чтобы анонсировать на одном маршрутизаторе подсеть и на другом все сразу увиделось.

    Пробовали через фильтры ospf — ничего не получилось (пробовали через add action=discard chain=ospf-out distance=0 protocol=connect)

    Есть способ отвязаться от анонсирования внешних ip адресов ?

    • Во-первых, я бы все-таки посоветовал правильно настроить фильтры и интерфейсы, участвующие в ospf
      т.к. если у вас анонсятся маршруты внешних интерфейсов, то либо на них включен ospf, либо у вас включен redisribute, а с ним надо аккуратнее обращаться.
      Во-вторых, вы можете указать static route на каждом из микротиков с указанием внешнего адреса соседа направлением на шлюз по умолчанию

  6. ascer ascer

    фильтры на уровне Ip firewall filter настроены, интерфейсы тоже указаны (все, что не надо в пассивном режиме).

    Редистриб не включен.

    Тут по логике он делает все правильно: у нас есть интерфейс eth1 с ip=1.2.3.4. Если в ospf networks стоит 0.0.0.0/0 (что очень хочется), то он передает это маршрут через ospf.

    Указать маршрут на внешний интерфейс не всегда можно — часто ip бывают динамические, бывают ppoe и прочие неожиданности.

    Как красиво выкопать ситуацию пока не могу предположить 🙁

    • Вы настраиваете ospf — при чем тут фаервол? Почитайте о фильтрации анононсов ospf
      В пассивном режиме нужны интерфейсы, которые должны анонситься в ospf, но при этом там не нужно установление ospf соседства. Если внешний интерфейс не нужно анонсить в ospf — зачем включать его в ospf?

      Вам нужно почитать хорошую книжку по OSPF, например от Cisco Press. Как только появится понимание работы ospf, тогда и проблем не будет.

      • ascer ascer

        1. про фаервол я сказал на уровне того, что у нас на самом деле много маршрутизоторов и мы дополнительно фильтруемся от ошибки (чтобы не пришло с левых интерфейсов)

        2. я, конечно, что-то не понимаю, но как можно отключить интерфейс из ospf? как я понял, в микротике интерфейсы для ospf всегда создаются автоматически. Их можно «скопировать» и переопределить параметры (например, активность, пароль), но явно отключить нельзя. Если это не так, то просьба указать

        3. Пробовали фильтровать на уровне /routing filter , но не удалось 🙁

        4. По книжке — дайте, плз, название — мы всегда открыты новым знаниям 🙂

        • 1. Все равно не понял, зачем вы упоминали фаервол в контексте маршрутов
          2. У меня сейчас нет под рукой микротика, чтобы проверить, но нет, не всегда они создаются автоматически 🙂 Как минимум динамически созданный ospf-интерфейс можно отключить (disabled=yes) там же в настройках (т.е. выключить на нем ospf-процесс). Либо же указать в ospf network не 0.0.0.0/0 (что само по себе странно), а более узкий диапазон.
          Читать раз
          Читать два
          3. routing-filters настраиваются, конечно, не всегда интуитивно-понятно, но работают. Т.е. создаете route-filer, а потом подключаете его на in/out в настройках ospf-процесса
          4. «Структура и реализация сетей на основе протокола OSPF» да хоть бы и вот

          • Насколько я понял, фильтры настраиваются только для взаимодействия между разными instance’ами. Внутри одной AS фильтры не работают. Или я что-то делаю не так?

            • Фильтры работают, когда нужно передать маршруты в другой протокол или другую area.

  7. ascer ascer

    1. Когда много маршрутов, интерфейсов и пр, то простой /ip firewall filter add action=jump chain=input comment=»Filter in OSPF» jump-target=inOSPF protocol=ospf и последующий разбор в этой цепочке вселяет уверенность, что от левых интерфейсов ничего не прийдет
    2. отключить нельзя (насколько я знаю). Как дополнительно, можно создать интерфейс «all» и выставить его в пасив, чтоб не флудил. Проблему решили через ручное указание подсетей. Дополнительная печаль в том, что агрегировать подсети нельзя — где-то 192.168.1.0/24, 172.30.30.0/24 и далее… агрегировать в одну подсеть/маску нельзя 🙁 Микротиковскую вики читал, вижу 🙁
    3. Как писал, фильтры пробовал, но не нашел правильную комбинацию 😉 по логике, в фильтре «out» мы можем фильтровать на уровне дистанции (0). На практике не проходит 🙁
    4. спасибо за литературу, прочитаю

    • 2. routing protocol ospf interface позволяет сделать disabled
      3. Немного не понял, что есть «фильтровать на уровне дистанции»

      • ascer ascer

        2. если ничего не делать, то ospf создает динамические интерфейсы. если тебе нужно переопределить какой-то интерфейс (указать пароль, например), то заходишь в динамику, копируешь его и выставляешь нужные параметры. В таком случае, динамический интерфейс убирается и остается твоя статика. Если ты ее отключишь, то сразу поднимется динамика. У меня как-то так. Просто задизейблить динамический интерфейс нельзя

        3. Я думал, что можно в фильтрах отключать анонсирование маршрутов имеющих определеленный distance (distance (integer: 0..255[ — integer:0..255];) match routes with specific administrative distance)

        • Я думаю, вам стоит копать все-таки в сторону ограничения по network.

          • ascer ascer

            Т.е. если мы хотим прописать дополнительную сеть (которая не входит в другие. заранее прописанные), то нам придется прописывать это на всех маршрутизаторах?
            Это «вердикт»?

            • Я считаю, что вам, сначала, нужно проработать дизайн OSPF.
              И уже исходя из дизайна производить настройки.

  8. ascer, добавьте в backbone только туннельные адреса. Сделайте redistribute-connected=as-type1, тогда получите то, что хотите и сможете фильтровать

    • ascer ascer

      Спасибо. попробую. Я думал, что фильтры будут действовать и внутри одной арии

Добавить комментарий

%d такие блоггеры, как: