# Настройка 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 маршрута к некоторым сетям, а в таблице маршрутизации только один. Маршрутизатор выбирает лучший из всех и только его переносит в таблицу маршрутизации. Об этом поговорим позже.\
Это необходимый минимум, после которого уже будет маленькое счастье.


---

# Agent Instructions: 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://linkmeup.gitbook.io/sdsm/8.-bgp-i-ip-sla/2.-bgp/2.-nastroika-bgp-i-praktika/0.-nastroika-bgp.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.
