Привет подписчики...
Сегодня прям маленькая заметочка. В прошлом посте разобрались как вообще начать играться с Cumulus. В целом, все классно, vagrant прекрасен и позволяет автоматизировать огромную долю рутинной работы по настройке окружения. Но мне, конечно, хочется все настроить руками с нуля. Попробуем настроить простую OSPF сеть.
Схема довольно проста и понятная, попробуем настроить всю целиком, но посмотрим на сколько нам это позволит Cumulus. Как видно, у нас 4 зоны всех возможных типов, vitual link до одной из них, несколько внешних E1/E2 маршрутов (а значит редистрибуция), авторизация и многое другое.
Строить будем на голом ESXi, по классике. Важное замечание, я стремлюсь пощупать именно L3 функционал, поэтому все что касается L2 остается на совести ESXi. В следующем посте собираюсь прицельно поиграться с L2 функционалом. Плюс, не стоит ожидать чего-то сверх сложного, это просто настройка OSPF на Cumulus. Мне OSPF знаком, поэтому так проще знакомится с сетевым оборудованием.
Итак, 8 ненастроеных хостов соединеных vswitch'ами кушают всего около 5Гб оперативной памяти, что прям шикарно. Почему-то в прошлом посте на Virtualbox ситуация была намного хуже...
Базовая настройка
Итак, настройка адресов и имен хостов укладывается в несколько строк.
Разберем на примере О2. Прописываем hostname, указываем адреса на портах в сторону area0 и area1. Не забываем и про loopback, которые будем анонсировать в OSPF потом. Все адреса берем со схемы.
cumulus@cumulus:~$ net add hostname cmlsO2
cumulus@cumulus:~$ net add interface swp1 ip address 10.10.0.2/24
cumulus@cumulus:~$ net add interface swp2 ip address 10.10.1.1/30
cumulus@cumulus:~$ net add loopback lo ip address 10.0.10.2/32
cumulus@cumulus:~$ net add loopback lo ip address 10.12.0.0/16
Далее делаем net pending для проверки наших изменений и net commit для применения. Наблюдаем длинный diff, где подробно расписано что и где мы меняем.
Как уже упоминал в прошлом посте, мне очень нравится вывод команд Cumulus. Давайте взглянем на информацию по интерфейсам. Здесь у нас и адреса, и типы интерфейсов, и LLDP соседи, и скорости. В общем, ну прям здорово.
Как видно, базовая настройка проста и легко автоматизируется. Нужен простой jinja темплэйт команд и что-то, что будет раскидывать его по хостам. Второй вариант, который демонстрировал нам Cumulus в своем репозитории - просто подменять файлы конфигураций и рестартовать сервисы. Заострять на этом внимания пока что не будем, сегодня меня интересует не автоматизация. )
В общем, в результате мы имеем IP связность на линковых адресах. Все эти команды есть не что иное, как правка файлов конфигурации. Если мы взглянем на известный /etc/network/interfaces, то увидим как наши команды трансформировались в текстовый конфиг.
auto lo
iface lo inet loopback
# The primary network interface
address 10.0.10.1/32
address 10.11.0.0/16
auto eth0
iface eth0 inet dhcp
auto swp1
iface swp1
address 10.10.0.1/24
OSPF
Приступим к базовой настройке OSPF. В качестве "бэкэнда" Cumulus использует FRR, что является развитием Quagga. Кто теперь скажет, что Quagga для бедняков?
Здесь Cumulus представляет нам выбор. OSPF можно настроить напрямую через FRR средствами cisco-like модели конфигурации. Можно подсунуть файлы в нужные места и рестартануть ospfd. Можно пользоваться cli от Cumulus. Им я еще не пользовался для настройки OSPF, поэтому остановимся на нем.
Итак, базовый конфиг выглядит примерно так:
cumulus@cmlsO1:~$ net add ospf router-id 10.0.10.1
cumulus@cmlsO1:~$ net add ospf network 10.10.0.0/24 area 0.0.0.0
cumulus@cmlsO1:~$ net add ospf network 10.0.10.0/32 area 0.0.0.0
cumulus@cmlsO1:~$ net add ospf network 10.11.0.0/16 area 0.0.0.0
После применения такой стандартной конфигурации используя информацию со схемы, можно проверять соседство, маршруты и прочую информацию.
Как видно, ospf это просто процесс в системе, который является частью FRR.
Можно даже frr.conf конфиг посмотреть.
Базовая редистрибуция
На нашей схеме два роутера добавляют в топологию внешние маршруты.
На О1 применяем:
cumulus@cmlsO1:~$ net add routing route 192.168.0.0/24 null0
cumulus@cmlsO1:~$ net add ospf redistribute static metric 100
cumulus@cmlsO1:~$ net add ospf redistribute static metric-type 1
На 07:
cumulus@cmlsO7:~$ net add routing route 172.16.0.0/24 null0
cumulus@cmlsO7:~$ net add ospf redistribute static metric 100
cumulus@cmlsO7:~$ net add ospf redistribute static metric-type 2
Посмотрим на это дело со стороны О6. Два внешних маршрута появились.
Тупики
По "дизайну" у нас тут ворох тупиковых зон - Stub, Totally Stub и NSSA.
Totally stub
Ладно, сделаем из O6 totally stub зону. Со стороны O3 нужно добавить ключ no-summary. Обо всем этом подробнее я рассказывал здесь и здесь.
cumulus@cmlsO3:~$ net add ospf area 2 stub no-summary
cumulus@cmlsO6:~$ net add ospf area 2 stub
По какой-то причине внешние маршруты очень долго не хотели пропадать из ospf database O6, но в итоге мы наблюдаем типичную для "ваще тупиковой" зоны картину. Два LSA первого типа (router), один LSA второго типа (network) и LSA Type3 (summary) который обеспечивает выход из зоны. Ни записей о других зонах, ни тем более внешних префиксов.
NSSA
Тут же нас поджидает первый сюрприз. Я не нашел поддержку NSSA в Cumulus NCLI. Причем, я говорю именно о NCLI. Да, через нее видимо настроить этот функционал не получится, но ничто не мещает нам настроить это напрямую черезЕсть у нас еще и stub зона, правда с ней еще рано разбираться, ведь она "изолирована" от backbone области. Несите костыли...
Virtual Link
Вторая особенность, Cumulus NCLI не поддерживает настройку virtual-link. Снова воспользуемся vtysh от FRR.На стороне O2 добавляем одну строку напрямую через vtysh (консоль FRR). Cisco-like, а значит проблем с ситанксисом возникнуть не должно.
Теперь О8 должен стать обычным OSPF маршрутизатором со всеми нужными маршрутами.
Authentication
Последнее о чем стоит поговорить в этой "заметке". Настроим md5 между О3 и О6. Делается это буквально в две команды. Естественно, все работает.Заключение
В общем-то все ясно. Конечно же в базовом функционале в лабе все работает. Однако нравится мне Cumulus, вот прям нравится. Как уже говорил, он находится прям на стыке интересных мне областей - сети, автоматизация, Linux. Еще мне нравится в нем то, что он, как и многие другие продукты, выводят Linux на совсем другие высоты. Раньше, как мне кажется, было стыдно роутить на Quagga, теперь же это наоборот "стильно, модно, молодежно".
В следующем посте планирую быстро пробежаться по L2. Темка эта будет поинтереснее, чем L3. Далее посмотрим, либо MPLS, либо засосет в подготовку к RHCE. Да, вроде решил сдавать.
Комментариев нет:
Отправить комментарий