Configuracion de BGP con BIRD2 en un VPS Linux
Instala BIRD2 en Debian 12 o Ubuntu 24.04 y configura una sesion BGP para anunciar tus propios prefijos IP. Dual-stack, filtros de exportacion, interfaces dummy persistentes, reglas nftables y verificacion con birdc.
BIRD es el demonio de enrutamiento mantenido por CZ.NIC. La version 2 unifico IPv4 e IPv6 en un solo demonio, reemplazo la arquitectura dividida BIRD/BIRD6 de la version 1.x e incorporo un potente lenguaje de filtros. Esta guia cubre la instalacion de BIRD2 en un VPS Linux, la configuracion de una sesion BGP con tu proveedor upstream, el anuncio de tus prefijos IP y la verificacion de todo el proceso.
Todos los ejemplos son dual-stack (IPv4 + IPv6). Sustituye los ASN, IPs y prefijos de ejemplo por tus propios valores.
Que necesitas antes de configurar BIRD2 para BGP?
Antes de tocar bird.conf, necesitas un ASN, espacio IP asignado y un proveedor que ofrezca sesiones BGP en tu VPS. Sin estos tres elementos, BIRD2 no tiene nada que anunciar ni con quien hacer peering.
Reune estos datos de tu proveedor o de tu asignacion RIR:
| Elemento | Valor de ejemplo | Donde obtenerlo |
|---|---|---|
| Tu ASN | AS65400 | RIPE NCC, ARIN o tu LIR |
| Tu prefijo IPv4 | 203.0.113.0/24 | Asignacion RIR o asignacion PA del proveedor |
| Tu prefijo IPv6 | 2001:db8:1000::/48 | Asignacion RIR o asignacion PA del proveedor |
| ASN del upstream | AS64496 | Detalles de la sesion BGP del proveedor |
| IP de peering IPv4 del upstream | 198.51.100.1 | Detalles de la sesion BGP del proveedor |
| IP de peering IPv6 del upstream | 2001:db8::1 | Detalles de la sesion BGP del proveedor |
| Tu IP de peering IPv4 | 198.51.100.2 | Detalles de la sesion BGP del proveedor |
| Tu IP de peering IPv6 | 2001:db8::2 | Detalles de la sesion BGP del proveedor |
| Contrasena MD5 | (secreto compartido) | Acordada con el proveedor |
Tambien necesitas registros ROA publicados para tus prefijos antes de que tus rutas pasen la validacion RPKI en redes downstream. Consulta para esa configuracion.
Asegurate de que tu proveedor ha anadido tus prefijos a sus filtros IRR. Sin eso, tus anuncios seran filtrados aunque la sesion BGP se establezca.
Un VPS con al menos 1 GB de RAM es suficiente para BIRD2 con una tabla completa (mas de 1 millon de rutas IPv4). Si solo aceptas una ruta por defecto de tu upstream, el consumo de memoria se mantiene por debajo de 100 MB.
Como instalar BIRD2 en Debian 12 y Ubuntu 24.04?
BIRD2 esta disponible en los repositorios por defecto de ambas distribuciones. Debian 12 incluye la version 2.0.12, Ubuntu 24.04 incluye la 2.14. Ambas funcionan para BGP basico, pero el repositorio oficial de CZ.NIC proporciona BIRD 2.18 (publicado en enero de 2026) con soporte para BGP dynamic unnumbered, mejoras de rendimiento y correcciones recientes. Usa el repositorio de CZ.NIC para despliegues en produccion.
Nota: CZ.NIC publica los paquetes de BIRD2 bajo el nombre de proyecto bird2. No lo confundas con el proyecto bird (que solo cubre Debian) ni con bird3 (BIRD 3.x).
Instalar desde el repositorio de CZ.NIC (recomendado)
Anade el repositorio oficial e instala:
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates wget
Importa la clave GPG de CZ.NIC:
sudo wget -O /usr/share/keyrings/cznic-labs-pkg.gpg https://pkg.labs.nic.cz/gpg
Anade el repositorio. En Debian 12:
echo "deb [signed-by=/usr/share/keyrings/cznic-labs-pkg.gpg] https://pkg.labs.nic.cz/bird2 bookworm main" | sudo tee /etc/apt/sources.list.d/cznic-labs-bird.list
En Ubuntu 24.04:
echo "deb [signed-by=/usr/share/keyrings/cznic-labs-pkg.gpg] https://pkg.labs.nic.cz/bird2 noble main" | sudo tee /etc/apt/sources.list.d/cznic-labs-bird.list
Instala BIRD2:
sudo apt-get update
sudo apt-get -y install bird2
Instalar desde los repositorios por defecto
Si prefieres el paquete de la distribucion:
sudo apt-get update
sudo apt-get -y install bird2
Verificar la instalacion
bird --version
Salida esperada (repositorio CZ.NIC):
BIRD version 2.18
Comprueba que el servicio esta en ejecucion:
sudo systemctl status bird
BIRD arranca automaticamente tras la instalacion. La configuracion por defecto en /etc/bird/bird.conf es un esqueleto. La reemplazaras por completo en la siguiente seccion.
Como esta estructurado bird.conf para BGP?
Un bird.conf preparado para BGP tiene cinco bloques: configuracion global y cuatro secciones de protocolo (device, direct, kernel, bgp). Cada protocolo funciona de forma independiente y se comunica a traves de tablas de enrutamiento.
Este es el bird.conf completo para una configuracion BGP dual-stack. Leelo primero; las secciones siguientes explican cada bloque.
sudo cp /etc/bird/bird.conf /etc/bird/bird.conf.bak
sudo tee /etc/bird/bird.conf > /dev/null << 'BIRDCONF'
# /etc/bird/bird.conf - BIRD2 BGP configuration
# Replace all placeholder values with your own
log syslog all;
router id 198.51.100.2;
# Watch interface state changes
protocol device {
scan time 10;
}
# Import connected routes (needed for next-hop resolution)
protocol direct {
ipv4;
ipv6;
interface "dummy0";
interface "eth0";
}
# Sync BIRD routes to kernel routing table
protocol kernel {
ipv4 {
export all;
import all;
};
learn;
scan time 15;
merge paths on;
}
protocol kernel {
ipv6 {
export all;
import all;
};
learn;
scan time 15;
merge paths on;
}
# Define your prefixes
define OWN_V4_PREFIX = 203.0.113.0/24;
define OWN_V6_PREFIX = 2001:db8:1000::/48;
# Export filter: only announce your own prefixes
filter export_bgp_v4 {
if net = OWN_V4_PREFIX then accept;
reject;
}
filter export_bgp_v6 {
if net = OWN_V6_PREFIX then accept;
reject;
}
# Static routes for prefix origination (point to dummy0)
protocol static static_v4 {
ipv4;
route 203.0.113.0/24 via "dummy0";
}
protocol static static_v6 {
ipv6;
route 2001:db8:1000::/48 via "dummy0";
}
# BGP session with upstream provider
protocol bgp upstream1 {
description "Upstream Provider";
local 198.51.100.2 as 65400;
neighbor 198.51.100.1 as 64496;
source address 198.51.100.2;
hold time 90;
keepalive time 30;
password "your-md5-secret";
ipv4 {
import all;
export filter export_bgp_v4;
next hop self;
};
ipv6 {
import all;
export filter export_bgp_v6;
next hop self;
};
}
BIRDCONF
Establece los permisos del archivo de configuracion. Solo root y el usuario bird necesitan acceso:
sudo chown root:bird /etc/bird/bird.conf
sudo chmod 640 /etc/bird/bird.conf
Verifica los permisos:
ls -la /etc/bird/bird.conf
Salida esperada:
-rw-r----- 1 root bird 1247 Mar 19 12:00 /etc/bird/bird.conf
Configuracion global
log syslog all;
router id 198.51.100.2;
router id debe ser una direccion IPv4 unica a nivel global. Usa una de tus IPs asignadas. BIRD puede auto-detectarla desde las interfaces, pero es mejor declararla explicitamente.
log syslog all envia todos los mensajes de log al journal del sistema. Lelos con journalctl -u bird -f. Si necesitas salida detallada mientras depuras un protocolo concreto, anade debug protocols all; temporalmente. Eliminalo cuando la sesion funcione. El logging a nivel debug genera un volumen alto y puede llenar el almacenamiento del journal.
Protocol device
protocol device {
scan time 10;
}
Vigila cambios de estado en las interfaces cada 10 segundos. Obligatorio. Sin el, BIRD no sabe cuando las interfaces suben o bajan.
Protocol direct
protocol direct {
ipv4;
ipv6;
interface "dummy0";
interface "eth0";
}
Importa rutas conectadas de las interfaces listadas. BIRD las necesita para la resolucion de next-hop. Lista solo las interfaces involucradas en tu configuracion BGP.
Protocol kernel
Se necesitan dos bloques kernel protocol: uno para IPv4 y otro para IPv6. Cada uno sincroniza su familia de direcciones entre la tabla de enrutamiento de BIRD y la tabla del kernel de Linux.
merge paths on habilita ECMP si tienes multiples upstreams. learn importa las rutas existentes del kernel a BIRD.
Que hace el bloque protocol BGP?
El bloque protocol bgp define una sesion de peering con un vecino. Especifica quien eres (local ... as), con quien haces peering (neighbor ... as), la autenticacion (password) y que rutas se intercambian (bloques de canal).
Campos clave:
| Directiva | Funcion |
|---|---|
local <ip> as <ASN> |
Tu IP de peering y tu ASN |
neighbor <ip> as <ASN> |
IP de peering y ASN del upstream |
source address <ip> |
IP de origen para la conexion TCP |
hold time 90 |
Segundos antes de declarar al peer como caido (3x keepalive) |
keepalive time 30 |
Intervalo entre mensajes keepalive |
password "..." |
Autenticacion MD5 (RFC 2385) |
La autenticacion MD5 protege la sesion BGP contra resets TCP falsificados y ataques de inyeccion. Ambos lados deben configurar la misma contrasena. Solicita el secreto compartido a tu proveedor.
Como configurar canales dual-stack IPv4 e IPv6?
BIRD2 gestiona IPv4 e IPv6 como canales separados dentro del mismo bloque de protocolo. Cada canal tiene su propia politica de importacion/exportacion:
ipv4 {
import all;
export filter export_bgp_v4;
next hop self;
};
ipv6 {
import all;
export filter export_bgp_v6;
next hop self;
};
import all acepta todas las rutas del upstream. En produccion, deberias filtrar tambien las importaciones. Consulta para ejemplos de filtros de importacion.
next hop self reescribe el atributo next-hop con tu IP de peering. Es necesario cuando el upstream espera que el trafico fluya a traves de tu direccion, que es la configuracion estandar en un VPS.
Si tu proveedor ejecuta sesiones BGP separadas para IPv4 e IPv6 (IPs de vecino distintas por familia de direcciones), dividelas en dos bloques protocol bgp.
Como escribir filtros de exportacion para anunciar solo tus prefijos?
Los filtros de exportacion controlan que rutas envia BIRD al upstream. Un filtro de exportacion mal configurado puede dejar escapar rutas que no te pertenecen, lo que hara que tu sesion sea cerrada y potencialmente recibas una llamada del NOC de tu upstream.
El filtro en la configuracion anterior usa una coincidencia simple de prefijo:
define OWN_V4_PREFIX = 203.0.113.0/24;
filter export_bgp_v4 {
if net = OWN_V4_PREFIX then accept;
reject;
}
Esto acepta solo el /24 exacto. Todo lo demas se rechaza. El reject al final es el deny por defecto.
Para multiples prefijos, usa un set:
define OWN_V4_PREFIXES = [ 203.0.113.0/24, 198.51.100.0/24 ];
filter export_bgp_v4 {
if net ~ OWN_V4_PREFIXES then accept;
reject;
}
El operador ~ compara contra un prefix set. Tambien soporta notacion de rango:
define OWN_V4_PREFIXES = [ 203.0.113.0/24{24,24} ];
El {24,24} restringe la coincidencia exactamente a /24. Usa {24,28} para permitir tambien desagregacion hasta /28 si necesitas anunciar more-specifics para ingenieria de trafico (traffic engineering).
Para IPv6, se aplica el mismo patron:
define OWN_V6_PREFIXES = [ 2001:db8:1000::/48{48,48} ];
filter export_bgp_v6 {
if net ~ OWN_V6_PREFIXES then accept;
reject;
}
Manten siempre los filtros de exportacion lo mas restrictivos posible. Anuncia solo lo que te pertenece, con las longitudes de prefijo exactas que pretendes. Un reject ausente al final del filtro hara que BIRD use la accion por defecto del canal, que puede ser accept. Termina siempre con un reject explicito.
Puedes probar tu filtro sin aplicarlo:
sudo birdc eval '203.0.113.0/24 ~ [ 203.0.113.0/24 ]'
Esto devuelve TRUE o FALSE y ayuda a depurar la logica de filtros antes de recargar la configuracion.
Como crear una interfaz dummy persistente para la originacion de prefijos?
BGP anuncia prefijos que existen en la tabla de enrutamiento. Necesitas una interfaz con tu prefijo asignado para que BIRD pueda originar la ruta. Una interfaz dummy cumple esta funcion: siempre esta activa, no tiene enlace fisico y sobrevive a reinicios cuando se configura a traves de systemd-networkd.
Los comandos efimeros ip link add se pierden tras un reinicio. Usa systemd-networkd en su lugar.
Crear el archivo .netdev
sudo tee /etc/systemd/network/10-dummy0.netdev > /dev/null << 'EOF'
[NetDev]
Name=dummy0
Kind=dummy
EOF
Crear el archivo .network
sudo tee /etc/systemd/network/10-dummy0.network > /dev/null << 'EOF'
[Match]
Name=dummy0
[Network]
Address=203.0.113.1/32
Address=2001:db8:1000::1/128
EOF
Asigna un solo /32 (o /128 para IPv6) de tu prefijo asignado a la interfaz dummy. Esta direccion no necesita ser alcanzable desde el exterior. Existe solo para que BIRD tenga una ruta conectada para el prefijo.
Aplicar y verificar
sudo systemctl restart systemd-networkd
Espera unos segundos y comprueba:
ip addr show dummy0
Salida esperada:
3: dummy0: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
link/ether aa:bb:cc:dd:ee:ff brd ff:ff:ff:ff:ff:ff
inet 203.0.113.1/32 scope global dummy0
valid_lft forever preferred_lft forever
inet6 2001:db8:1000::1/128 scope global
valid_lft forever preferred_lft forever
El state UNKNOWN en una interfaz dummy es normal. Significa que la capa de enlace no tiene un portador fisico que rastrear, pero la interfaz esta UP y reenviando trafico. La direccion MAC es generada aleatoriamente por systemd-networkd y sera distinta en tu sistema.
Si usas ifupdown en lugar de systemd-networkd (compruebalo con networkctl status), puede que necesites habilitar systemd-networkd primero:
sudo systemctl enable --now systemd-networkd
Verifica que los archivos estan en su sitio para el proximo reinicio:
ls -la /etc/systemd/network/10-dummy0.*
-rw-r--r-- 1 root root 42 Mar 19 12:00 /etc/systemd/network/10-dummy0.netdev
-rw-r--r-- 1 root root 89 Mar 19 12:00 /etc/systemd/network/10-dummy0.network
Como proteger BGP con reglas de firewall nftables?
BGP funciona sobre el puerto TCP 179. Sin reglas de firewall, cualquier host en internet puede intentar abrir una sesion BGP con tu router. Los escaneadores automatizados encuentran un puerto 179 abierto en cuestion de horas tras poner un VPS en linea. Restringe el puerto 179 solo a las IPs de tus peers.
nftables puede no estar instalado por defecto en Ubuntu 24.04. Instalalo primero:
sudo apt-get -y install nftables
Crear el conjunto de reglas nftables
sudo tee /etc/nftables.d/bgp.conf > /dev/null << 'EOF'
table inet bgp_filter {
set bgp_peers_v4 {
type ipv4_addr
elements = { 198.51.100.1 }
}
set bgp_peers_v6 {
type ipv6_addr
elements = { 2001:db8::1 }
}
chain input {
type filter hook input priority 0; policy accept;
# Allow BGP from known peers only
tcp dport 179 ip saddr @bgp_peers_v4 accept
tcp dport 179 ip6 saddr @bgp_peers_v6 accept
# Drop BGP from everyone else
tcp dport 179 drop
}
}
EOF
Anade mas IPs de peers a los sets a medida que agregues upstreams. Los named sets permiten actualizar listas de peers sin reescribir las reglas.
Integrar con tu configuracion nftables existente
Si ya tienes /etc/nftables.conf, incluye las reglas BGP:
echo 'include "/etc/nftables.d/bgp.conf"' | sudo tee -a /etc/nftables.conf
Si aun no tienes nftables configurado, crea el directorio y carga la configuracion:
sudo mkdir -p /etc/nftables.d
sudo systemctl enable --now nftables
enable --now inicia nftables inmediatamente y asegura que se cargue en cada arranque.
Aplica las reglas:
sudo nft -f /etc/nftables.d/bgp.conf
Verificar las reglas
sudo nft list table inet bgp_filter
Salida esperada:
table inet bgp_filter {
set bgp_peers_v4 {
type ipv4_addr
elements = { 198.51.100.1 }
}
set bgp_peers_v6 {
type ipv6_addr
elements = { 2001:db8::1 }
}
chain input {
type filter hook input priority filter; policy accept;
tcp dport 179 ip saddr @bgp_peers_v4 accept
tcp dport 179 ip6 saddr @bgp_peers_v6 accept
tcp dport 179 drop
}
}
nft list normaliza priority 0 a priority filter y elimina los comentarios. Esto es esperado.
Comprueba que la regla funciona verificando el estado de las conexiones. Desde el VPS:
sudo nft list ruleset | grep -c "179"
Esto deberia devolver un conteo que coincida con el numero de reglas de puerto 179 que creaste.
Confirma tambien que el trafico BGP no esta bloqueado entre tu y tu peer. Las reglas anteriores solo afectan las conexiones entrantes. BIRD inicia conexiones salientes hacia el peer, que son gestionadas por la entrada conntrack established/related. Si tienes una politica de salida restrictiva, anade:
sudo nft add rule inet bgp_filter input ct state established,related accept
Esto ya deberia estar en tu conjunto de reglas base del firewall. Si no lo esta, anadelo antes de las reglas BGP.
Como aplicar la configuracion de BIRD2?
Antes de cargar una nueva configuracion, validala:
sudo birdc configure check
Salida esperada:
BIRD 2.18 ready.
Reading configuration from /etc/bird/bird.conf
Configuration OK
Si hay errores de sintaxis, BIRD informa el numero de linea y el problema. Corrige y vuelve a verificar.
Aplica la configuracion:
sudo birdc configure
BIRD 2.18 ready.
Reading configuration from /etc/bird/bird.conf
Reconfigured
Puede que veas Reconfiguration in progress en lugar de Reconfigured si BIRD aun esta procesando cambios de protocolo (como establecer una nueva sesion BGP). Ambos mensajes son normales.
BIRD aplica la nueva configuracion sin reiniciar. Las sesiones existentes realizan una reconfiguracion suave cuando es posible. Si cambiaste la IP del vecino o el AS local, BIRD reinicia el protocolo afectado automaticamente.
Para cambios de configuracion que no deben interrumpir las sesiones en ejecucion (cambios de filtros, adicion de rutas estaticas), usa:
sudo birdc reload upstream1
Esto re-aplica los filtros de importacion/exportacion a las rutas existentes sin cerrar la sesion TCP.
Como verificar tu sesion BGP y los anuncios de rutas?
Despues de aplicar la configuracion, usa birdc para comprobar que la sesion esta establecida y las rutas se estan anunciando. Estos comandos son tus herramientas principales de depuracion.
| Comando | Que muestra | Cuando usarlo |
|---|---|---|
show protocols |
Resumen del estado de los protocolos (Established, Active, etc.) | Primera comprobacion tras un cambio de configuracion |
show protocols all upstream1 |
Detalles completos de la sesion, contadores, temporizadores | Depurar una sesion concreta |
show route |
Todas las rutas en la tabla de BIRD | Verificar rutas recibidas y estaticas |
show route export upstream1 |
Rutas que se envian al upstream | Confirmar que tus prefijos se anuncian |
show route for 203.0.113.0/24 |
Mejor ruta para un prefijo concreto | Rastrear la seleccion de ruta |
show route protocol static_v4 |
Rutas de un protocolo concreto | Verificar que las rutas estaticas estan cargadas |
Comprobar el estado de la sesion
sudo birdc show protocols
Salida esperada cuando funciona:
BIRD 2.18 ready.
Name Proto Table State Since Info
device1 Device --- up 12:00:00.000
direct1 Direct --- up 12:00:00.000
kernel1 Kernel master4 up 12:00:00.000
kernel2 Kernel master6 up 12:00:00.000
static_v4 Static master4 up 12:00:00.000
static_v6 Static master6 up 12:00:00.000
upstream1 BGP --- up 12:00:05.000 Established
El estado Established significa que la sesion BGP esta activa y se pueden intercambiar rutas. Cualquier otro estado indica un problema.
Comprobar las rutas exportadas
sudo birdc show route export upstream1
BIRD 2.18 ready.
Table master4:
203.0.113.0/24 unicast [static_v4 12:00:00.000] * (200)
dev dummy0
Table master6:
2001:db8:1000::/48 unicast [static_v6 12:00:00.000] * (200)
dev dummy0
Tus prefijos IPv4 e IPv6 deben aparecer aqui. Si falta un prefijo, el filtro de exportacion lo esta rechazando.
Comprobar los detalles completos de la sesion
sudo birdc show protocols all upstream1
Busca la linea Routes::
Routes: 2 imported, 0 filtered, 2 exported, 0 preferred
El valor exported debe coincidir con el numero de prefijos que pretendes anunciar.
Verificar desde fuera
Usa un looking glass publico para confirmar que tu prefijo es visible en internet. NLNOG Looking Glass o PeeringDB pueden ayudar. Busca tu prefijo y verifica:
- El AS de origen coincide con el tuyo
- El AS path pasa por tu upstream
- No aparece estado RPKI invalid
Comprueba tambien desde la tabla de enrutamiento del kernel:
ip route show | grep 203.0.113
ip -6 route show | grep 2001:db8:1000
Deberias ver rutas apuntando a la interfaz dummy0.
Como solucionar problemas frecuentes de BGP en BIRD2?
La mayoria de problemas BGP caen en unas pocas categorias. Verificalos en orden.
Referencia de estados de sesion BGP
| Estado | Significado | Que comprobar |
|---|---|---|
| Idle | BIRD no esta intentando conectar | Error de configuracion, protocolo deshabilitado |
| Connect | Conexion TCP en progreso | Firewall bloqueando puerto 179, IP de vecino incorrecta |
| Active | Conexion TCP fallida, reintentando | Peer inalcanzable, firewall, direccion de origen incorrecta |
| OpenSent | TCP conectado, esperando respuesta OPEN | Contrasena MD5 incorrecta, ASN incorrecto en el lado remoto |
| OpenConfirm | OPEN recibido, esperando KEEPALIVE | Rara vez se ve, normalmente transiciona rapido |
| Established | Sesion activa, intercambiando rutas | Funcionando |
Sesion atascada en Connect o Active
Esto significa que TCP no puede alcanzar el puerto 179 del peer. Comprueba:
# Can you reach the peer at all?
ping -c 3 198.51.100.1
# Is port 179 open on the peer?
nc -zv 198.51.100.1 179
# Are your nftables rules blocking outbound?
sudo nft list ruleset | grep 179
# Check BIRD logs
journalctl -u bird --since "5 minutes ago" --no-pager
Causas frecuentes: source address incorrecto en el bloque BGP, el peer aun no ha configurado su lado, o tu firewall bloquea las conexiones salientes.
Sesion atascada en OpenSent
La conexion TCP funciona pero el mensaje BGP OPEN es rechazado. Casi siempre es una discrepancia en la contrasena MD5. Verifica:
- Tu
passworden bird.conf coincide exactamente con la que el proveedor te dio (sensible a mayusculas, cuidado con espacios al final) - Ambos lados coinciden en el ASN
Revisa los logs para mas detalles:
journalctl -u bird | grep -i "error\|md5\|password"
El prefijo no aparece en show route export
Tu prefijo existe en la tabla de BIRD pero el filtro de exportacion no lo esta aceptando. Depura el filtro:
sudo birdc show route 203.0.113.0/24 all
Comprueba el origen de la ruta. Si dice [device1] o [direct1] en lugar de [static_v4], la ruta estatica no esta configurada correctamente. El filtro de exportacion coincide con la ruta, asi que debe provenir del protocolo correcto.
sudo birdc show route noexport upstream1
Esto muestra las rutas que el filtro rechazo explicitamente. Si tu prefijo aparece aqui, la logica del filtro tiene un error.
Prefijo anunciado pero no visible en looking glass
Tu exportacion funciona pero la ruta no se propaga. Posibles causas:
- Sin registro ROA: Tu upstream o sus peers filtran rutas RPKI-invalid. Publica registros ROA primero
- Filtrado IRR: Tu upstream filtra basandose en objetos IRR (RIPE DB, RADB). Crea o actualiza tus objetos route/route6
- Limite max-prefix: Tu upstream puede tener un limite de prefijos configurado. Contacta con ellos si lo estas alcanzando
- Retraso de propagacion: La convergencia BGP tarda minutos. Espera 5-10 minutos y comprueba de nuevo
Leer los logs
BIRD registra en el journal del sistema. Para depuracion en tiempo real:
journalctl -u bird -f
Para eventos de la ultima hora:
journalctl -u bird --since "1 hour ago" --no-pager
Busca lineas que contengan Error, BGP, session o Received. Te dicen exactamente que esta haciendo BIRD y que salio mal.
BIRD2 vs BIRD 1.x: notas de migracion
Si estas migrando desde BIRD 1.x, las principales diferencias son:
- Un solo demonio: BIRD2 reemplaza tanto
birdcomobird6con un unico proceso - Sintaxis de canales: IPv4 e IPv6 se configuran como canales dentro de bloques de protocolo, no como protocolos separados
- Sintaxis de filtros: Mayormente compatible, pero algunas funciones cambiaron de nombre. Consulta la documentacion de BIRD2 para la referencia completa de filtros
- Archivo de configuracion: La ubicacion por defecto cambio de
/etc/bird/bird.confy/etc/bird/bird6.confa un unico/etc/bird/bird.conf - Socket de birdc: Un solo socket en
/run/bird/bird.ctlen lugar de sockets separados para IPv4/IPv6
Siguientes pasos
Con tu sesion BGP establecida y los prefijos anunciados, hay varias cosas que configurar a continuacion:
- Validacion RPKI: Configura RTR para validar rutas entrantes contra datos ROA
- Filtros de importacion: Filtra rutas entrantes para prevenir fugas de rutas y secuestros
- Multiples upstreams: Anade un segundo bloque
protocol bgppara redundancia. Usapreferencepara definir primario/respaldo - BFD: Habilita Bidirectional Forwarding Detection para failover en sub-segundos entre upstreams
- Monitorizacion: Exporta metricas de BIRD a Prometheus con bird_exporter
Para el demonio de enrutamiento alternativo, consulta . Para el recorrido completo de BYOIP, comienza desde la guia BYOIP.
Copyright 2026 Virtua.Cloud. Todos los derechos reservados. Este contenido es una obra original del equipo de Virtua.Cloud. La reproduccion, republicacion o redistribucion sin permiso escrito esta prohibida.
¿Listo para probarlo?
Despliega tu propio servidor en segundos. Linux, Windows o FreeBSD.
Ver planes VPS