> For the complete documentation index, see [llms.txt](https://linkmeup.gitbook.io/sdsm/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://linkmeup.gitbook.io/sdsm/8.-bgp-i-ip-sla/2.-bgp/2.-nastroika-bgp-i-praktika/0.-nastroika-bgp.md).

# Настройка BGP и практика

Мы поднимаем BGP-сессию с обоими провайдерами.\
Нам важна следующая информация:\
1\) Номер нашей AS и блок IP-адресов. Их мы уже получили: AS64500 и блок: 100.0.0.0/23.\
2\) Номер AS «Балаган Телеком» и линковая подсеть с ним. AS64501 и линковая сеть: 101.0.0.0/30.\
3\) Номер AS «Филькин Сертификат» и линковая подсеть с ним. AS64502 и линковая сеть: 102.0.0.0/30.

> При подключении по BGP в качестве линковых адресов используются обычно публичные с маской подсети /30 и выдаёт их нам вышестоящий провайдер.\
> Делается это по той простой причине, чтобы ваш трафик везде следовал по публичным адресам и в трассировке посередине не появлялись всякие 10.Х.Х.Х. Не то, чтобы это что-то запрещённое, но обычно-таки придерживаются этого правила.\
> \
> ![](http://img-fotki.yandex.ru/get/5642/83739833.28/0_b9026_66c9a1f_L.png)

Начнём с банального.

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

```
msk-arbat-gw1
R1(config)#int fa0/0
R1(config-if)#ip address 101.0.0.2 255.255.255.252
R1(config-if)#no shutdown 

R1(config)#int fa0/1
R1(config-if)#ip address 102.0.0.2 255.255.255.252
R1(config-if)#no shutdown
```

![](http://img-fotki.yandex.ru/get/5644/83739833.28/0_b9019_2d0065bf_XL.png)

![](http://img-fotki.yandex.ru/get/6441/83739833.28/0_b901a_179b49ae_XL.png)

Теперь назначим какой-нибудь адрес на интерфейс Loopback, чтобы потом проверить связность:

```
R1(config)#int loopback 0
R1(config-if)#ip address 100.0.0.1 255.255.255.255
```

Черёд BGP. Тут заострим внимание на каждой строчке.

```
R1(config)#router bgp 64500
```

Сначала мы запускаем BGP процесс и указываем номер AS. Именно тот номер, который выдал LIR. Это вам не OSPF – вольности недопустимы.

Теперь поднимаем пиринг.

```
R1(config-router)#neighbor 101.0.0.1 remote-as 64501
```

Командой neighbor мы указываем, с кем устанавливать сессию. Именно на адрес 101.0.0.1 маршрутизатор будет отсылать сначала TCP-SYN, а потом OPEN. Также мы обязаны указать номер удалённой Автономной Системы – 64501.

Конфигурация с обратной стороны симметрична:

```
R2(config)#router bgp 64501
R2(config-router)#neighbor 101.0.0.2 remote-as 64500
```

Уже по одному сообщению

```
*Mar 1 00:11:12.203: %BGP-5-ADJCHANGE: neighbor 101.0.0.2 Up
```

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

![](http://img-fotki.yandex.ru/get/6432/83739833.28/0_b9020_c27159c4_XL.png)

Вот они пробежали по всем состояниям и сейчас их статус Established.\
Получал и отправлял наш маршрутизатор по одному OPEN и успел за это время отослать и принять уже 2 KEEPALIVE.

Командой `sh ip bgp` можно посмотреть какие сети известны BGP:

![](http://img-fotki.yandex.ru/get/5635/83739833.28/0_b901c_acb9e5f_S.png)

Пусто. Надо указать, что есть у нас вот эта сеточка 100.0.0.0/23 и передать её провайдерам?\
Для этого существует три варианта:\
– определить сети командой network\
– импортировать из другого источника (direct, static, IGP)\
– создать аггрегированный маршрут командой aggregate-address

Забегая вперёд, заметим, что network имеет больший приоритет, а с импортированием нужно быть аккуратнее, чтобы не хватануть лишку.

```
R1(config)#router bgp 64500
R1(config-router)#network 100.0.0.0 mask 255.255.254.0
```

Смотрим появилась ли наша сеть в таблице:

![](http://img-fotki.yandex.ru/get/5635/83739833.28/0_b901c_acb9e5f_S.png)

Странно, но нет, ничего не появилось. На R2 тоже.

![](http://img-fotki.yandex.ru/get/5625/83739833.28/0_b901d_2d6afc21_S.png)

А дело тут в том, что в ту сеть, которую вы прописали командой **network** должен быть точный маршрут, иначе она не будет добавлена в таблицу BGP – это обязательное условие. Конечно, такого маршрута нет. Откуда ему взяться:

![](http://img-fotki.yandex.ru/get/5635/83739833.28/0_b9021_a868be14_L.png)

Поскольку реально у нас некуда прописывать такой маршрут – кроме одного Loopback-интерфейса, нигде этой сети нет, мы можем поступить следующим образом:

```
R1(config)#ip route 100.0.0.0 255.255.254.0 Null 0
```

Данный маршрут говорит о том, что все пакеты в эту подсеть будут отброшены. Но, не пугайтесь, нормальная работа не будет нарушена. Если у вас есть более точные маршруты (с маской больше /23, например, /24, /30, /32), то они будут предпочтительнее согласно правилу Longest Prefix Match.\
И теперь в таблице BGP есть наш локальный маршрут:

![](http://img-fotki.yandex.ru/get/6444/83739833.28/0_b901e_7ae276a0_XL.png)

Если настроить BGP и нужные маршруты на всех устройствах нашей схемы, то таблицы BGP и маршрутизации на нашем бордере (border – маршрутизатор на границе сети) будут выглядеть так:

![](http://img-fotki.yandex.ru/get/6429/83739833.28/0_b901f_b39774e5_XL.png)

![](http://img-fotki.yandex.ru/get/5631/83739833.28/0_b9022_cadfb241_XL.png)

Обратите внимание, что в таблице BGP по 2 маршрута к некоторым сетям, а в таблице маршрутизации только один. Маршрутизатор выбирает лучший из всех и только его переносит в таблицу маршрутизации. Об этом поговорим позже.\
Это необходимый минимум, после которого уже будет маленькое счастье.
