> 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-basic/data-link-layer.md).

# Data-Link Layer

Кабельный журнал

<figure><img src="https://1296758136-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKKJSybpl25AMsKCr9Trv%2Fuploads%2FfdHzEpVpSPynjYCCEmCi%2F%D0%91%D0%B5%D0%B7%D1%8B%D0%BC%D1%8F%D0%BD%D0%BD%D1%8B%D0%B9-2025-12-02-1431.png?alt=media&amp;token=1fa0f8cd-f5bd-44e7-b964-428c9b4b4a6d" alt=""><figcaption></figcaption></figure>

| Устройство - А | Интерфейс  - А | Устройство - B | Устр  |
| -------------- | -------------- | -------------- | ----- |
| SW01           | Gi0/0          | SW02           | Gi0/0 |
| SW01           | Gi0/1          | SW03           | Gi0/1 |
| SW02           | Gi0/1          | SW04           | Gi0/1 |
| SW03           | Gi0/0          | SW04           | Gi0/0 |
| SW01           | Gi0/2          | AGG-SW01       | Gi0/0 |
| SW01           | Gi0/3          | AGG-SW01       | Gi1/0 |
| SW02           | Gi0/2          | AGG-SW01       | Gi0/1 |
| SW02           | Gi0/3          | AGG-SW01       | Gi1/1 |
| SW03           | Gi0/2          | AGG-SW01       | Gi0/2 |
| SW03           | Gi0/3          | AGG-SW01       | Gi1/2 |
| SW04           | Gi0/2          | AGG-SW01       | Gi0/3 |
| SW04           | Gi0/3          | AGG-SW01       | Gi1/3 |

## Подготовка сетевых устройств

Все оборудование у нас с заводской конфигурацией. Давайте проведём первоначальную инициализацию устройств.

Первым действием зададим имена устройств с помощью команды `hostname <>`,  а также настрои удобный взаимодействие через консольный доступ, так как через интерфейс GNS3 мы попадаем на console-line наших устройств.&#x20;

Опция `exec-timeout <>` указывает через какой период неактивности нас будет выкидывать из console, если мы поставим "0", то нас никогда не будет отключать от консоли по бездействию. Следующий параметр это `logging syncronous` - отвечает за корректное отображение лог-сообщений в консоли, без него вывод лога будет накладываться на вводимые вами команды. Опция `international` позволяет корректно реагировать на вводимые символы кириллицы (русские буквы), правда всё равно отображаться они будут не корректно, без этой опции - железка может уходить в бездействие на минуту, пытаясь зарезолвить вводимые символы в качестве переменной для подключения по telnet.&#x20;

Обратите внимание, что при входе в CLI устройств, у вас будет обычный пользовательский режим, и для того видоизменять конфигурацию вам изначально нужно попасть в **привилегированный пользовательский режим** с помощью команды `enable`, а потом перейти в **режим конфигурации** командой `configure terminal`.

Также от себя рекомендация использовать команду `write memory` для сохранения после каждого выполненного этапа, чтобы не потерять результат.

🔧 Настройка коммутатора <kbd>SW01</kbd>:

```
hostname SW01
!
line console 0
  exec-timeout 0
  logging synchronous
  international
```

🔧 Настройка коммутатора <kbd>SW02</kbd>:

```
hostname SW02
!
line console 0
  exec-timeout 0
  logging synchronous
  international
```

🔧 Настройка коммутатора <kbd>SW03</kbd>:

```
hostname SW03
!
line console 0
  exec-timeout 0
  logging synchronous
  international
```

🔧 Настройка коммутатора <kbd>SW04</kbd>:

```
hostname SW04
!
line console 0
  exec-timeout 0
  logging synchronous
  international
```

🔧 Настройка коммутатора <kbd>AGG-SW01</kbd>:

```
hostname AGG-SW01
!
line console 0
  exec-timeout 0
  logging synchronous
  international
```

## Настройка агрегирования интерфейсов

📌 Задача: Настроить агрегированные интерфейсы между коммутаторами <kbd>AGG-SW01</kbd> и коммутаторами <kbd>SW01</kbd>, <kbd>SW02</kbd>, <kbd>SW03</kbd>, <kbd>SW04</kbd>. Между <kbd>AGG-SW01</kbd> и <kbd>SW01</kbd>, <kbd>SW02</kbd> настроить объединение интерфейсов по протоколу **LACP**. Между <kbd>AGG-SW01</kbd> и <kbd>SW03</kbd> - настроить по протоколу **PAGP**. Между коммутаторами <kbd>AGG-SW01</kbd> и <kbd>SW04</kbd> настроить **безусловную** агрегацию. Выбирать режим работы LACP/PAGP уже на своё усмотрение.

Для ускорения настройки, напоминаю, что можно пользоваться макросами, `interface range`, которые позволяют применять настройки одновременно на несколько интерфейсов.

Начнем со взаимодействия по LACP

🔧 Настройка коммутатора <kbd>SW01</kbd>:

```
configure terminal
!
interface range GigabitEthernet0/2-3
  channel-group 23 mode active
```

🔧 Настройка коммутатора <kbd>SW02</kbd>:

```
configure terminal
!
interface range GigabitEthernet0/2-3
  channel-group 23 mode active
```

🔧 Настройка коммутатора <kbd>AGG-SW01</kbd>:

```
configure terminal
!
interface range GigabitEthernet0/0, GigabitEthernet1/0
  channel-group 1 mode active
!
interface range GigabitEthernet0/1, GigabitEthernet1/1
  channel-group 2 mode active
```

Теперь перейдём к разделу  **Port Aggregation Protocol**, напомню что у **PAGP** режимы работы отличаются от LACP: на `desirable` и `auto`.&#x20;

🔧 Настройка коммутатора <kbd>SW03</kbd>:

```
configure terminal
!
interface range GigabitEthernet0/2-3
  channel-group 23 mode auto
```

🔧 Настройка со стороны коммутатора <kbd>AGG-SW01</kbd>:

```
configure terminal
!
interface range GigabitEthernet0/2, GigabitEthernet1/2
  channel-group 3 mode desirable
```

Ну и остаётся соединение между коммутатором <kbd>SW04</kbd> и центральным коммутатором <kbd>AGG-SW01</kbd> на основе безусловной (статической) агрегации.

🔧 Настройка коммутатора <kbd>SW04</kbd>:

```
configure terminal
!
interface range GigabitEthernet0/2-3
  channel-group 23 mode on
```

🔧 Настройка коммутатора <kbd>AGG-SW01</kbd>:

```
configure terminal
!
interface range GigabitEthernet0/3, GigabitEthernet1/3
  channel-group 4 mode on
```

Теперь давайте диагностировать, то что было сконфигурировано. Для базовой диагностики можно использовать команду `show etherchannel summary`, которая отображает состояние всех агрегированных интерфейсов.

В столбце **Ports** все интерфейсы-участники LAG должны быть с флагом P (bundled in port-channel), что свидетельствует о том, что всё корректно.

<figure><img src="https://1296758136-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKKJSybpl25AMsKCr9Trv%2Fuploads%2Ftn5ZaJCnp5cyeb2H9wKv%2Fimage.png?alt=media&amp;token=8cb5667d-2135-4083-a2e7-3e8a5701c573" alt=""><figcaption></figcaption></figure>

## Настройка VLAN на коммутаторах

📌 Задача: Настроить VLAN на всех коммутаторах, чтобы траффик от компьютеров сотрудников из разных департаментов был изолирован друг от друга согласно политике безопасности компании.

Здесь предлагаю пойти по одному из двух путей: стандартному (ручная конфигурация) и специфичному (с использованием протокола VTP) .

### Статическое создание VLAN

🔧 Создание VLAN на коммутаторе <kbd>SW01</kbd>:

```
configure terminal
!
vtp mode transparent
!
vlan 110
  name IT-Department
!
vlan 120
  name HR-Department
!
vlan 130
  name Finance-Department
```

🔧 Создание VLAN на коммутаторе <kbd>SW02</kbd>:

```
configure terminal
!
vtp mode transparent
!
vlan 110
  name IT-Department
!
vlan 120
  name HR-Department
!
vlan 130
  name Finance-Department
```

🔧 Создание VLAN на коммутаторе <kbd>SW03</kbd>:

```
configure terminal
!
vtp mode transparent
!
vlan 110
  name IT-Department
!
vlan 120
  name HR-Department
!
vlan 130
  name Finance-Department
```

🔧 Создание VLAN на коммутаторе <kbd>SW04</kbd>:

```
configure terminal
!
vtp mode transparent
!
vlan 110
  name IT-Department
!
vlan 120
  name HR-Department
!
vlan 130
  name Finance-Department
```

🔧 Создание VLAN на коммутаторе <kbd>AGG-SW01</kbd>:

```
configure terminal
!
vtp mode transparent
!
vlan 110
  name IT-Department
!
vlan 120
  name HR-Department
!
vlan 130
  name Finance-Department
```

### (Опционально) Созданиe VLAN через VTP

VTP (VLAN Trunking Protocol) — это протокол Cisco, который автоматически распространяет информацию о VLAN между коммутаторами в одной VTP-домене. Он нужен для того, чтобы не создавать VLAN вручную на каждом коммутаторе. Нам достаточно создать необходимые VLAN только на коммутаторе <kbd>AGG-SW01</kbd> , тот в свою очередь распространит их на коммутаторы доступа

В рамках взаимодействия коммутаторов, возникает такой термин VTP-домен. Это некий идентификатор в системе свой/чужой при взаимодействии свитчей и соответственно быть одинаковым на всех легитимных коммутаторах.

Также коммутаторы разделяются на несколько ролей:

* **Сервер**, именно на них создаются и удаляются VLAN и сервер в свою очередь распространяет информацию по всему VTP-домену. CIsco-вские коммутаторы по умолчанию в режиме - "сервер".
* **Клиент**, получает от сервера сообщения с используемым VLAN, также не может создавать/удалять VLAN в топологии. VLAN хранятся в RAM и перезагрузке стираются, и коммутатору нужно получить их заново по VTP.
* **Transparent**, коммутаторы с этой ролью не участвуют в синхронизации VLAN, но при этом передают  VTP-кадры дальше. В режиме Transparent при создании VLAN, они добавляются в NVRAM при сохранении конфигурации, то есть они будут отображаться в выводе `show runnning-config`.

🔧 Настройка VTP на коммутаторе <kbd>SW01</kbd>:

```
configure terminal
!
vtp mode client
vtp domain SpecialistVTP
vtp version 3
vtp password SpecialistPass
```

🔧 Настройка VTP на коммутаторе <kbd>SW02</kbd>:

```
configure terminal
!
vtp mode client
vtp domain SpecialistVTP
vtp version 3
vtp password SpecialistPass
```

🔧 Настройка VTP на коммутаторе <kbd>SW03</kbd>:

```
configure terminal
!
vtp mode client
vtp domain SpecialistVTP
vtp version 3
vtp password SpecialistPass
```

🔧 Настройка VTP на коммутаторе <kbd>SW04</kbd>:

```
configure terminal
!
vtp mode client
vtp domain SpecialistVTP
vtp version 3
vtp password SpecialistPass
```

🔧 Настройка VTP на коммутаторе <kbd>AGG-SW01</kbd>:

```
configure terminal
!
vtp mode server
vtp domain SpecialistVTP
vtp version 3
vtp password SpecialistPass
!
end
```

Обратите внимание на команду `end` для выхода в привилегированный пользовательский режим, чтобы включить `vtp primary` режим

⌨️ Включение Primary режима на коммутаторе <kbd>AGG-SW01</kbd>

```
vtp primary
```

Также вы должны увидеть уведомление о том, что данное устройство станет primary и вам необходимо согласить нажав на `Enter`

> This system is becoming primary server for feature vlan> \
> No conflicting VTP3 devices found.> \
> Do you want to continue? \[confirm]

После данного шага можно переходить к созданию VLAN на основном коммутаторе AGG-SW01

🔧 Создание VLAN на коммутаторе <kbd>AGG-SW01</kbd>:

```
configure terminal
!
vtp mode transparent
!
vlan 110
  name IT-Department
!
vlan 120
  name HR-Department
!
vlan 130
  name Finance-Department
```

{% hint style="warning" %}
Но есть одно но, VLAN распределятся по нашим коммутаторам только тогда, когда у нас будут подняты trunk-интерфейсы в сторону коммутаторов доступа.
{% endhint %}

## Настройка интерфейсов

Теперь настало время настроить взаимодействие между коммутаторами и настроить клиентские порты на коммутаторах.

🔧 Настройка trunk-интерфейсов на коммутаторе <kbd>AGG-SW01</kbd>:

```
configure terminal
!
interface range Port-channel 1-4
  switchport trunk encapsulation dot1q
  switchport mode trunk
  spanning-tree link-type point-to-point
  exit
```

На клиентских портах в сторону абонентов мы будем настраивать `portfast edge` режим работы, чтобы в будущем исключить влияние этих интерфейсов на Spanning Tree дерево. Также для защиты от потенциальных петель на абонентских портах мы включим `BPDU Guard` режим, который отработает при получении `BPDU` и переведёт порт в состояние `err-disabled` от греха подальше.&#x20;

🔧 Настройка интерфейсов на коммутаторе <kbd>SW01</kbd>:

```
configure terminal
!
interface range GigabitEthernet0/0-1, Port-Channel 23
  switchport trunk encapsulation dot1q
  switchport mode trunk
  spanning-tree link-type point-to-point
!
interface GigabitEthernet1/1
  description { Comp-IT-10 }
  switchport mode access
  switchport access vlan 110
  spanning-tree portfast
  spanning-tree bpduguard enable
!
interface GigabitEthernet1/2
  description { Comp-HR-10 }
  switchport mode access
  switchport access vlan 120
  spanning-tree portfast
  spanning-tree bpduguard enable
!
interface GigabitEthernet1/3
  description { Comp-FIN-10 }
  switchport mode access
  switchport access vlan 130
  spanning-tree portfast
  spanning-tree bpduguard enable  
```

🔧 Настройка интерфейсов на коммутаторе <kbd>SW02</kbd>:

```
configure terminal
!
interface range GigabitEthernet0/0-1, Port-Channel 23
  switchport trunk encapsulation dot1q
  switchport mode trunk
  spanning-tree link-type point-to-point
!
interface GigabitEthernet1/1
  description { Comp-IT-20 }
  switchport mode access
  switchport access vlan 110
  spanning-tree portfast
  spanning-tree bpduguard enable
!
interface GigabitEthernet1/2
  description { Comp-HR-20 }
  switchport mode access
  switchport access vlan 120
  spanning-tree portfast
  spanning-tree bpduguard enable 
```

🔧 Настройка интерфейсов на коммутаторе <kbd>SW03</kbd>:

```
configure terminal
!
interface range GigabitEthernet0/0-1, Port-Channel 23
  switchport trunk encapsulation dot1q
  switchport mode trunk
  spanning-tree link-type point-to-point
!
interface GigabitEthernet1/1
  description { Comp-IT-30 }
  switchport mode access
  switchport access vlan 110
  spanning-tree portfast
  spanning-tree bpduguard enable
!
interface GigabitEthernet1/2
  description { Comp-HR-30 }
  switchport mode access
  switchport access vlan 120
  spanning-tree portfast
  spanning-tree bpduguard enable 
```

🔧 Настройка интерфейсов на коммутаторе <kbd>SW04</kbd>:

```
configure terminal
!
interface range GigabitEthernet0/0-1, Port-Channel 23
  switchport trunk encapsulation dot1q
  switchport mode trunk
  spanning-tree link-type point-to-point
!
interface GigabitEthernet1/1
  description { Comp-IT-40 }
  switchport mode access
  switchport access vlan 110
  spanning-tree portfast
  spanning-tree bpduguard enable
!
interface GigabitEthernet1/2
  description { Comp-HR-40 }
  switchport mode access
  switchport access vlan 120
  spanning-tree portfast
  spanning-tree bpduguard enable 
!
interface GigabitEthernet1/3
  description { Comp-FIN-40 }
  switchport mode access
  switchport access vlan 130
  spanning-tree portfast
  spanning-tree bpduguard enable  
```

## Настройка защиты от петель на основе MSTP&#x20;

**MSTP** (Multiple Spanning Tree Protocol) — это современная версия протокола Spanning Tree, описанная в стандарте **`IEEE 802.1s`**.\
Он решает главную проблему STP/RSTP — неэффективное использование каналов при наличии нескольких VLAN. Оптимизация достигается путём группирования нескольких **STP-per-VLAN Instance**., если логическая топология у этих instance одинаковая.&#x20;

📌 Задача: Настроить протокол остовного дерева MST на коммутаторах, с условием, что свитч AGG-SW01 будет Root Bridge в нашей топологии.&#x20;

При настройке MSTP, нам нужно поменять режим работы Spanning-Tree протокола на MSTP, а далее перейти к конфигурации MST, где на каждом коммутаторе необходимо создать имя процесса, в нашем случае мы возьмём "`specialist`", далее номер ревизии и объявление `instance`. Так как клиенты во VLAN 110 и VLAN 120 повторяют друг друга с точки зрения топологии, то объединим оба VLAN в один instance для оптимизации.

{% hint style="info" %}
Остовное дерево (Spanning Tree) - это термин из теории графов, который означает подграф графа (), который содержит все вершины исходного графа, но не содержит циклов и имеет минимально возможное количество рёбер
{% endhint %}

🔧 Настройка MSTP на коммутаторе <kbd>SW01</kbd>:

```
configure terminal
!
spanning-tree mode mst
!
spanning-tree mst configuration
name specialist
revision 1
instance 12 vlan 110
instance 12 vlan 120
instance 30 vlan 130
exit
```

🔧 Настройка MSTP на коммутаторе <kbd>SW02</kbd>:

```
configure terminal
!
spanning-tree mode mst
!
spanning-tree mst configuration
name specialist
revision 1
instance 12 vlan 110
instance 12 vlan 120
instance 30 vlan 130
exit
```

🔧 Настройка MSTP на коммутаторе <kbd>SW03</kbd>:

```
configure terminal
!
spanning-tree mode mst
!
spanning-tree mst configuration
name specialist
revision 1
instance 12 vlan 110
instance 12 vlan 120
instance 30 vlan 130
exit
```

🔧 Настройка MSTP на коммутаторе <kbd>SW04</kbd>:

```
configure terminal
!
spanning-tree mode mst
!
spanning-tree mst configuration
name specialist
revision 1
instance 12 vlan 110
instance 12 vlan 120
instance 30 vlan 130
exit
```

🔧 Настройка MSTP на коммутаторе <kbd>AGG-SW01</kbd>:

```
configure terminal
!
spanning-tree mode mst
!
spanning-tree mst configuration
name specialist
revision 1
instance 12 vlan 110
instance 12 vlan 120
instance 30 vlan 130
exit

spanning-tree mst 0 priority 4096
spanning-tree mst 12 priority 4096
spanning-tree mst 30 priority 4096
```

В MSTP есть несколько типов интерфейсов:

* Edge - порт, исключённый из расчёта топологии Spanning Tree, его изменяя состояния не влияет на пересчёт топологии и порты в сторону клиентских компьютеров должны быть настроены как Edge.
* Network - строгий тип порта trunk-линков между коммутаторами. Он гарантирует правильную обработку BPDU и защищает сеть от ошибок конфигурации.
* Shared - режим, включающийся автоматически, если интерфейс работает в режиме `half-duplex`.
* P2P - автоматически согласующийся тип порта, и представляет из себя соединение между двумя коммутаторами

А теперь давайте проверим, что топология у нас корректная

⌨️ Диагностика `Spanning Tree` на коммутаторе <kbd>AGG-SW01</kbd>

```
show spanning-tree summary
```

```
show spanning-tree mst 12
```

<figure><img src="https://1296758136-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKKJSybpl25AMsKCr9Trv%2Fuploads%2F1OtWK18M0glf29Wc1Slx%2Fimage.png?alt=media&amp;token=f234d76c-da28-41a4-ae75-e2470621233a" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1296758136-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKKJSybpl25AMsKCr9Trv%2Fuploads%2FegJQOoa3wtG8cRkuLhx3%2Fimage.png?alt=media&amp;token=5b34ae95-d66d-4cdc-a21e-93366161379d" alt=""><figcaption></figcaption></figure>

⌨️ Диагностика `Spanning Tree` на коммутаторе <kbd>SW02</kbd>

```
show spanning-tree mst 12
```

<figure><img src="https://1296758136-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKKJSybpl25AMsKCr9Trv%2Fuploads%2FJ69WkJGdFYkprJh75Mpo%2Fimage.png?alt=media&amp;token=55af53ad-2892-406b-b8ed-1b57418661bf" alt=""><figcaption></figcaption></figure>
