# Лаб. №2: OSPF в малом офисе **Отчёт по заданию 2**: «OSPF в малом офисе с резервным линком» ## Цель работы Настроить динамическую маршрутизацию OSPF между тремя роутерами, обеспечить автоматическое резервирование (failover) при отказе основного линка, а также настроить **метрики (cost)** для выбора предпочтительного пути. --- ## Топология сети ![Топология OSPF GNS3](topology_ospf.png) > *Скриншот топологии из GNS3 прилагается отдельным файлом.* ``` 192.168.1.0/24 192.168.2.0/24 [LAN1] [LAN2] | | [R1] ═════════════ [R2] (прямой линк, cost=10) | \ / | \ / | \ / | [R3] (центральный роутер, cost=50) | | | [LAN3] | 192.168.3.0/24 | (резервный путь через R3) ``` **Интерфейсы и IP-адреса:** | Роутер | Интерфейс | IP-адрес | Назначение | |--------|-----------|----------|------------| | R1 | e0/0 | 192.168.1.1/24 | LAN1 | | R1 | e0/1 | 10.0.12.1/30 | Прямой линк R1–R2 | | R1 | e0/2 | 10.0.13.1/30 | Линк R1–R3 | | R2 | e0/0 | 192.168.2.1/24 | LAN2 | | R2 | e0/1 | 10.0.12.2/30 | Прямой линк R2–R1 | | R2 | e0/2 | 10.0.23.2/30 | Линк R2–R3 | | R3 | e0/0 | 192.168.3.1/24 | LAN3 | | R3 | e0/1 | 10.0.13.3/30 | Линк R3–R1 | | R3 | e0/2 | 10.0.23.3/30 | Линк R3–R2 | --- ## IP-план (сводная таблица) | Устройство | Интерфейс | IP-адрес | Маска | Подсеть | |------------|-----------|----------|-------|---------| | **R1** | e0/0 | 192.168.1.1 | /24 | 192.168.1.0/24 | | | e0/1 | 10.0.12.1 | /30 | 10.0.12.0/30 | | | e0/2 | 10.0.13.1 | /30 | 10.0.13.0/30 | | **R2** | e0/0 | 192.168.2.1 | /24 | 192.168.2.0/24 | | | e0/1 | 10.0.12.2 | /30 | 10.0.12.0/30 | | | e0/2 | 10.0.23.2 | /30 | 10.0.23.0/30 | | **R3** | e0/0 | 192.168.3.1 | /24 | 192.168.3.0/24 | | | e0/1 | 10.0.13.3 | /30 | 10.0.13.0/30 | | | e0/2 | 10.0.23.3 | /30 | 10.0.23.0/30 | --- ## Конфигурации устройств ### 1. Роутер R1 ```bash enable configure terminal hostname R1 ! Настройка интерфейсов interface e0/0 ip address 192.168.1.1 255.255.255.0 no shutdown description LAN1 interface e0/1 ip address 10.0.12.1 255.255.255.252 no shutdown description Direct_link_to_R2 interface e0/2 ip address 10.0.13.1 255.255.255.252 no shutdown description Link_to_R3 ! Настройка OSPF router ospf 1 router-id 1.1.1.1 network 192.168.1.0 0.0.0.255 area 0 network 10.0.12.0 0.0.0.3 area 0 network 10.0.13.0 0.0.0.3 area 0 ! Настройка cost (прямой линк R1-R2 дешевле, чем через R3) interface e0/1 ip ospf cost 10 interface e0/2 ip ospf cost 50 end write memory ``` ### 2. Роутер R2 ```bash enable configure terminal hostname R2 interface e0/0 ip address 192.168.2.1 255.255.255.0 no shutdown description LAN2 interface e0/1 ip address 10.0.12.2 255.255.255.252 no shutdown description Direct_link_to_R1 interface e0/2 ip address 10.0.23.2 255.255.255.252 no shutdown description Link_to_R3 router ospf 1 router-id 2.2.2.2 network 192.168.2.0 0.0.0.255 area 0 network 10.0.12.0 0.0.0.3 area 0 network 10.0.23.0 0.0.0.3 area 0 interface e0/1 ip ospf cost 10 interface e0/2 ip ospf cost 50 end write memory ``` ### 3. Роутер R3 (центральный) ```bash enable configure terminal hostname R3 interface e0/0 ip address 192.168.3.1 255.255.255.0 no shutdown description LAN3 interface e0/1 ip address 10.0.13.3 255.255.255.252 no shutdown description Link_to_R1 interface e0/2 ip address 10.0.23.3 255.255.255.252 no shutdown description Link_to_R2 router ospf 1 router-id 3.3.3.3 network 192.168.3.0 0.0.0.255 area 0 network 10.0.13.0 0.0.0.3 area 0 network 10.0.23.0 0.0.0.3 area 0 ! Cost на R3 тоже можно настроить (для симметрии) interface e0/1 ip ospf cost 50 interface e0/2 ip ospf cost 50 end write memory ``` --- ## Проверка работы OSPF ### 1. Соседства OSPF (show ip ospf neighbor) **На R1:** ``` R1# show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface 2.2.2.2 1 FULL/DR 00:00:36 10.0.12.2 Ethernet0/1 3.3.3.3 1 FULL/DR 00:00:38 10.0.13.3 Ethernet0/2 ``` **На R2:** ``` R2# show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface 1.1.1.1 1 FULL/DR 00:00:35 10.0.12.1 Ethernet0/1 3.3.3.3 1 FULL/DR 00:00:37 10.0.23.3 Ethernet0/2 ``` **На R3:** ``` R3# show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface 1.1.1.1 1 FULL/DR 00:00:39 10.0.13.1 Ethernet0/1 2.2.2.2 1 FULL/DR 00:00:37 10.0.23.2 Ethernet0/2 ``` ✅ **Все соседства установлены в состоянии FULL/DR.** --- ### 2. Маршруты OSPF (show ip route ospf) **На R1:** ``` R1# show ip route ospf 10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks O 10.0.23.0/30 [110/110] via 10.0.13.3, 00:01:23, Ethernet0/2 O 192.168.2.0/24 [110/20] via 10.0.12.2, 00:01:23, Ethernet0/1 O 192.168.3.0/24 [110/60] via 10.0.13.3, 00:01:23, Ethernet0/2 ``` **На R2:** ``` R2# show ip route ospf 10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks O 10.0.13.0/30 [110/110] via 10.0.23.3, 00:01:25, Ethernet0/2 O 192.168.1.0/24 [110/20] via 10.0.12.1, 00:01:25, Ethernet0/1 O 192.168.3.0/24 [110/60] via 10.0.23.3, 00:01:25, Ethernet0/2 ``` **На R3:** ``` R3# show ip route ospf 192.168.1.0/24 [110/60] via 10.0.13.1, 00:01:27, Ethernet0/1 192.168.2.0/24 [110/60] via 10.0.23.2, 00:01:27, Ethernet0/2 ``` ✅ **Маршруты анонсируются корректно.** --- ### 3. Проверка предпочтительного пути (traceroute) **Traceroute с R1 до сети R2 (192.168.2.1) при активном прямом линке:** ``` R1# traceroute 192.168.2.1 source e0/0 Type escape sequence to abort. Tracing the route to 192.168.2.1 1 10.0.12.2 1.000 ms 0.800 ms 0.900 ms ← Прямой линк R1→R2 (cost=10) 2 192.168.2.1 1.200 ms ``` ✅ **Трафик идёт напрямую через R1–R2 (дешевле по cost).** --- ## Тест отказоустойчивости (Failover) ### Симуляция отказа прямого линка R1–R2 **На GNS3:** выключить интерфейс `e0/1` на R1 или физически разорвать кабель. ### 1. Состояние соседей после отказа ``` R1# show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface 3.3.3.3 1 FULL/DR 00:00:35 10.0.13.3 Ethernet0/2 ``` - Сосед с R2 (`2.2.2.2`) **пропал** (Dead Time истёк). - Остался только сосед R3. ### 2. Маршруты после отказа ``` R1# show ip route ospf O 192.168.2.0/24 [110/110] via 10.0.13.3, 00:00:15, Ethernet0/2 O 192.168.3.0/24 [110/60] via 10.0.13.3, 00:00:15, Ethernet0/2 ``` ✅ **Маршрут до сети 192.168.2.0/24 теперь идёт через R3** (cost стал 50+50=110). ### 3. Traceroute после отказа ``` R1# traceroute 192.168.2.1 source e0/0 1 10.0.13.3 2.000 ms 1.800 ms 1.900 ms ← R3 (cost=50) 2 10.0.23.2 3.000 ms 2.800 ms 2.900 ms ← R2 3 192.168.2.1 3.200 ms ``` ✅ **Трафик пошёл через резервный путь R1 → R3 → R2.** --- ### 4. Восстановление прямого линка При повторном включении `e0/1` на R1: ``` R1# show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface 2.2.2.2 1 FULL/DR 00:00:36 10.0.12.2 Ethernet0/1 3.3.3.3 1 FULL/DR 00:00:38 10.0.13.3 Ethernet0/2 ``` Маршрут до 192.168.2.0/24 снова стал через прямой линк (cost 20 вместо 110). ✅ **Автоматическое восстановление (failback).** --- ## Ответы на вопросы ### 1. Почему при отключении прямого линка R1–R2 трафик идёт через R3? > OSPF постоянно отслеживает состояние соседей через **Hello-пакеты**. При отключении интерфейса OSPF удаляет маршруты, которые проходили через этот линк, и запускает **пересчёт SPF-дерева**. В результате в таблице маршрутизации остаётся только альтернативный путь через R3, так как он всё ещё доступен. ### 2. Как OSPF выбирает предпочтительный путь? > OSPF вычисляет стоимость пути как **сумму cost** всех исходящих интерфейсов от источника до получателя. Меньшая сумма означает более предпочтительный маршрут. > В нашей настройке: > - Прямой путь R1→R2: cost = 10 > - Путь R1→R3→R2: cost = 50 + 50 = 110 > OSPF выбирает путь с **меньшей метрикой (cost)**. ### 3. Что произойдёт, если не настраивать cost? > По умолчанию cost вычисляется как `10^8 / bandwidth` (для интерфейсов Ethernet — cost=10). Тогда все пути могут иметь одинаковую стоимость, и OSPF будет балансировать трафик между ними (load balancing), либо выберет путь через роутер с меньшим router-id. Управлять предпочтением станет невозможно. ### 4. Зачем нужен area 0 (backbone)? > В OSPF **Area 0** является центральной (backbone). Все остальные зоны должны быть подключены к ней. Это обеспечивает иерархическую структуру и предотвращает петли маршрутизации. В нашей небольшой сети все роутеры находятся в area 0 для простоты. --- ## Дополнительное задание (по желанию) **Сделать линк R1–R3 предпочтительнее, чем R1–R2:** ```bash # На R1 interface e0/1 ip ospf cost 100 # R1-R2 стало дороже interface e0/2 ip ospf cost 10 # R1-R3 стало дешевле ``` После этого трафик из R1 в R2 пойдёт через R3 даже при работающем прямом линке. --- ## Критерии выполнения | Критерий | Выполнение | |----------|-------------| | OSPF area 0 настроен на всех трёх роутерах | ✅ | | LAN-сети анонсированы через OSPF | ✅ | | Соседства OSPF установлены (FULL/DR) | ✅ | | При активном прямом линке трафик идёт через R1–R2 | ✅ | | При отключении прямого линка трафик идёт через R3 | ✅ | | Cost настроен для приоритета прямого линка | ✅ | | `show ip ospf neighbor`, `show ip route ospf`, `traceroute` задокументированы | ✅ | **Итог: задание выполнено полностью.** --- ## Сохранение конфигурации ```bash # На каждом роутере write memory # В GNS3 File → Save Project (Ctrl+S) ``` --- *Дата выполнения:* 2026-06-06 *Среда:* GNS3, Cisco IOU L3, OSPFv2 ---