BGP - это сложный протокол маршрутизации, и бывают ситуации, когда что-то идет не так как надо. Кроме того, что он сложный, он также совершенно отличается от наших IGP протоколов (OSPF и EIGRP). В этой статье мы начнем с рассмотрения неполадок, возникающих в установлении соседства BGP, и как только это разберем, перейдем к проблемам с объявлением маршрутов, которые должны или не должны появляться!
Видео: Основы BGP за 7 минут
Урок 1
![Топология Топология](http://wiki.merionet.ru/images/troubleshooting-bgp/1.png)
Начнем с нескольких простых сценариев. Два маршрутизатора BGP, которые подключены и настроены для EBGP. К сожалению, мы видим это, когда проверяем соседство BGP:
![show ip bgp summary show ip bgp summary](http://wiki.merionet.ru/images/troubleshooting-bgp/2.png)
![show ip bgp summary show ip bgp summary](http://wiki.merionet.ru/images/troubleshooting-bgp/3.png)
Когда два маршрутизатора EBGP, которые напрямую подключены, не образуют рабочее соседство BGP, может произойти ряд ошибок:
- Layer 2 не позволяет нам добраться до другой стороны.
- Проблема уровня 3: неправильный IP-адрес на одном из маршрутизаторов.
- Список доступа, блокирующий TCP-порт 179 (BGP).
- Неправильный IP-адрес настроен для соседнего маршрутизатора BGP
Мы можем использовать команду show ip bgp summary
, чтобы проверить IP-адреса маршрутизаторов. Они, совпадают.
![выполним эхо – запрос выполним эхо – запрос](http://wiki.merionet.ru/images/troubleshooting-bgp/4.png)
Мы выполним эхо запрос, с помощью команды ping. Видим, что, пакеты не могут добраться до другой стороны.
![show ip int brief show ip int brief](http://wiki.merionet.ru/images/troubleshooting-bgp/5.png)
![show ip int brief show ip int brief](http://wiki.merionet.ru/images/troubleshooting-bgp/6.png)
Проверяем интерфейсы и видим, что кто-то ввел команду отключения интерфейса.
R2(config)#interface fa0/0 R2(config-if)#no shutdown
"Поднимаем" интерфейс
![Поднимаем интерфейс Поднимаем интерфейс](http://wiki.merionet.ru/images/troubleshooting-bgp/7.png)
![Поднимаем интерфейс Поднимаем интерфейс](http://wiki.merionet.ru/images/troubleshooting-bgp/8.png)
Это прекрасно! Наше соседство BGP установлено. Это было легко!
Итог урока: убедитесь, что ваш интерфейс работает.
Урок 2
![Топология Топология](http://wiki.merionet.ru/images/troubleshooting-bgp/9.png)
Следующая неполадка похожа на предыдущую, но немного отличается. Мы используем те же маршрутизаторы и номера AS, но на этот раз необходимо установить соседство BGP между интерфейсами обратной связи.
Посмотрим, как выглядит конфигурация BGP:
![show run | section bgp show run | section bgp](http://wiki.merionet.ru/images/troubleshooting-bgp/10.png)
![show run | section bgp show run | section bgp](http://wiki.merionet.ru/images/troubleshooting-bgp/11.png)
Вот конфигурация BGP. Как вы видите, мы используем loopback интерфейсы для установления соседства BGP-соседей.
![show ip bgp summary show ip bgp summary](http://wiki.merionet.ru/images/troubleshooting-bgp/12.png)
![show ip bgp summary show ip bgp summary](http://wiki.merionet.ru/images/troubleshooting-bgp/13.png)
Оба маршрутизатора показывают, что их сосед BGP бездействует. Есть ряд вещей, которые мы должны проверить здесь:
- Доступен ли IP-адрес соседа BGP? Мы не используем прямые линии связи, поэтому у нас могут возникнуть проблемы с маршрутизацией.
- TTL IP-пакетов, которые мы используем для внешнего BGP, равен 1. Это работает для сетей с прямым подключением, но, если они не подключены напрямую, нам нужно изменить эту настройку.
- По умолчанию BGP будет получать обновления с IP-адреса, ближайшего к соседу BGP. В нашем примере это интерфейс FastEthernet. Это то, что мы должны изменить.
![show ip route show ip route](http://wiki.merionet.ru/images/troubleshooting-bgp/14.png)
![show ip route show ip route](http://wiki.merionet.ru/images/troubleshooting-bgp/15.png)
Начнем с маршрутизации. Оба маршрутизатора знают только о своих напрямую подключенных сетях. Чтобы достичь loopback интерфейсов друг друга, мы будем использовать статическую маршрутизацию.
R1(config)#ip route 2.2.2.2 255.255.255.255 192.168.12.2 R2(config)#ip route 1.1.1.1 255.255.255.255 192.168.12.1
Два статических маршрута должны выполнить эту работу.
![Отправка ping на IP-адрес 2.2.2.2 Отправка ping на IP-адрес 2.2.2.2](http://wiki.merionet.ru/images/troubleshooting-bgp/16.png)
Отправка ping на IP-адрес 2.2.2.2 и получение его из нашего собственного loopback интерфейса доказывает, что оба маршрутизатора знают, как связаться с loopback интерфейсом друг друга.
R1(config-router)#neighbor 2.2.2.2 ebgp-multihop 2 R2(config-router)#neighbor 1.1.1.1 ebgp-multihop 2
Команда ebgp-multihop изменяет TTL на 2.
![debug ip bgp debug ip bgp](http://wiki.merionet.ru/images/troubleshooting-bgp/17.png)
![debug ip bgp debug ip bgp](http://wiki.merionet.ru/images/troubleshooting-bgp/18.png)
Мы можем включить отладку, чтобы увидеть прогресс. Ясно видно, что R2 использует IP-адрес 192.168.12.2, а R1 отказывается от соединения.
R1(config-router)#neighbor 2.2.2.2 update-source loopback 0 R2(config-router)#neighbor 1.1.1.1 update-source loopback 0
Используйте команду update-source, чтобы изменить IP-адрес источника для обновлений BGP.
![Соседство BGP работает Соседство BGP работает](http://wiki.merionet.ru/images/troubleshooting-bgp/19.png)
![Соседство BGP работает Соседство BGP работает](http://wiki.merionet.ru/images/troubleshooting-bgp/20.png)
Соседство BGP работает!
Итог урока: маршрутизаторам BGP не требуется устанавливать соседство с использованием напрямую подключенных интерфейсов. Убедитесь, что маршрутизаторы BGP могут связаться друг с другом, что пакеты BGP получены из правильного интерфейса, и в случае EBGP не забудьте использовать команду multihop.
Урок 3
![Топология №3 Топология №3](http://wiki.merionet.ru/images/troubleshooting-bgp/21.png)
Продолжим рассмотрение некоторых проблем IBGP. Два маршрутизатора в одной AS и вот конфигурация:
![show run | section bgp show run | section bgp](http://wiki.merionet.ru/images/troubleshooting-bgp/22.png)
![show run | section bgp show run | section bgp](http://wiki.merionet.ru/images/troubleshooting-bgp/23.png)
Легко и просто. Маршрутизаторы используют напрямую подключенные IP-адреса для соседства BGP.
![show ip bgp summary show ip bgp summary](http://wiki.merionet.ru/images/troubleshooting-bgp/24.png)
![show ip bgp summary show ip bgp summary](http://wiki.merionet.ru/images/troubleshooting-bgp/25.png)
Жаль ... мы не становимся соседями. Что может быть не так? Мы используем напрямую подключенные интерфейсы, поэтому не так много проблем, если не считать проблемы L2 / L2.
![Отправка пинга с одного маршрутизатора на другой Отправка пинга с одного маршрутизатора на другой](http://wiki.merionet.ru/images/troubleshooting-bgp/26.png)
Отправка пинга с одного маршрутизатора на другой доказывает, что L2 и L3 работают нормально. Как насчет L3? У нас могут быть проблемы с транспортным уровнем.
![telnet проверка telnet проверка](http://wiki.merionet.ru/images/troubleshooting-bgp/27.png)
![telnet проверка telnet проверка](http://wiki.merionet.ru/images/troubleshooting-bgp/28.png)
Я не могу подключиться к TCP-порту 179 с обоих маршрутизаторов. Это звоночек в сторону того, что что-то блокирует BGP?
![show ip interface fastEthernet 0/0 | include access show ip interface fastEthernet 0/0 | include access](http://wiki.merionet.ru/images/troubleshooting-bgp/29.png)
![show ip interface fastEthernet 0/0 | include access show ip interface fastEthernet 0/0 | include access](http://wiki.merionet.ru/images/troubleshooting-bgp/30.png)
Вот оно! Это Служба безопасности.…
![show ip access-lists show ip access-lists](http://wiki.merionet.ru/images/troubleshooting-bgp/31.png)
Кто-то решил, что было бы неплохо "обезопасить" BGP и заблокировать его списком доступа.
R2(config)#interface fastEthernet 0/0 R2(config-if)#no ip access-group 100 in
Удалим список доступа.
![не блокируйте TCP-порт BGP 179 не блокируйте TCP-порт BGP 179](http://wiki.merionet.ru/images/troubleshooting-bgp/32.png)
![не блокируйте TCP-порт BGP 179 не блокируйте TCP-порт BGP 179](http://wiki.merionet.ru/images/troubleshooting-bgp/33.png)
Итог урока: не блокируйте TCP-порт BGP 179.
Урок 4
![Топология №4 Топология №4](http://wiki.merionet.ru/images/troubleshooting-bgp/34.png)
Следующая проблема IBGP. Это похоже на ситуацию с EBGP ранее...мы будем использовать loopback-интерфейсы для установления соседства BGP, вот конфигурации:
![show run | section router bgp show run | section router bgp](http://wiki.merionet.ru/images/troubleshooting-bgp/35.png)
![show run | section router bgp show run | section router bgp](http://wiki.merionet.ru/images/troubleshooting-bgp/36.png)
Ничего особенного, IBGP и мы используем loopback интерфейсы.
![show ip bgp summary | begin Neighbor show ip bgp summary | begin Neighbor](http://wiki.merionet.ru/images/troubleshooting-bgp/37.png)
![show ip bgp summary | begin Neighbor show ip bgp summary | begin Neighbor](http://wiki.merionet.ru/images/troubleshooting-bgp/38.png)
Не повезло здесь ... нет соседей. Давайте сначала проверим, могут ли маршрутизаторы получить доступ к loopback интерфейсам друг друга:
![show ip route show ip route](http://wiki.merionet.ru/images/troubleshooting-bgp/39.png)
![show ip route show ip route](http://wiki.merionet.ru/images/troubleshooting-bgp/40.png)
Быстрый взгляд на таблицу маршрутизации показывает нам, что это не так. Мы могли бы исправить это с помощью статического маршрута или IGP. Обычно мы используем IGP для IBGP для объявления loopback интерфейсов. Сейчас будем использовать OSPF:
R1(config)#router ospf 1 R1(config-router)#network 1.1.1.0 0.0.0.255 area 0 R1(config-router)#network 192.168.12.0 0.0.0.255 area 0 R2(config)#router ospf 1 R2(config-router)#network 192.168.12.0 0.0.0.255 area 0 R2(config-router)#network 2.2.2.0 0.0.0.255 area 0
Набор правильных команд OSPF должно сделать свою работу!
![Отправка эхо-запроса Отправка эхо-запроса](http://wiki.merionet.ru/images/troubleshooting-bgp/41.png)
Отправка эхо-запроса, чтобы проверить, знают ли маршрутизаторы и как связаться с сетями друг друга, успешен.
![show ip bgp summary | begin Neighbor show ip bgp summary | begin Neighbor](http://wiki.merionet.ru/images/troubleshooting-bgp/42.png)
![show ip bgp summary | begin Neighbor show ip bgp summary | begin Neighbor](http://wiki.merionet.ru/images/troubleshooting-bgp/43.png)
Тем не менее, соседство BGP по-прежнему отсутствует
![debug ip bgp debug ip bgp](http://wiki.merionet.ru/images/troubleshooting-bgp/44.png)
![debug ip bgp debug ip bgp](http://wiki.merionet.ru/images/troubleshooting-bgp/45.png)
Отладка показывает, что в соединении отказано, а также показывает локальный IP-адрес, который используется для BGP. Кажется, кто-то забыл добавить команду update-source, так что давайте исправим это!
R1(config)#router bgp 1 R1(config-router)#neighbor 2.2.2.2 update-source loopback 0 R2(config)#router bgp 1 R2(config-router)#neighbor 1.1.1.1 update-source loopback 0
Точно так же, как EBGP, мы должны установить правильный источник для наших пакетов BGP.
![Задача решена Задача решена](http://wiki.merionet.ru/images/troubleshooting-bgp/46.png)
![Задача решена Задача решена](http://wiki.merionet.ru/images/troubleshooting-bgp/47.png)
Задача решена! Единственное отличие от EBGP в том, что нам не нужно менять TTL с помощью команды ebgp-multihop.
Итог урока: распространенная практика настройки IBGP между loopback интерфейсами. Убедитесь, что эти loopback доступны и обновления BGP получены из loopback интерфейса.
Теперь, рекомендуем почитать вторую часть статьи по траблшутингу протокола BGP.