LINUX.ORG.RU
ФорумAdmin

Настройка Quagga. Блуждания в леcу из трёх маршрутизаторов.

 ,


0

2

Коллеги здравствуйте! Есть у нас в конторе старая циска, которая рулит автономной системой. Заменить её в случае не чем и задумался я, как бы её зарезервировать. В голову пришла идея - на этих самых линуксах сделать пограничный маршрутизатор, в качестве софта квага (на превый взгляд хауту и мануалов по ней много). С бгп я сталкиваюсь впервые и решил на стенде поковырять эту технологию, в общем простейшая схема из институтской лабы:

|R2|-(1.1.1.5/30)<----->(1.1.1.6/30)-|R3|-(1.1.1.9/30)<----->(1.1.1.10/30)-|R4|

где на схеме:
|Rх| - хосты/пограничные маршрутизаторы с квагой
(1.1.1.5/30) - их сетевые интерфейсы
<-----> связи между интерфейсами.

На маршруттизаторах использую сл. AS и блоки адресов:

R2: AS65538 100.0.2.0/24
R3: AS65539 100.0.3.0/24
R4: AS65540 100.0.4.0/24
З.Ы наверное картинку тут нельзя загрузить по какой то причине... Соответственно конфиги:
R2
hostname r2
password 123
enable password 123
log file /var/log/quagga/bgpd.log
log stdout
router bgp 65538
 bgp router-id 100.0.2.1
 network 100.0.2.0/24
 neighbor 1.1.1.6 remote-as 65539
 neighbor 1.1.1.6 description R3
 neighbor 1.1.1.6 next-hop-self
 address-family ipv6
 exit-address-family
 exit
line vty
 exec-timeout 0 0

R4
hostname r3
password 123
enable password 123
log file /var/log/quagga/bgpd.log
log stdout
router bgp 65539
 bgp router-id 100.0.3.1
 network 100.0.3.0/24
 neighbor 1.1.1.5 remote-as 65538
 neighbor 1.1.1.5 description R2
 neighbor 1.1.1.5 next-hop-self
 neighbor 1.1.1.10 remote-as 65540
 neighbor 1.1.1.10 description R4
 neighbor 1.1.1.10 next-hop-self
 address-family ipv6
 exit-address-family
 exit
line vty
 exec-timeout 0 0

R4
hostname r4
password 123
enable password 123
log file /var/log/quagga/bgpd.log
log stdout
router bgp 65540
 bgp router-id 100.0.4.1
 network 100.0.4.0/24
 neighbor 1.1.1.9 remote-as 65539
 neighbor 1.1.1.9 description R3
 neighbor 1.1.1.9 next-hop-self
 address-family ipv6
 exit-address-family
 exit
line vty
 exec-timeout 0 0
Интерфейсы на всех хостах 100.0.2.1 100.0.3.1 100.0.4.1 реальные и подняты. Ип связность между хостами тоже есть. Запускаю демоны bgpd на машинах, получаю следующий вид таблиц маршрутизации на хостах (например на R4, на остальных аналогично):
r4# show ip bgp 
BGP table version is 0, local router ID is 100.0.4.1
Status codes: s suppressed, d damped, h history, * valid, > best, = multipath,
              i internal, r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete
   Network          Next Hop            Metric LocPrf Weight Path
*> 100.0.2.0/24     1.1.1.9                                0 65539 65538 i
*> 100.0.3.0/24     1.1.1.9                  0             0 65539 i
*> 100.0.4.0/24     0.0.0.0                  0         32768 i

#и на самом хосте:

root@r4:/etc/quagga# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
1.1.1.8         0.0.0.0         255.255.255.252 U     0      0        0 ens18
100.0.2.0       1.1.1.9         255.255.255.0   UG    20     0        0 ens18
100.0.3.0       1.1.1.9         255.255.255.0   UG    20     0        0 ens18
100.0.4.0       0.0.0.0         255.255.255.0   U     0      0        0 ens19
Ну, думаю я, дело в шляпе.. Сейчас с фильтрами поиграюсь и можно будет пробывать соединение ромбиком, а там и в бой.. Проверяю связность R4 с R2 через R3, ожидая ответа от R2...
root@r4:/etc/quagga# ping 100.0.2.1
PING 100.0.2.1 (100.0.2.1) 56(84) bytes of data.
И тут я понимаю, что попал в тот самы лес из трёх маршрутизаторов - где успешно заблудился...). Смотрю tcpdump'ом, что творится на R2:
21:37:30.615950 IP 1.1.1.10 > 100.0.2.1: ICMP echo request
да.. пакеты приходят.. И ожидаемо, что они отправлятся с интерфейса 1.1.1.10 хоста R4, а хост R2 ничего про хост R4 не знает и в ответ отправить ничего не может.. По идее хост R2 знает про хост R4 как 100.0.4.0.. и если его пинговать с него, то пакеты проходят точно также в одностороннем порядке.. Получается надо отправлять пакеты непосредственно с интерфейсов 100.0.4.1 и 100.0.2.1. Пробую на R2:
ping 100.0.4.1 -I ens20
#Смотрю на том же R2...
22:00:23.020526 IP 100.0.2.1 > 100.0.2.1: ICMP host 100.0.4.1 unreachable
Да, похоже хост напрямую с 100.0.2.1 пытается достучатся до 100.0.4.1.. и логично что он его не видит. Пакеты похоже в ядре межу интерфейсами не маршрутизируются, хотя маршрутизация конечно же везде включена.. Спасибо всем, кто дочитал до этого места, вот тут хотел спросить. Возможно в таком случае следует указать какие нибудь опции в bgpd.conf? Или в данной ситуации это делается через iptables? Или я не понимаю самого принйипа этой технологии... Гуру, подскажите пожалуйста!


Не работал с квагой, но много с циской

neighbor 1.1.1.6 next-hop-self
next-hop-self нужен в случае если у вас сосед в такой же AS, т.е. iBGP, у вас же разные AS

gfh ★★★
()

R4: AS65540

Тебе надо просто циску подстраховать-разгрузить? Тогда сделай между бордерами iBGP на одинаковом номере AS, не извращайся с серыми номерами.

По классике, от бордеров должен быть вверх BGP до аплинков, отдельная BGP между бордерами обмениваться внешними (за пределами автономки) маршрутами, отдельно OSPF между ними для обмена внутренними маршрутами и собственно OSPF до более мелких роутеров.

yu-boot ★★★★★
()

В голову пришла идея - на этих самых линуксах сделать пограничный маршрутизатор, в качестве софта квага

Могу, в виде поддержки, сказать, что я так делал (с Кваггой), оно работает. :-) В конфиги не вглядывался тут, про использование iBGP и своей нормальной AS посоветовали правильно.

Хотя сейчас Bird более моден вроде бы, но сам я его не то, чтобы не пробовал в работе, но не настраивал. В маршрутизаторах Eltex ESR под их конфигурялкой Bird работает и у нас он уже больше года бордером.

AS ★★★★★
()

Немного вчитался.

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

«ромбик» - это что имеется ввиду? Есть два варианта построения для BGP: «каждый с каждым» (full mesh топология) и «все к route reflector» (звезда). Никаких ромбиков, пятиугольников и т.п. нет. Вроде бы.

AS ★★★★★
()
Последнее исправление: AS (всего исправлений: 1)
Ответ на: комментарий от AS

Коллеги, спасибо за ответы! Я пока тренируюсь на кошках и вникую в тонкости bgp. Пока для меня не понятно почему на маршрутизаторах нет прохождения пакетов от самой системы (100.0.2.1) в остальные узлы. Хотя если подключить к интерфейсу (100.0.2.1/24), маршрут которого анонсируется в другие AS компьютер (например с адресом 100.0.2.2./24), то с него все анонсируемые сети (100.0.2.0 100.0.3.0 100.0.4.0) др маршрутизаторов доступны - что меня приятно порадовало и в принципе решило проблему. Похоже это особенность кваги. Поиграюсь с квагой, посмотрю бирд, там выберу.

rum
() автор топика
Ответ на: комментарий от yu-boot

Циска 2921, туда приходит 3 провайдера, где то по 60 мбит\сек..

rum
() автор топика
Ответ на: комментарий от yu-boot

А какая модель и какую полосу тянет?

ESR-1500, заявлено у него до 12Гбит (на сайте есть), но у нас в пиках чуть больше 4. Это тянет.

Чисто бордером работает?

Да, 2 full view на нём и третий через iBGP с другого бордера. Базовой памяти там 4Гб, в край при этом получается, надо больше. Но там память у этой модели оказалась - обычная планка DDR3 с ECC, поменяли на 8. Добавить нельзя - слот один, хотя в плате дырки ещё под 3 слота.

AS ★★★★★
()
Последнее исправление: AS (всего исправлений: 1)
Ответ на: комментарий от gfh

Офтопик, но интересно как у вас показывает себя в работе оборудование Eltex?

В рамках используемых конфигураций нормально. У ESR баги в ПО есть некоторые, но они исправляются. На текущий вот момент sflow не работает из того, что знаю, но какой-то там план на исправление есть. У коммутаторов MES23xx на явные баги, как с ESR, не натыкался, опять же, в рамках используемых конфигураций.

AS ★★★★★
()
12 мая 2023 г.

Это реально quagga, может frr?

ne-vlezay ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.