Меню

Quagga ospf настройка debian



Установка и настройка Quagga

Всем привет! Я очень мало интересуюсь темой сетевого взаимодействия. Меня не прет от проектирования и построения различных сетей, но совсем недавно пришлось второй раз в жизни устанавливать себе на Linux программу Quagga. И снова я гуглил, много. Поэтому решил раз и навсегда закрепить инструкцию в быстром доступе. А учитывая то, что в интернете я не нашел ни одного мануала на русском языке, эта статья рискует стать кому нибудь полезной. Итак, для начала поймем, кто такая Quagga, и для чего она нужна, поехали!

Что такое Quagga

Это такой пакет программ, который позволяет компьютеру поддерживать протоколы динамической маршрутизации. К сожалению, а может быть и к счастью, quagga может быть установлена только на UNIX-подобные операционные системы. Грубо говоря — машина с настроенной quagga может играть роль маршрутизатора в сети.

Поддерживаемые протоколы: Static, OSPF, BGP, RIP.

Лично мне эта программа дважды понадобилась на лабораторных работах по сетям. У нас есть три маршрутизатора Cisco, а когда нужно четыре и больше, спасают линукс и квага. В общем, полезная это штука. Давайте перейдем к настройке.

Установка и настройка Quagga

sudo apt-get install quagga

Неожиданно, правда? Настройка поинтереснее, но тоже ничего сложного.

Шаг первый

Для начала нужно определиться, какие протоколы маршрутизации нужны, и включить соответствующие демоны. Включаются они в файле /etc/quagga/daemons . Открываем его от имени суперпользователя.

Источник

Quagga ospf настройка debian

OSPF — протокол динамической маршрутизации для локальных сетей. Динамическая маршрутизация — такая интересная штука, что ее необходимость часто понимаешь только тогда, когда сеть достигла критической величины, и кидаешься ее настраивать когда выхода просто нет, что бы завести дополнительный блок адресов(дополнительную подсеть), необходимо изменить настройки статической маршрутизации в десятке мест. Рассказывать, что лучше раньше чем, ситуация стала критичной, и лучше заранее настроить динамическую маршрутизацию я не буду. Просто покажу на маленьком примере, как настроить ospf.

Пусть у нас есть маленькая сеть, состоящая из трех подсетей, 3 маршрутизаторов и одного выхода в интернет. Из них, одна центральная (backbone) 192.168.0.0/24, сеть объединяющая маршрутизаторы. Сети 192.168.10.0.24 и 192.168.20.0/24 — клиентския сети, взаимную маршрутизацию которых мы и переводим на динамику.
Схема сети такова:

Установим quagga на всех маршрутизаторах:

cd /usr/ports/net/quagga/ make install clean

Перед сборкой появится диалог настройки сборки, для ospf рекомендую не устанавливать дополнительные настройки:

┌────────────────────────────────────────────────────────────────────┐ │ Options for quagga 0.99.10_3 │ │ ┌────────────────────────────────────────────────────────────────┐ │ │ │ [ ] ISISD Enable experimental ISIS daemon │ │ │ │ [ ] PAM PAM authentication for vtysh │ │ │ │ [ ] OSPF_NSSA NSSA support (RFC1587) │ │ │ │ [ ] OSPF_OPAQUE_LSA OSPF Opaque-LSA support (RFC2370) │ │ │ │ [ ] RTADV IPv6 Router Advertisements │ │ │ │ [ ] SNMP SNMP support │ │ │ │ [ ] TCPSOCKETS Use TCP/IP sockets for protocol daemons │ │ │ │ [ ] TCPMD5 Use experimental MD5 patch for BGP │ │ │ │ [ ] DLMALLOC Use dlmalloc (makes bgpd much faster) │ │ ├─└────────────────────────────────────────────────────────────────┘─┤ │ [ OK ] Cancel │ └────────────────────────────────────────────────────────────────────┘

По окончании установки, приступим к настройке, вообще настроить quagga можно двумя способами создать все файлы настроек или подключиться telnet к консоли quagga, которая эмулирует CLI Cisco и настраивать из коммандной строки(я всегда настраиваю именно через telnet):
1. Сначала скопируем дефалтовые файлы настройки, это мы делаем на всех трех маршрутизаторах.

cp /usr/local/share/examples/quagga/zebra.conf.sample /usr/local/etc/quagga/zebra.conf cp /usr/local/share/examples/quagga/ospf.conf.sample /usr/local/etc/quagga/ospfd.conf

2. Теперь в /etc/rc.conf включим автозагрузку quagga, это тоже делаем на всех трех маррутизаторах

и запустить quagga

3.Теперь можно приступать к непосредственной настройке, начнем с первого маршрутизатора Router1:
Подключимся к консоле:

telnet 127.0.0.1 ospfd

Пароль по умолчанию zebra
После того, как мы подключились к консоле вы полняем такую последовательность команд:

enable configure terminal router ospf router-id 192.168.0.1 network 192.168.0.0/24 area 0 neighbor 192.168.0.2 neighbor 192.168.0.3 default-information originate write memory

Описание команд:
enable — переход в режим администратора
configure terminal — переход в режим настройки
router ospf — указываем, что настраивать будем ospf
Теперь команды непосредственно настройки ospf:
router-id — идентификатор маршрутизатора, должен быть уникальным
network 192.168.0.0/24 area 0 — описывает сеть на основе которой мы строим ospf и указываем area 0 для нашей сети.
neighbor 192.168.0.2 — указываем что у нас в сети есть еще один маршрутизатор, то же мы указываем соотвественно и для третьего маршрутизатора.
default-information originate — указывает, что мы с этого маршрутизатора анонсируем маршрут по умолчанию, то есть дефолт шлюз в интернет.
write memory — сохраняем конфигурационный файл

Теперь переходим ко второму маршрутизатору, здесь последовательность команд будет такая:

enable configure terminal router ospf router-id 192.168.0.2 network 192.168.0.0/24 area 0 neighbor 192.168.0.1 neighbor 192.168.0.3 redistribute connected write memory

Здесь настройки немного изменились, мы установили router-id 192.168.0.2, указали neighbor 192.168.0.1 и заменили команду default-information originate на redistribute connected.
redistribute connected — эта настройка ospf указывает, что необходимо все сети подключенные к интерфейсам анонсировать по ospf своим партнерам.

Читайте также:  Настройка firewall zyxel usg

Настройки третьего маршрутизатора отличаются от настроек второго, только router-id 192.168.0.3 и neighbor 192.168.0.2 будет вместо neighbor 192.168.0.3.
То есть такая последовательность команд:

enable configure terminal router ospf router-id 192.168.0.3 network 192.168.0.0/24 area 0 neighbor 192.168.0.1 neighbor 192.168.0.2 redistribute connected write memory

На этом настройка закончена. Выйти из режима настройки можно используя комбинацию клавиш Ctrl+z.
Проверить работоспособность можно в консоли quagga с помощью команд:

show ip ospf neighbor

Эта команда выведет список активных «соседних» маршрутизаторов
И команда:

show ip ospf route

выведет список маршрутов, которые были получены по протоколу ospf.

Источник

Stepanoff Home Network

Unix Блог

10 июня 2008 10:19 пп

Настройка маршрутизации с помощью Quagga (zebra)

Quagga — пакет свободного программного обеспечения , позволяющий превратить обычный компьютер в высокопроизводительный маршрутизатор TCP/IP . Поддерживает UNIX‐подобные ОС, включая GNU/Linux . Quagga — это усовершенствованная версия GNU Zebra (остановленного в 2005 г.). Поддерживает использование нескольких протоколов маршрутизации:

  • Routing Information Protocol ( RIP ): v1, v2, v3,
  • Open Shortest Path First ( OSPF ): v2, v3,
  • Border Gateway Protocol ( BGP ): v4

Quagga состоит из базового ядра (core daemon) zebra, выполняющего роль промежуточного уровня абстракции (abstraction layer) ядра ОС , и предоставляющего Zserv API клиентам по протоколу TCP . Клиентами Zserv выступают службы ( демоны ):

  • ospfd (протокол OSPFv2 );
  • ripd (протокол RIP v1, V2);
  • ospf6d (протокол OSPFv3IPv6 );
  • ripngd (протокол RIP ng IPv6 );
  • bgpd (протокол BGPv4+ , включая поддержку multicast и IPv6 )).

Пакет quagga имеется в стандартных репозиториях большинства дистрибутивов, Ubuntu / Debian не исключение, установим его командой

Затем немного подправим конфиг файлы пакеты под наши нужды, настраивать будем OSPF и BGP
Соответственно надо включить нужные нам демоны в конфиге quagga, отредактируйте файл /etc/quagga/daemons до состояния приведенного ниже

# Entries are in the format: =(yes|no|priority)
# 0, «no» = disabled
# 1, «yes» = highest priority
# 2 .. 10 = lower priorities
# Read /usr/share/doc/quagga/README.Debian for details.
#
# Sample configurations for these daemons can be found in
# /usr/share/doc/quagga/examples/.
zebra=yes
bgpd=yes
ospfd=yes
ospf6d=no
ripd=no
ripngd=no
isisd=no

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

touch /etc/quagga/zebra.conf
touch /etc/quagga/ospfd.conf
touch /etc/quagga/bgpd.conf

Так же надо обязательно сменить владельца файлов для правильной работы демонов

chown quagga:quagga /etc/quagga/zebra.conf
chown quagga:quagga /etc/quagga/ospfd.conf
chown quagga:quagga /etc/quagga/bgpd.conf

Дальше можно наполнить содержанием конфигурационные файлы.
Начнем с /etc/quagga/zebra.conf, минимальная конфигурация для работы демона

!Имя хоста
hostname LinuxRouter
!пароль для доступа
password zebra
!пароль для административного доступа и настройки
enable password z3bRa

Далее перейдем к настройке OSPF, отредактируйте файл /etc/quagga/ospfd.conf, смените сеть 192.168.0.1/24 на вашу

!
! Zebra configuration saved from vty
! 2008/06/10 15:27:51
!
hostname main-server
password zebra
enable password z3bRa
!
interface eth0
!
interface eth1
!
interface lo
!
router ospf
ospf router-id 192.168.0.1
network 192.168.0.1/24 area 0.0.0.0
!
line vty
!

Теперь настроим BGP, зайдите в консоль демона bgpd и выполните несколько простых команд, замените адреса на реальные.

telnet 0 2605
Trying 0.0.0.0.
Connected to 0.
Escape character is ‘^]’.

User Access Verification

Password:
bgpd> enable
Password:
bgpd# configure terminal
bgpd(config)# router bgp 65530
bgpd(config-router)# network 192.168.0.0/24
bgpd(config-router)# neighbor 10.0.0.5 remote-as 65531
bgpd(config-router)# end
bgpd# write file

Доступ к настройкам демонов пакета quagga вы можете получить зайдя телнетом на порты

zebra 2601/tcp # zebra vty
ripd 2602/tcp # ripd vty (zebra)
ripngd 2603/tcp # ripngd vty (zebra)
ospfd 2604/tcp # ospfd vty (zebra)
bgpd 2605/tcp # bgpd vty (zebra)
ospf6d 2606/tcp # ospf6d vty (zebra)
ospfapi 2607/tcp # OSPF-API
isisd 2608/tcp # ISISd vty (zebra)

На этом настройка закончена, надеюсь эта статья была вам полезна 🙂

5 комментариев to “Настройка маршрутизации с помощью Quagga (zebra)”

SiX on 12 Июн 2008 at 20:54 #

Долго и геморно, а что делать.. Эхх.. Поехали..

Stepanoff on 13 Июн 2008 at 10:17 #

Не долго и просто 🙂

Виктор on 14 Июн 2008 at 19:10 #

Было бы интересно узнать поподробнее

Stepanoff on 14 Июн 2008 at 21:45 #

Подробнее описано в мануале 🙂

[…] сведений о протоколе валом, установка отлично описана здесь : Пакет quagga имеется в стандартных репозиториях […]

Источник

Динамическая маршрутизация в Linux

О чем эта статья

В статье описываются протоколы динамической маршрутизации, использующие для определения оптимальности того или иного маршрута различные алгоритмы – дистанционно-векторный и состояния связи. Приведен пример настройки конфигурации протокола OSPF для пакета Quagga. Описаны особенности демонов маршрутизации routed и gated.

Преимущества и недостатки динамической маршрутизации

Динамическая маршрутизация используется преимущественно в средних и крупных сетях со сложной, часто меняющейся инфраструктурой, где прежде всего важна оперативность отслеживания и устранения проблем связи. Это достигается за счет программного управления таблицами маршрутизации при помощи демонов (в unix-подобных системах для этих целей используются процессы routed и gated). Периодический обмен информацией между маршрутизаторами осуществляется с помощью соответствующих протоколов — на основании полученных данных корректируются записи в таблицах маршрутизации.

Читайте также:  Где хранятся настройки classic shell

Использование протоколов динамической маршрутизации значительно сокращает затраты труда системного администратора по обслуживанию сети. Однако следует принимать во внимание тот факт, что при этом повышается нагрузка на процессоры маршрутизаторов и, как следствие, на сеть в целом. Отчасти данная проблема решается за счет использования динамической балансировки сетевой нагрузки и прописывания статических маршрутов отдельным сегментам сети. Но динамическая маршрутизация обладает и другим серьезным недостатком — возрастает риск DDOS-атак или перехвата сетевого трафика. В данных условиях повышение безопасности сети становится одной из приоритетных задач системного администратора.

Внутри- и междоменные протоколы динамической маршрутизации

По мере разрастания локальной сети вопрос эффективной организации динамической маршрутизации становится более актуальным из-за ограничения объема памяти маршрутизаторов и, как следствия, снижения быстродействия в результате увеличения нагрузки на сеть. Для его решения используется понятие «автономная система» (AS), которое представляет собой совокупность локальных сетей, объединенных единой маршрутной политикой. Протоколы, осуществляющие маршрутизацию внутри автономных систем в пределах домена, — RIP/RIPv2, IS-IS, IGRP, OSPF — входят в соответствующую группу «Interior Routing Protocols». В свою очередь, протоколы, выполняющие функцию организации маршрутизации между AS и являющиеся, своего рода, пограничными, или междоменными, — EGP, BGP — объединяются в группу Exterior Routing Protocols.

RIP (Routing Information Protocol) относится к протоколам дистанционного-векторного типа, использующим узел назначения и число хопов (переходов между транзитными узлами) до него в качестве простейшей метрики маршрутизации. В маршрутные таблицы RIP записывается информация об IP-адресах узла назначения и ближайшего шлюза, а также таймерах маршрута. Каждые 30 секунд маршрутизаторы отправляют широковещательные RIP-сообщения с текущими данными своей маршрутной таблицы, обновляя, таким образом, информацию о сети. В Unix и GNU/Linux поддержку протокола RIP первой версии (RIPv1) осуществляет демон маршрутизации routed.

Одним из недостатков протокола RIP является слабая проработка механизма обнаружения неработающих транзитных узлов, в частности, в самом формате RIP-сообщения не предусмотрено какого-либо флага, который бы фиксировал данное изменение сети. Для выявления проблемы для каждого транзитного узла существует период TTL (Time-to-Live), равный шестикратному периоду рассылки векторов по сети. Маршрут считается недоступным, если по истечении указанного времени он не смог отправить соответствующий RIP-сообщение. На практике обновление маршрутных таблиц подобным образом происходит достаточно медленно и не синхронизировано. Нередко это приводит к появлению маршрутных петель, когда из-за образовавшихся некорректных записей в маршрутных таблицах пакеты начинают циркулировать между узлами вплоть до истечения их собственного TTL.

RIP является одним из старейших протоколов динамической маршрутизации, в силу чего его возможности зачастую уступают более современным аналогам. Он прост в настройке, однако имеет ограничение на число хопов (всего 15). Это делает невозможным его использование в крупных сетях, несмотря на доработку протокола до версии RIPv2, в которой была добавлена поддержка VLSM-адресации (масок подсетей переменной длины), multicast-рассылки и возможность агрегации маршрутов. Тем не менее, RIPv2 может использоваться в малых и средних сетях как альтернатива статической маршрутизации.

Более эффективным способом организации динамической маршрутизации внутри AS является использование протоколов состояния связи (link-state protocols). При этом метрикой маршрутизации служит не узел назначения и его удаленность от источника, а коэффициент качества обслуживания канала ближайших маршрутизаторов, или «соседей». Решение об оптимизации маршрута принимается на основании данных о пропускной способности, периоде задержки, надежности и общей загрузке канала, что позволяет обслуживать средние и крупные сети со сложной инфраструктурой.

К протоколам состояния связи относится OSPF (Open Shortest Part First), являющийся усовершенствованной версией протокола IS-IS и получивший широкое распространение в TCP/IP-сетях. Помимо стандартной поддержки VLSM-адресации, multicast-рассылки, возможности агрегации маршрутов и использования аутентификации, OSPF учитывает в формате рассылаемых сообщений данные поля TOS (Type-of-Service) для вычисления альтернативных маршрутов согласно текущему состоянию каналов связи. В Unix и Gnu/Linux OSPF входит в список протоколов, поддерживаемых демоном маршрутизации gated и пакетом GNU Zebra 1 или его усовершенствованной версией Quagga 2 .

Каждый маршрутизатор хранит информацию о состоянии соседних транзитных узлов, а также общую базу данных о топологии сети, представленную в виде графа. Актуальность состояния связей между соседними маршрутизаторами поддерживается за счет частого (от 10 до 30 секунд) обмена короткими hello-сообщениями. Информация об изменениях топологии всей сети передается с периодичностью раз в 30 минут отдельными пакетами «router links advertisment». Важной особенностью OSPF является поддержка разделения AS на несколько сегментов сети, каждый из которых имеет выделенный маршрутизатор (DR – Designated Router) и резервный (BDR – Backup Designated Router). Узлы, входящие в отдельный сегмент сети, получают информацию только от DR, который, в свою очередь, обменивается данными с другими выделенными маршрутизаторами. Такой метод позволяет поддерживать актуальность маршрутных таблиц и более эффективно распределять сетевую нагрузку.

При всех своих преимуществах, OSPF обладает некоторыми недостатками. В частности, даже при отсутствии ограничения на количество транзитных узлов в сети, не рекомендуется создавать отдельные сегменты, в которых количество маршрутизаторов превышает 50. В этом случае более эффективным будет равномерное распределение меньшего числа транзитных узлов по разным сегментам.

Читайте также:  Правильные настройки в вот

BGP (Border Gateway protocol), или BGP4, является на сегодняшний день единственным междоменным протоколом, способным передавать информацию между отдельными AS. Он обеспечивает функционирование сети Интернет, используя для передачи данных маршруты, проходящие через наименьшее число AS. При этом каждые 30 секунд для проверки работоспособности узла происходит широковещательная рассылка TCP-пакетов (KEEPALIVE). Полученная информация добавляется в маршрутные таблицы только после инкрементного обновления. В дальнейшем AS обмениваются текущими изменениями.

Алгоритм работы BGP4 похож на векторно-дистанционный, с той разницей, что вектор пути ориентируется на номер сети и набор атрибутов, позволяющих принимать решение о выборе оптимального маршрута. В их число входят обязательные атрибуты AS_PATH (список AS, через которые должен проходить пакет) и NEXT_HOP (адрес следующего BGP-маршрутизатора), а также дополнительные параметры, отвечающие за агрегацию маршрутов, приоритет AS и маршрутизаторов и т. д.

BGP4 также поддерживает CIDR – бесклассовую маршрутизацию. В Unix и GNU/Linux BGP4, как и OSPF, настраивается при помощи gated или Quagga.

Демоны маршрутизации routed и gated

Routed 3 – стандартный демон маршрутизации, поддерживающий только протокол RIPv1. Он прост в использовании, так как не требует дополнительной настройки и самостоятельно вносит изменения в маршрутную таблицу при обнаружении более оптимальных маршрутов. Тем не менее, он обладает рядом недостатков, в частности, отсутствием поддержки других протоколов, неудобством при одновременном использовании статических и динамических маршрутов. В этом плане предпочтение отдается демону gated 4 , который обладает более широкими возможностями. В число поддерживаемых им протоколов входят RIPv2, OSPF, BGP4 и некоторые другие. Вместе с тем настройка конфигурационного файла /etc/gated.conf, в котором прописываются не только опции самого демона, но и настройки протоколов и маршрутов, и чей синтаксис схож с языками программирования, может показать достаточно сложной тем, кто впервые сталкивается с настройкой маршрутизации при помощи данной утилиты.

Настройка протокола OSPF при помощи Quagga

Пакет Quagga, разработанный как ответвление GNU Zebra, представляет собой набор утилит, предназначенных для настройки протоколов динамической маршрутизации в unix-подобных системах. Он входит в стандартную сборку большинства дистрибутивов, поддерживает все распространенные версии протоколов (OSPFv2, OSPFv3, RIPv1, RIPv2, RIPng, BGP4) и достаточно прост в настройке и использовании. При использовании Quagga под GNU/LInux рекомендуется проверять наличие выставленных параметров ядра CONFIG_NETLINK, CONFIG_RTNETLINK и CONFIG_IP_MULTICAST – они обеспечивают взаимодействие ядра и демона zebra, а также поддержку multicast-рассылки, используемой демонами ripd и osfpd.

В зависимости от задачи, после установки пакета необходимо выставить соответствующие настройки в конфигурационном файле для активации демонов:

Демоны, активация которые не нужна, по умолчанию выставлены с параметром no. Zebra активируется всегда, так как является управляющим и отвечает за внесение изменений в маршрутную таблицу ядра, а также координирует работу остальных демонов.

Для каждой установленной службы существует возможность редактирования конфигурационных файлов через отдельный интерфейс vty, подключение к которому реализуется при помощи telnet. Для этого автоматически выделяется номер порта, информацию о котором необходимо добавить в /etc/services:

Для настройки демонов создается одноименный файл в /etc/quagga/ вида *.conf, при этом его владельцем должен быть пользователь quagga.

Запуск демонов осуществляется при помощи следующих команд:

Автономная система состоит из нескольких подсетей, объединенных тремя маршрутизаторами, которые также образуют отдельную подсеть (см. рис. 1) 5 . Один из маршрутизаторов является шлюзом по умолчанию для доступа в Интернет. Необходимо настроить динамическую маршрутизацию по протоколу OSPF между подсетями 192.168.10.0/24 и 192.168.12.0/24.

Рис. 1.

Для настройки OSPF необходимо установить пакет Quagga на каждом маршрутизаторе, а также отредактировать файл zebra.conf:

Router1

Router2

Router3

Таким же образом настраиваются конфигурационные файлы ospfd.conf:

Router1

Router2

Router3

После того как настройка закончена, необходимо запустить демоны и подключиться через telnet к tvy-интерфейсу ospfd:

Проверить работоспособность протокола можно, запустив в консоли Quagga команду show ip ospf neighbor, которая выводит список активных «соседних» маршрутизаторов. Команда show ip ospf route выводит список маршрутов, которые были получены по протоколу OSPF.

Средства мониторинга и анализа сети с динамической маршрутизацией

В большинстве случаев стандартные утилиты, при помощи которых конфигурируются протоколы динамической маршрутизации, уже содержат встроенные средства для ее мониторинга и анализа. Так, команда ospf_monitor, используемая в gated, позволяет увидеть подробную статистику по сконфигурированным маршрутным таблицам OSPF, а также информацию о соседних маршрутизаторах. Кроме того, поддержка логирования как в gated, так и в Quagga, позволяет системному администратору при создании соответствующего скрипта перенаправлять сообщения о критических ошибках на e-mail или другое средство оповещения.

Заключение

Использование динамической маршрутизации уместно в средних и крупных сетях с разветвленной и неоднородной топологией. Определенную поддержку здесь оказывают стандартные демоны либо специально разработанные утилиты, при помощи которых возможно создавать достаточно сложные конфигурации маршрутов. При этом в зависимости от поставленной задачи необходимо учитывать преимущества и недостатки каждого из протоколов динамической маршрутизации, выбранных для наиболее оптимального решения.

Источник

Adblock
detector