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

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

33 Comments

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

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

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

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

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

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

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

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

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

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

  4. Подскажите, пожалуйста, как правильно сделать:
    Есть два офиса, связанные через 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 адресов ?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  6. 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. спасибо за литературу, прочитаю

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

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

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

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

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

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

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

Leave a Reply