За динамичното рутиране OSPF съм писал в статията Динамично рутиране (OSPF). Вярно там се отнасяше за работа с Cisco рутери но идеята на работа си остава същата. Накратко динамичното рутиране е нужно за големи мрежи с много рутери. Трябва да знаете, че динамичното рутиране натоварва рутера доста повече спрямо статичното. В тази статия ще демонстрираме динамично рутиране от 3 зони. Area 0 (backbone area) е основната зона и към нея има още 2 зони (Ареа 1 и Area 2). Както знаем от предната статия многото зони разтоварват натовареността на рутерите чрез ограничаване на разпространението на всички маршрути между рутерите.

Ако ползвате само една зона то ще работите само чрез backbone area. Конфигурацията на OSPF се осъществява със следните стъпки: ● Настройка на router-id ● Конфигурация на зоните ● Конфигурация на мрежите
Както винаги започваме с настройка на инерфейсите участващи в Area 0, а именно ether1 и ether3. Ether1 сочи към Mikrotik 3, а ether3 сочи в локалната мрежа към клиентския компютър VCP6.
/ip address add address=172.16.0.1/24 interface=ether1 /ip address add address=10.0.1.1/24 interface=ether3
Забележете, за сега интерфейса ether2 не го дефинираме, защото той сочи Area 1 и ще се дефинира на по-късен етап за да стане по ясна работата на OSPF. Да покажем и през WinBOX.


По подразбиране имаме създаден интерфейс defaul в OSPF, ако няма просто го създаваме. Все пак първо проверяваме !
/routing ospf instance print Flags: X - disabled, * - default 0 * name="default" router-id=0.0.0.0 distribute-default=never redistribute-connected=no redistribute-static=no redistribute-rip=no redistribute-bgp=no redistribute-other-ospf=no metric-default=1 metric-connected=20 metric-static=20 metric-rip=20 metric-bgp=auto metric-other-ospf=auto in-filter=ospf-in out-filter=ospf-out
И през WinBOX.


Имаме наличен интерфейс по подразбиране който се нарича default. Ако нямаше, то долната команда е за създаване на такъв.
/routing ospf instance add name=default
И да се върнем на нашия случай. Вижда се, че router-id е 0.0.0.0, което означава, че рутерът ще използва един от IP адресите на рутера като router-ID. В повечето случаи се препоръчва да конфигурирате loopback интерфейса като router-ID. IP адресът на loopback интерфейса е виртуален, софтуерен адрес, използван за идентифициране на рутера в мрежата. Предимството на loopback адреса е, че той е винаги активен и не може да бъде недостъпен, както физически интерфейс. OSPF протоколът го използва за комуникация между рутери, идентифицирани от router-id. Нека настроим loopback.
/interface bridge add name=loopbackip /ip address add address=10.0.0.1/32 interface=loopback /routing ospf instance set 0 router-id=1.0.0.1


Създадохме бридж интерфейс със име loopbackip. Сега да му присвоим IP.


И за накрая да променим router-id на 1.0.0.1


Променихме стандартното Router ID: от 0.0.0.0 на 1.0.0.1. Ако бяхме оставили стойнността да е 0.0.0.0 то за стойност на ID щеше да приеме някое IP интерфейсите на рутера, а ние искаме точно определено ID. В крайна сметка получаваме следното:

Започваме с Area 0 (backbone). Трябва да се знае, че тя идва по подразбиране и area-id трябва да бъде 0.0.0.0. На практика нищо няма да правим, само ще проверим.
/routing ospf area print Flags: X - disabled, I - invalid, * - default # NAME AREA-ID TYPE DEFAULT-COST 0 * backbone 0.0.0.0 default


Сега трябва да вкараме мрежите участващи в OSPF.
/routing ospf network add network=172.16.0.0/24 area=backbone /routing ospf network add network=10.0.1.0/24 area=backbone

Обърнете внимание, за сега слагаме само мрежите участващи в Area 0. На по-късен етап ще сложим и мрежата за Area 1.
В Area 0 участва още един рутер, а именно Mikrotik 3. Да го настроим и него по аналогичен начин както Mikrotik 2. Няма да показвам как се прави през WinBox, защото ще стане много дълга темата.
/ip address add address=172.16.0.2/24 interface=ether1 /ip address add address=10.0.2.1/24 interface=ether3
/interface bridge add name=loopbackip /ip address add address=10.0.0.2/32 interface=loopback /routing ospf instance set 0 router-id=1.0.0.2
Да проверим за наличие на област по подразбиране.
/routing ospf area print Flags: X - disabled, I - invalid, * - default # NAME AREA-ID TYPE DEFAULT-COST 0 * backbone 0.0.0.0 default
/routing ospf network add network=172.16.0.0/24 area=backbone /routing ospf network add network=10.0.2.0/24 area=backbone
ip 10.0.1.2/24 10.0.1.1
Да пробваме да достъпим компютър VPC7
ping 10.0.2.2 84 bytes from 10.0.2.2 icmp_seq=1 ttl=62 time=1.208 ms 84 bytes from 10.0.2.2 icmp_seq=2 ttl=62 time=1.600 ms 84 bytes from 10.0.2.2 icmp_seq=3 ttl=62 time=1.560 ms 84 bytes from 10.0.2.2 icmp_seq=4 ttl=62 time=1.196 ms 84 bytes from 10.0.2.2 icmp_seq=5 ttl=62 time=1.296 ms
Имаме отговор от VPC7, значи динамичното рутиране работи.
ip 10.0.2.2/24 10.0.2.1
Да проверим и от тук връзката до VPC6.
ping 10.0.1.2 84 bytes from 10.0.2.2 icmp_seq=1 ttl=62 time=1.208 ms 84 bytes from 10.0.1.2 icmp_seq=2 ttl=62 time=1.600 ms 84 bytes from 10.0.1.2 icmp_seq=3 ttl=62 time=1.560 ms 84 bytes from 10.0.1.2 icmp_seq=4 ttl=62 time=1.196 ms 84 bytes from 10.0.1.2 icmp_seq=5 ttl=62 time=1.296 ms
И тук работи.
Започваме с neighbor.
/routing ospf neighbor print 0 instance=default router-id=1.0.0.2 address=172.16.0.2 interface=ether1 priority=1 dr-address=172.16.0.1 backup-dr-address=172.16.0.2 state="Full" state-changes=10 ls-retransmits=0 ls-requests=0 db-summaries=0 adjacency=11m52s

Mikrotik 2 обменя маршрути с Mikrotik 3 който има IP:172.16.0.2 и router-id:1.0.0.2 Да видим и рутиращата таблица.
/routing ospf route print # DST-ADDRESS STATE COST GATEWAY INTERFACE 0 10.0.1.0/24 intra-area 10 0.0.0.0 ether3 1 10.0.2.0/24 intra-area 20 172.16.0.2 ether1 2 172.16.0.0/24 intra-area 10 0.0.0.0 ether1

По същата логика проверяваме и Mikrotik 3. За сега свършваме с Area 0.
Създадохме Area 0 (backbone area). Това е коренна зона и тя е задължителна. Всички останали зони (Area 1 и Area 2) са свързани зони към Area 0. Получава се някаква йерархия в зоните. Area 0 е основната и към нея се прикачат останалите.
Ако се сещате Mikrtoik 2 го настроихме само за Area 0. Тук ще допълним настройките му, за да може да работи и в Area1. Mikrotik 2 е свързан с Area 1 чрез ether2. Наново няма да показвам подробно през WinBox за да не стане прекалено дълга статията. Настройваме интерфейс ether2.
/ip address add address=172.16.1.1/24 interface=ether2

Дефинираме втора област в Mikrotik 2.
/routing ospf area add name=area1 area-id=1.1.0.1

Да добавим мрежата участваща в Area 1.
/routing ospf network add network=172.16.1.0/24 area=area1

Втория рутер участващ в Area 1 това е Mikrotik 1. Започваме с настройка на интерфейсите.
/ip address add address=172.16.1.2/24 interface=ether1 /ip address add address=10.1.1.1/24 interface=ether3
Настройваме router-id.
/routing ospf area add name=area1 area-id=1.1.0.1
Настройваме мрежата.
/routing ospf network add network=172.16.1.0/24 area=area1 /routing ospf network add network=10.1.1.0/24 area=area1
ip 10.1.1.2/24 10.1.1.1
И ако пуснем някакъв ping до предишни компютри:
ping 10.0.2.2 84 bytes from 10.0.2.2 icmp_seq=1 ttl=61 time=0.755 ms 84 bytes from 10.0.2.2 icmp_seq=2 ttl=61 time=0.753 ms 84 bytes from 10.0.2.2 icmp_seq=3 ttl=61 time=0.733 ms 84 bytes from 10.0.2.2 icmp_seq=4 ttl=61 time=0.791 ms 84 bytes from 10.0.2.2 icmp_seq=5 ttl=61 time=0.784 ms
Всичко работи нормално и в Area 1.
В Area 2 участват рутери Mikrotik 3 и Микротик 4. Започваме с рутера имащ отношение към Area 0 и Area 2.
Довършваме с настройката на Mikrotik 3. Дефинираме интерфейса ether2.
/ip address add address=172.16.2.1/24 interface=ether2
Конфигуриране на OSPF област.
/routing ospf area add name=area2 area-id=1.2.0.1
Настройка на мрежата.
/routing ospf network add network=172.16.2.0/24 area=area2
Започваме с настройка на интерфейсите.
/ip address add address=172.16.2.2/24 interface=ether1 /ip address add address=10.2.1.1/24 interface=ether3
Настройваме router-id.
/routing ospf area add name=area2 area-id=1.2.0.1
Настройваме мрежата.
/routing ospf network add network=172.16.2.0/24 area=area2 /routing ospf network add network=10.2.1.0/24 area=area2
ip 10.2.1.2/24 10.2.1.1
И отново да проверим примерно до 10.1.1.2
ping 10.1.1.2 84 bytes from 10.1.1.2 icmp_seq=1 ttl=60 time=1.534 ms 84 bytes from 10.1.1.2 icmp_seq=2 ttl=60 time=1.063 ms 84 bytes from 10.1.1.2 icmp_seq=3 ttl=60 time=1.006 ms 84 bytes from 10.1.1.2 icmp_seq=4 ttl=60 time=0.914 ms 84 bytes from 10.1.1.2 icmp_seq=5 ttl=60 time=0.982 ms
Отново работи.
Мислех тази част да я отделя в отделна статия, но ще се постарая в сгъстен вид да представя една от оптимизациите. Чрез разделянето на зони в OSPF се намалява натоварването на рутерите, защото няма да се прехвърлят огромни таблици с маршрути по всички рутери, а ще се прехвърлят само таблиците отнасящи се за съответната зона. Може още да се оптимизира този процес като таблицата с маршрутите не взема клиентските компютри. Звучи доста объркващо но идеята е следната: - на интерфейсите на рутерите ether3 има закачен само клиентски компютър. Какъв е смисъла огромните таблици с маршрути да се предава на компютъра. - значи ще ограничим разпространението на таблиците като направим интерфейсите ether3 пасивни. Започваме с Mikrotik 1 и ще покажа как се прави през WinBox защото е по нагледно, след това ще покажа командата в терминал.


Първото нещо което трябва да обърнете внимание на интерфейс ether3 е, че е динамичен (най-отпред пред интерфейса има буква D). Това означава, че нищо не можете да променяте по него. За целта създаваме наново интерфейс ether3.

Създаваме същия интерфейс ether3 но казваме, че пасивен.

Обърнете внимание, ether3 стана пасивен интерфейс. Буквата преди интерфейса се промени на P. Сега да покажем командата през конзола.
/routing ospf interface add interface=ether3 passive=yes
Същото упражнение ще повторим за Mikrotik 2, Mikrotik 3 и Mikrotik 4.
/routing ospf interface add interface=ether3 passive=yes
И наново да пробваме от VPC8 да ping-нем VPC5.
ping 10.1.1.2 84 bytes from 10.1.1.2 icmp_seq=1 ttl=60 time=1.522 ms 84 bytes from 10.1.1.2 icmp_seq=2 ttl=60 time=1.112 ms 84 bytes from 10.1.1.2 icmp_seq=3 ttl=60 time=1.103 ms 84 bytes from 10.1.1.2 icmp_seq=4 ttl=60 time=1.096 ms 84 bytes from 10.1.1.2 icmp_seq=5 ttl=60 time=0.955 ms
Всичко е точно. Няма нарушение в работата и тежките маршрутни таблици не се разпространяват към компютрите. Темата е много обширна. Можете да защитите OSPF чрез ключове, можете да оптимизирате разпространението на рутиращите таблици с цел по-малко натоварване на рутерите но това е за следваща статия материал.