ESC

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

Search... Ctrl+K
IP y ASN

Cómo verificar el estado de una sesión BGP en Linux (BIRD 2 y FRR)

5 pasos 13 min de lectura 965 vistas 80
Contenido

Cuando anuncia sus propios prefijos IP desde un servidor dedicado, lo primero que debe hacer es verificar el estado de la sesión BGP: tiene que estar en Established. Esta guía muestra cómo inspeccionar y verificar sesiones BGP en Linux con BIRD 2 y FRRouting (FRR), explica estados como Idle, Active y Established, y recorre la resolución de problemas cuando una sesión no se levanta. Se aplica a Debian/Ubuntu y CentOS/Rocky/AlmaLinux. En los ejemplos, el ASN local es 64500, el peer upstream es 203.0.113.1 y el prefijo anunciado es 198.51.100.0/24.

Paso 1: Instale BIRD 2 o FRRouting

Si aún no tiene nada instalado, elija uno de los siguientes daemons. BIRD tiene una configuración compacta, adecuada para anuncios desde un único servidor; FRR usa una sintaxis similar a la de Cisco, conocida por los ingenieros de redes.

# 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

Paso 2: Verifique el estado de la sesión BGP en BIRD con birdc

birdc show protocols lista todos los protocolos; una sesión BGP que muestra Established en la columna Info está en buen estado. Al añadir all se muestran el ASN del peer, el hold timer, el número de rutas y el último error, mientras que show route export confirma que su prefijo realmente se está enviando al upstream.

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

Paso 3: Verifique el estado de la sesión BGP en FRR con vtysh

Ejecute show bgp summary. Si la columna State/PfxRcd muestra un número (prefijos recibidos), la sesión está en Established; palabras como Idle, Active o Connect indican que no lo está. Los subcomandos neighbors muestran los detalles, además de las rutas anunciadas y recibidas.

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"

Tenga en cuenta que las versiones recientes de FRR activan ebgp-requires-policy de forma predeterminada. Un vecino eBGP sin política de entrada/salida muestra (Policy) en el resumen: la sesión está activa, pero no se intercambian rutas. Asocie route-maps para solucionarlo:

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

Paso 4: Entienda los estados habituales de una sesión BGP

Tanto BIRD como FRR siguen la máquina de estados finitos de BGP definida en el RFC 4271. Estos comandos muestran solo el estado actual y el último error:

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"
EstadoSignificadoCausa típica
IdleNo lo está intentando, o espera tras un reinicioError de configuración, vecino desactivado, espera (back-off) tras un error
ConnectAbriendo la conexión TCPEl peer aún no ha respondido
ActiveFalló la conexión TCP, reintentandoSin alcance IP, TCP 179 bloqueado, el peer no está configurado para usted
OpenSent / OpenConfirmTCP establecido, intercambiando parámetros OPENASN no coincidente, contraseña MD5 incorrecta, conflicto de router ID
EstablishedSesión activa, rutas intercambiadasNormal

Paso 5: Solucione una sesión BGP que no llega a Established

Confirme que puede hacer ping al peer y alcanzar el puerto TCP 179; luego asegúrese de que el firewall local acepta el puerto 179 desde el peer.

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

Revise los registros para ver el error exacto, por ejemplo "Bad peer AS" (ASN incorrecto) o "Hold timer expired" (problema de enlace o de firewall). Después de cambiar la configuración, puede reiniciar solo esa sesión:

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"
Borrar o reiniciar una sesión retira brevemente sus rutas. Dé preferencia a los soft resets y evite las horas punta.

Preguntas frecuentes

La sesión está en Established, pero mi prefijo no es visible en Internet

Compruebe que el filtro de exportación permite el prefijo, que este tiene un objeto route en el IRR y un ROA válido, y que el upstream ha actualizado sus filtros. Verifíquelo con un looking glass público.

La sesión alterna continuamente entre Active e Idle

Normalmente el puerto TCP 179 no es alcanzable o el peer aún no está configurado. Vuelva a revisar las IP, los ASN, los requisitos de multihop y la contraseña MD5 en ambos extremos.

¿Puede IMIDC ayudarme a configurar la sesión BGP?

Si alquila IP o un ASN a IMIDC y los anuncia desde servidores de IMIDC, abra un ticket de soporte con su ASN, sus prefijos y los requisitos de la sesión, y nuestros ingenieros le ayudarán con el peering.

¿Sigue sin resolverlo? Abra un ticket con el soporte técnico 24/7 de IMIDC.

¿Fue útil la respuesta?

Tutoriales relacionados