> For the complete documentation index, see [llms.txt](https://adavyshin.gitbook.io/networks/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://adavyshin.gitbook.io/networks/network/laboratornaya-rabota-ospf.md).

# Лабораторная работа: OSPF

Ссылка на файл с готовой лабораторной работой:\
<https://disk.yandex.ru/d/ajq9YblR7U7Llw>

## Ч1. Настройка backbone-области&#x20;

Начнём настройку нашей топологии с конфигурации OSPF Area 0 на маршрутизаторах <kbd>R1</kbd>, <kbd>R2</kbd>, <kbd>R3</kbd>, <kbd>R4</kbd> и <kbd>R5</kbd>. Для ускорения установления соседства на всех p2p-интерфейсах используется команда `ip ospf network point-to-point`. &#x20;

> Параметр log-adjacency-changes detail влияет на подробное логирование изменения состояния соседств на маршрутизаторе, подключаясь через GNS3, мы автоматически находимся в console terminal line, где включено отображение логов&#x20;

🔧 Настройка маршрутизатора <kbd>R1</kbd>:

```
configure terminal
!
router ospf 1
  router-id 1.1.1.1
  log-adjacency-changes detail
  network 10.0.0.0 0.255.255.255 area 0
!
interface Loopback0
  ip ospf 1 area 0
!
interface GigabitEthernet0/1
  ip ospf network point-to-point
!
interface GigabitEthernet0/2
  ip ospf network point-to-point
```

🔧 Настройка маршрутизатора <kbd>R2</kbd>:

```
configure terminal
!
router ospf 1
  router-id 2.2.2.2
  log-adjacency-changes detail
  network 10.123.123.2 0.0.0.0 area 0
!
interface Loopback0
  ip ospf 1 area 0
```

🔧 Настройка маршрутизатора <kbd>R3</kbd>:

```
configure terminal
!
router ospf 1
  router-id 3.3.3.3
  log-adjacency-changes detail
  network 10.123.123.3 0.0.0.0 area 0
!
interface Loopback0
  ip ospf 1 area 0
```

🔧 Настройка маршрутизатора <kbd>R4</kbd>:

```
configure terminal
!
router ospf 4444
  router-id 4.4.4.4
  log-adjacency-changes detail
!
interface GigabitEthernet0/1
  ip ospf network point-to-point
  ip ospf 4444 area 0
!
interface Loopback0
  ip ospf 4444 area 0
```

🔧 Настройка маршрутизатора <kbd>R5</kbd>:

```
configure terminal
!
router ospf 1
  router-id 5.5.5.5
  log-adjacency-changes detail
!
interface GigabitEthernet0/2
  ip ospf network point-to-point
  ip ospf 1 area 0
!
interface Loopback0
  ip ospf 1 area 0
```

Давайте внимательно посмотрим на установленные соседства на маршрутизаторе R1 c помощью команды `show ip ospf neighbor` .

<figure><img src="/files/X3maYoxRv4MQ5rKtZsMs" alt=""><figcaption></figcaption></figure>

Мы видим, что маршрутизатор R1 не может установить  соседство с R4, это легко определить по RID (4.4.4.4), так как оно застревает на состоянии `EXSTART`. ⚠️ Это один из основных признаков, что у вас проблемы с согласованием MTU, так как в DBD-сообщении указывается значение MTU-интерфейса, с которого он отправлен, и когда сосед получает такое сообщение, он сравнивает это значение со своим, если не совпадает с локальным значением, то такое сообщение отбрасывается.

В качестве workaround решения является отключение проверки MTU на интерфейсах:

🔧 На маршрутизаторе <kbd>R1</kbd>:

```
configure terminal
!
interface GigabitEthernet0/1
  ip ospf mtu-ignore
```

🔧На маршрутизаторе <kbd>R4</kbd>:

```
configure terminal
!
interface GigabitEthernet0/1
  ip ospf mtu-ignore
```

Проверяем еще раз состояние соседств:

<figure><img src="/files/VsG0XWowLApjqeL4CQvk" alt=""><figcaption></figcaption></figure>

## Ч2. Настройка Area 51112

Напоминаю, что в качестве номера области можно взять значение из диапазона `0` - `65535`. У нас есть область `51112`, состоящая из трёх маршрутизаторов `R5`, `R11` и `R12`.

🔧 Настройка пограничного `ABR` маршрутизатора <kbd>R5</kbd>:

```
configure terminal
!
interface GigabitEthernet0/0
  ip ospf network point-to-point
  ip ospf 1 area 51112
!
interface GigabitEthernet0/1
  ip ospf network point-to-point
  ip ospf 1 area 51112
```

🔧 Настройка маршрутизатора <kbd>R11</kbd>:

```
configure terminal
!
router ospf 1
  router-id 11.11.11.11
  log-adjacency-changes detail
!  
interface GigabitEthernet0/0
  ip ospf network point-to-point
  ip ospf 1 area 51112
!
interface GigabitEthernet0/1
  ip ospf network point-to-point
  ip ospf 1 area 51112
!
interface Loopback0
  ip ospf 1 area 51112
!
interface Loopback51112
  ip ospf 1 area 51112
```

🔧 Настройка маршрутизатора <kbd>R12</kbd>:

```
configure terminal
!
router ospf 1
  router-id 12.12.12.12
  log-adjacency-changes detail
!  
interface GigabitEthernet0/0
  ip ospf network point-to-point
  ip ospf 1 area 51112
!
interface GigabitEthernet0/1
  ip ospf network point-to-point
  ip ospf 1 area 51112
!
interface Loopback0
  ip ospf 1 area 51112
!
interface Loopback51112
  ip ospf 1 area 51112
```

После того, как настроили ospf в области 51112, давайте посмотрим на табличку маршрутизации на <kbd>R1</kbd>:

<figure><img src="/files/iI8JaiNKdIB1T6lpB3Ds" alt=""><figcaption></figcaption></figure>

Здесь мы видим, что у нас два inter-area маршрута до Loopback-адресов маршрутизаторов <kbd>R11</kbd> и <kbd>R12</kbd>. И хочется предложить поработать с суммаризацией маршрутов на пограничном роутере <kbd>R5</kbd>, для того чтобы "не плодить большое количество маршрутов".

🔧 На маршрутизаторе <kbd>R5</kbd>:

```
configure terminal
!
router ospf 1
  area 51112 range 10.51.0.0 255.255.0.0
```

После команды на суммаризацию, давайте ещё раз на <kbd>R1</kbd> проверим табличку, и увидим, что теперь у нас один суммаризированный маршрут до `10.51.0.0/16`

<figure><img src="/files/uLJc6GZeBdZGfBBVP7Rj" alt=""><figcaption></figcaption></figure>

## Ч3. Настройка NSSA Area 132

Давайте настроим область 132, в ней находится маршрутизаторы <kbd>R2</kbd> и <kbd>R13</kbd>. <kbd>R13</kbd> - в нашей топологии выполняет роль `CPE` (Customer Premises Equipment), который подключается ко внешним сетям, по терминологии OSPF, выполняет роль `ASBR` (Autonomous System Boundary Router)&#x20;

🔧 Настройка маршрутизатора <kbd>R2</kbd>:

```
configure terminal
!
interface GigabitEthernet0/3
  ip ospf 1 area 132
  ip ospf network point-to-point
```

🔧 Настройка маршрутизатора <kbd>R13</kbd>:

```
configure terminal
!
router ospf 1
  router-id 13.13.13.13
  log-adjacency-changes detail
!
interface GigabitEthernet0/3
  ip ospf 1 area 132
  ip ospf network point-to-point
!
interface Loopback0
  ip ospf 1 area 132
```

Теперь настрои NSSA-взаимодействие между R13 и R2 маршрутизатором.

🔧 Маршрутизатор <kbd>R13</kbd>:

```
configure terminal
!
router ospf 1
  area 132 nssa default-information-originate
```

🔧 Маршрутизатор <kbd>R2</kbd>:

```
configure terminal
!
router ospf 1
  area 132 nssa
```

Проверка получения маршрута по умолчанию на маршрутизаторе <kbd>R1</kbd>:

<figure><img src="/files/U7YlTZ09CkyWLhzwnwRy" alt=""><figcaption></figcaption></figure>

Но для корректного выхода в интернет, нам нужен NAT на роутере <kbd>R13</kbd>, давайте выполним действия:

🔧 Маршрутизатор <kbd>R13</kbd>:

```
conf t
!
ip access-list extended NAT-SELECTOR
  permit ip host 1.1.1.1 any
  permit ip host 2.2.2.2 any
  permit ip host 3.3.3.3 any
  permit ip host 4.4.4.4 any
  permit ip host 5.5.5.5 any
  permit ip host 6.6.6.6 any
  permit ip host 7.7.7.7 any
  permit ip host 8.8.8.8 any
  permit ip host 9.9.9.9 any
  permit ip host 10.10.10.10 any
  permit ip host 11.11.11.11 any
  permit ip host 12.12.12.12 any
  permit ip host 13.13.13.13 any
  permit ip 10.0.0.0 0.255.255.255 any
!
route-map RM-FOR-NAT permit 10
  match ip address NAT-SELECTOR
  match interface GigabitEthernet0/0
!
interface GigabitEthernet0/0
  ip nat outside
!
interface GigabitEthernet0/3
  ip nat inside
!
ip nat inside source route-map RM-FOR-NAT interface GigabitEthernet0/0 overload
```

После того как сконфигурировали NAT, давайте проверим базовую доступность. На маршрутизаторе <kbd>R1</kbd> пробуем пропинговать хост <kbd>ya.ru</kbd>.

<figure><img src="/files/m6MdJoFpYpSOqOKRxY1z" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
ICMP запрос проходит за счёт статической A-записи на R1 и поднятого loopback-адреса на "External" маршрутизаторе.
{% endhint %}

## Ч4. Настройка Area 1098

Для ускорения быстродействия у нас в области 1098 используется "быстрые" тайминги для `hello` и `dead` интервалов.&#x20;

🔧 Настройка маршрутизатора <kbd>R2</kbd>:

```
configure terminal
!
interface GigabitEthernet0/1
  ip ospf network point-to-point
  ip ospf 1 area 1098
  ip ospf hello-interval 2
  ip ospf dead-interval 6

!
interface GigabitEthernet0/2
  ip ospf network point-to-point
  ip ospf 1 area 1098
  ip ospf hello-interval 2
  ip ospf dead-interval 6
!
```

🔧 Настройка маршрутизатора <kbd>R3</kbd>:

```
configure terminal
!
interface GigabitEthernet0/1
  ip ospf network point-to-point
  ip ospf 1 area 1098
  ip ospf hello-interval 2
  ip ospf dead-interval 6
!
interface GigabitEthernet0/2
  ip ospf network point-to-point
  ip ospf 1 area 1098
  ip ospf hello-interval 2
  ip ospf dead-interval 6
```

🔧 Настройка маршрутизатора <kbd>R8</kbd>:

```
configure terminal
!
router ospf 1
  router-id 8.8.8.8
  log-adjacency-changes detail
!
interface GigabitEthernet0/0
  ip ospf network point-to-point
  ip ospf 1 area 1098
  ip ospf hello-interval 2
  ip ospf dead-interval 6
!
interface GigabitEthernet0/1
  ip ospf network point-to-point
  ip ospf 1 area 1098
  ip ospf hello-interval 2
  ip ospf dead-interval 6
!
interface GigabitEthernet0/2
  ip ospf network point-to-point
  ip ospf 1 area 1098
  ip ospf hello-interval 2
  ip ospf dead-interval 6
!
interface Loopback0
  ip ospf 1 area 1098
```

🔧 Настройка маршрутизатора <kbd>R9</kbd>:

```
configure terminal
!
router ospf 1
  router-id 9.9.9.9
  log-adjacency-changes detail
!
interface GigabitEthernet0/0
  ip ospf network point-to-point
  ip ospf 1 area 1098
  ip ospf hello-interval 2
  ip ospf dead-interval 6
!
interface GigabitEthernet0/1
  ip ospf network point-to-point
  ip ospf 1 area 1098
  ip ospf hello-interval 2
  ip ospf dead-interval 6
!
interface GigabitEthernet0/2
  ip ospf network point-to-point
  ip ospf 1 area 1098
  ip ospf hello-interval 2
  ip ospf dead-interval 6
!
interface Loopback0
  ip ospf 1 area 1098
```

🔧 Настройка маршрутизатора <kbd>R10</kbd>:

```
configure terminal
!
router ospf 1
  router-id 10.10.10.10
  log-adjacency-changes detail
  network 10.10.10.10 0.0.0.0 area 1098
  network 10.0.0.0 0.255.255.255 area 1098
!
interface GigabitEthernet0/1
  ip ospf network point-to-point
  ip ospf hello-interval 2
  ip ospf dead-interval 6
!
interface GigabitEthernet0/2
  ip ospf network point-to-point
  ip ospf hello-interval 2
  ip ospf dead-interval 6
```

Давайте оптимизируем топологию, область 1098 у нас является "тупиковой", так как у неё нет собственных выходов во внешние сети, а точка выхода из самой области является backbone-область.

Чтобы не нагружать роутеры в области 1098, предлагаю эту area настроить как `Totally Stubby` , что означает только default-маршрут будет инъецироваться.&#x20;

🔧 Настройка маршрутизатора <kbd>R2</kbd>:

```
configure terminal
!
router ospf 1
   area 1098 stub no-summary
```

🔧 Настройка маршрутизатора <kbd>R3</kbd>:

```
configure terminal
!
router ospf 1
   area 1098 stub no-summary
```

🔧 Настройка маршрутизатора <kbd>R8</kbd>:

```
configure terminal
!
router ospf 1
   area 1098 stub
```

🔧 Настройка маршрутизатора <kbd>R9</kbd>:

```
configure terminal
!
router ospf 1
   area 1098 stub
```

🔧 Настройка маршрутизатора <kbd>R10</kbd>:

```
configure terminal
!
router ospf 1
   area 1098 stub
```

Давайте проверим таблицу маршрутизации `show ip route` на маршрутизаторе <kbd>R10</kbd>:

<figure><img src="/files/bJLtjrJuBerkr17oTRUE" alt=""><figcaption></figcaption></figure>

Мы видим, что у нас два маршрута по умолчанию: один через <kbd>R8</kbd>, второй - через <kbd>R9</kbd> и работает балансировка `ECMP` на  основе хэш-алгоритма.

Предлагаю поиграться с стоимостью путей, и сделать маршрут через <kbd>R8</kbd> - приоритетным, по сравнению с <kbd>R9</kbd>.&#x20;

🔧 Маршрутизатор <kbd>R10</kbd>:

```
configure terminal
!
interface GigabitEthernet0/2
  ip ospf cost 5
```

Проверяем еще раз RIB на маршрутизаторе <kbd>R10</kbd>:

<figure><img src="/files/gD4LhDES2tdNEC5Dds2s" alt=""><figcaption></figcaption></figure>

А вот для <kbd>R8</kbd> и <kbd>R9</kbd>, что <kbd>R2</kbd>, что <kbd>R3</kbd> тоже являются равнозначными шлюзами. Приоритетность можно задать с помощью метрики для default-route в `Totally Stubby` область. Предлагаю приоритетным выбрать маршрутизатор <kbd>R2</kbd>, так как он ближе к `ASBR`. То есть мы специально завысим метрику на маршрутизаторе <kbd>R3</kbd>.

🔧 Конфигурация маршрутизатора <kbd>R3</kbd>:

```
configure terminal
!
router ospf 1
  area 1098 default-cost 5
```

Проверяем таблицу маршрутизации на R8 и видим, что у нас всего точка выхода из области 1098.

## Ч5. Настройка Area 46 и peer-link&#x20;

Вроде бы обычное p2p-соединение между маршрутизаторами <kbd>R4</kbd> и <kbd>R6</kbd>, но у нас есть вводная настроить аутентификацию на этом link. Для проверки подлинности будем использовать связку ключей, в которую добавим `ключ #1`  с содержимым `Specialist2025`.

🔧 Настройка маршрутизатора <kbd>R4</kbd>:

```
configure terminal
!
interface GigabitEthernet0/0
  ip ospf network point-to-point
  ip ospf 4444 area 46
!
key chain OSPF_KEYS
  key 1
    cryptographic-algorithm hmac-sha-256
    key-string Specialist2025
!
interface GigabitEthernet0/0
  ip ospf authentication key-chain OSPF_KEYS
```

🔧 Настройка маршрутизатора <kbd>R6</kbd>:

```
configure terminal
!
router ospf 1
  router-id 6.6.6.6
  log-adjacency-changes detail
!
interface Loopback0
  ip ospf 1 area 46
!
interface GigabitEthernet0/0
  ip ospf 1 area 46
  ip ospf network point-to-point
!
key chain OSPF_KEYS
  key 1
    cryptographic-algorithm hmac-sha-256
    key-string Specialist2025
!
interface GigabitEthernet0/0
  ip ospf authentication key-chain OSPF_KEYS

```

Но есть одно "НО", которое ломает стандартную топологию для OSPF-домена. Backbone-область не должна быть в двух местах, а у нас получается, что есть маленький островок между <kbd>R7</kbd> и <kbd>R6</kbd>, который принадлежит области 0, но прямой связности с <kbd>R4</kbd> не имеет. Для того, чтобы корректно сконфигурировать нашу топологию будем использовать технологию <kbd>Virtual Link</kbd>. Но перед началом преднастроем <kbd>R7</kbd> и <kbd>R6</kbd>.&#x20;

🔧 Маршрутизатор <kbd>R7</kbd>:

```
configure terminal
!
router ospf 1
  router-id 7.7.7.7
  log-adjacency-changes detail
  network 10.67.0.0 0.0.0.255 area 0
!
interface Loopback0
 ip ospf 1 area 0
```

🔧 Маршрутизатор <kbd>R6</kbd>:

```
configure terminal
!
router ospf 1
  network 10.67.0.0 0.0.0.255 area 0
```

На текущий момент мы видим, что на R1 пока нет маршрута до сети `7.7.7.7/32`, которая присутствует на маршрутизаторе <kbd>R7</kbd>.

<figure><img src="/files/ZIyl334aVmNYjgeRgDs2" alt=""><figcaption></figcaption></figure>

Давайте добавим настройки peer-link

🔧 Маршрутизатор <kbd>R4</kbd>:

```
configure terminal
!
router ospf 4444
  area 46 virtual-link 6.6.6.6
```

🔧 Маршрутизатор <kbd>R6</kbd>:

```
configure terminal
!
router ospf 1
  area 46 virtual-link 4.4.4.4
```

После того как добавим данные строки конфигурации, то привожу пример syslog-сообщений и вывод команды `show ip ospf virtual-link`, демонстрирующих, что соседство поднялось через `VL1` сквозь область 46. Также на маршрутизаторе <kbd>R1</kbd> должен появиться маршрут до сети `7.7.7.7/32`.

<figure><img src="/files/35SMJ71kFTGLh6YJrbx2" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://adavyshin.gitbook.io/networks/network/laboratornaya-rabota-ospf.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
