ESC

Start typing to search across invoices, services, domains, tickets, and more...

Search... Ctrl+K
IP и ASN

Проверка состояния BGP-сессии в Linux: BIRD 2 и FRRouting, что значат Idle/Active/Established

5 шагов 11 мин чтения 961 просмотров 80
Содержание

Если вы анонсируете собственные IP-префиксы с выделенного сервера, первым делом нужно проверить состояние BGP-сессии — она должна быть в статусе Established. В этой статье показано, как проверять BGP-сессии в Linux с помощью BIRD 2 и FRRouting (FRR), что означают состояния Idle, Active, Established и как искать причину, если сессия не поднимается. Подходит для Debian/Ubuntu и CentOS/Rocky/AlmaLinux. В примерах локальная ASN — 64500, апстрим — 203.0.113.1, анонсируемый префикс — 198.51.100.0/24.

Шаг 1: Установите BIRD 2 или FRRouting

Если демон ещё не установлен, выберите один из вариантов. BIRD отличается компактной конфигурацией и удобен для анонса с одного сервера; FRR использует синтаксис в стиле Cisco, привычный сетевым инженерам.

# Debian / Ubuntu
apt install -y bird2        # or: apt install -y frr
# CentOS / Rocky / AlmaLinux
dnf install -y epel-release && dnf install -y bird   # BIRD 2.x from EPEL
dnf install -y frr                                  # or FRRouting

Шаг 2: Проверка BGP-сессии в BIRD через birdc

birdc show protocols выводит все протоколы; для здоровой BGP-сессии в колонке Info указано Established. С параметром all видны ASN соседа, hold timer, число маршрутов и последняя ошибка, а show route export подтверждает, что префикс действительно отдаётся апстриму.

birdc show protocols
birdc show protocols all upstream1
birdc show route export upstream1
birdc show route protocol upstream1 count
Name       Proto      Table      State  Since         Info
device1    Device     ---        up     2026-10-01
upstream1  BGP        ---        up     2026-10-01    Established

Шаг 3: Проверка BGP-сессии в FRR через vtysh

Выполните show bgp summary. Если в колонке State/PfxRcd число (количество полученных префиксов), сессия в Established; слова Idle, Active или Connect означают, что она не установлена. Подкоманды neighbors показывают детали, а также отданные и полученные маршруты.

vtysh -c "show bgp summary"
vtysh -c "show bgp ipv4 unicast neighbors 203.0.113.1"
vtysh -c "show bgp ipv4 unicast neighbors 203.0.113.1 advertised-routes"
vtysh -c "show bgp ipv4 unicast neighbors 203.0.113.1 routes"

Обратите внимание: в свежих версиях FRR по умолчанию включён ebgp-requires-policy. eBGP-сосед без входящей и исходящей политики отображается как (Policy): сессия поднята, но маршруты не передаются. Назначьте route-map:

router bgp 64500
 address-family ipv4 unicast
  network 198.51.100.0/24
  neighbor 203.0.113.1 route-map UPSTREAM-IN in
  neighbor 203.0.113.1 route-map UPSTREAM-OUT out
 exit-address-family

Шаг 4: Что означают состояния BGP-сессии

BIRD и FRR следуют конечному автомату BGP из RFC 4271. Эти команды покажут только текущее состояние и последнюю ошибку:

birdc show protocols all upstream1 | grep -E "BGP state|Neighbor AS|Last error"
vtysh -c "show bgp ipv4 unicast neighbors 203.0.113.1" | grep -E "BGP state|Last reset"
СостояниеЗначениеТипичная причина
IdleПодключение не выполняется или ожидание после сбросаОшибка конфигурации, сосед выключен, пауза после ошибки
ConnectУстанавливается TCP-соединениеСосед ещё не ответил
ActiveTCP не удалось, повторные попыткиНет связности по IP, заблокирован TCP 179, сосед вас не настроил
OpenSent / OpenConfirmTCP есть, идёт обмен OPENНесовпадение ASN, неверный пароль MD5, конфликт router ID
EstablishedСессия установлена, идёт обмен маршрутамиНорма

Шаг 5: Диагностика, если BGP-сессия не переходит в Established

Проверьте ping до соседа и доступность TCP 179, затем убедитесь, что локальный файрвол пропускает порт 179 от соседа.

ping -c 4 203.0.113.1
nc -zv 203.0.113.1 179
ss -tnp | grep ':179'
# iptables (Debian / Ubuntu)
iptables -I INPUT -p tcp -s 203.0.113.1 --dport 179 -j ACCEPT
# firewalld (CentOS / Rocky / AlmaLinux)
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.1" port port="179" protocol="tcp" accept'
firewall-cmd --reload

Посмотрите в журналах конкретную ошибку, например «Bad peer AS» (неверная ASN) или «Hold timer expired» (проблема канала или файрвола). После правки конфигурации можно перезапустить только эту сессию:

journalctl -u bird -n 50 --no-pager
journalctl -u frr -n 50 --no-pager
birdc restart upstream1
vtysh -c "clear bgp ipv4 unicast 203.0.113.1 soft"
Сброс или перезапуск сессии ненадолго отзывает ваши маршруты. По возможности используйте soft-сброс и избегайте часов пик.

Частые вопросы

Сессия Established, но префикс не виден в интернете

Проверьте, что фильтр экспорта пропускает префикс, есть route-объект в IRR и валидный ROA, а апстрим обновил фильтры. Проверьте через публичный looking glass.

Сессия постоянно переключается между Active и Idle

Обычно TCP 179 недоступен или сосед ещё не настроен. Сверьте IP, ASN, необходимость multihop и пароль MD5 с обеих сторон.

Может ли IMIDC помочь с настройкой BGP-сессии?

Если вы арендуете IP или ASN у IMIDC и анонсируете их с серверов IMIDC, отправьте тикет с ASN, префиксами и требованиями к сессии — инженеры помогут с подключением.

Если проблема не решена, создайте тикет в поддержку IMIDC, работающую 24/7.

Помог ли вам данный ответ?

Похожие руководства