Configuración de BGP con FRR en un servidor Equinix Metal
FRRouting (FRR) es un conjunto de protocolos de enrutamiento de Internet de código abierto, incluido BGP, que puede utilizar en Equinix Metal. Esta es una guía para una configuración mínima viable para anunciar una dirección IP desde su servidor a través de BGP.
Encontrará algunos scripts de inicio creados por Equinix Metal en el repositorio GitHub packethost/network-helpers que pueden ayudarle a automatizar el proceso de extraer la información BGP que necesita de los metadatos BGP de su servidor y escribirla en el archivo de configuración FRR.
Cómo empezar
Si está configurando BGP por primera vez, el documento BGP en Equinix Metal contiene una descripción general de alto nivel sobre la habilitación y el uso de BGP en la plataforma.
Para este ejemplo, hemos configurado Local BGP para anunciar una dirección IPv4 pública que está reservada a nuestro proyecto Equinix Metal: 10.99.200.138/32. En este ejemplo hemos configurado BGP en Equinix Metal sin contraseña.
Actualización de la interfaz de red
SSH en su servidor y actualizar las interfaces de red del servidor con una interfaz de loopback virtual.
cat >>/etc/network/interfaces <<EOF
auto lo:0
iface lo:0 inet static
address 10.99.200.138
netmask 255.255.255.255
EOF
A continuación, abra la interfaz.
ifup lo:0
Instalación de FRR y habilitación de BGP
A continuación, instale FRR.
apt -y update && apt -y install frr
Una vez instalado, necesitamos habilitar BGP dentro de la configuración de FRR. Abra el archivo /etc/frr/daemons y cambie bgpd=no por bgpd=yes.
Recopilación de información sobre sus vecinos
FRR viene con un archivo de configuración mínimo al que vamos a añadir algunas cosas para poner en marcha la funcionalidad básica de "anunciar una dirección IP".
La información que necesita se encuentra en los metadatos BGP de su servidor una vez que haya habilitado BGP tanto en su Proyecto como en su servidor, tal y como se describe en las guías BGP en Equinix Metal y BGP local.
Para obtener la información de los vecinos de su servidor, conéctese mediante SSH al servidor y utilice cURL para acceder al punto final de metadatos.
curl https://metadata.platformequinix.com/metadata | jq '.bgp_neighbors[0] | { customer_ip: .customer_ip, customer_as: .customer_as, multihop: .multihop, peer_ips: .peer_ips, peer_as: .peer_as }'
Este comando devolverá un blob de información BGP relevante.
{
"customer_ip": "10.67.50.3",
"customer_as": 65000,
"multihop": true,
"peer_ips": [
"169.254.255.1",
"169.254.255.2"
],
"peer_as": 65530
}
También tendrás que configurar rutas estáticas en tu configuración, así que accede de nuevo al punto final de metadatos para obtener la dirección IP privada de la pasarela a los routers ascendentes.
curl https://metadata.platformequinix.com/metadata | jq -r '.network.addresses[] | select(.public == false and .address_family == 4) | { gateway: .gateway }'
Como respuesta, obtendrá la dirección IPv4 de la puerta de enlace de su servidor.
{
"gateway": "10.67.50.2"
}
Rellenar el archivo de configuración FRR
Una vez instalado FRR, su archivo de configuración se encuentra en /etc/frr/frr.conf. Tenemos un archivo de configuración de ejemplo para que empiece.
frr defaults traditional
log syslog informational
ipv6 forwarding
service integrated-vtysh-config
!
ip route 169.254.255.1/32 10.67.50.2
ip route 169.254.255.2/32 10.67.50.2
!
router bgp 65000
bgp ebgp-requires-policy
neighbor V4 peer-group
neighbor V4 remote-as 65530
neighbor V4 ebgp-multihop 5
neighbor 169.254.255.1 peer-group V4
neighbor 169.254.255.2 peer-group V4
!
address-family ipv4 unicast
redistribute connected
neighbor V4 route-map IMPORT in
neighbor V4 route-map EXPORT out
exit-address-family
!
route-map EXPORT deny 100
!
route-map EXPORT permit 1
match interface lo
!
route-map IMPORT deny 1
!
line vty
!
Las correspondencias entre metadatos y campos son las siguientes:
| frr.conf | metadata | value |
|---|---|---|
| router bgp | customer_as | 65000 |
| neighbor V4 remote-as | peer_as | 65530 |
| neighbor V4 ebgp-multihop 5 | multihop | if the metadata shows multihop as true then you need to add multihop to FRR |
| neighbor IP peer-group V4 | peer_ips | 169.254.255.1 and 169.254.255.2 |
También necesita configurar rutas estáticas desde su servidor a los routers de Metal, que son las dos líneas ip route de la configuración, utilizando la dirección de la puerta de enlace extraída de los metadatos.
ip route <peer_ips_1>/32 <gateway>
ip route <peer_ips_2>/32 <gateway>
A continuación, indique a FRR con qué interfaz de red debe trabajar:
route-map EXPORT permit 1
match interface lo
Por último, compruebe que la configuración parece correcta y reinicie FRR:
systemctl restart frr
Verificación de la configuración FRR
Puede verificar la sesión BGP iniciando el shell vtysh.
vtysh
A continuación, utilice el comando show bgp summary.
show bgp summary
Los resultados deberían reflejar la información de su archivo de configuración.
IPv4 Unicast Summary (VRF default):
BGP router identifier 147.75.109.216, local AS number 65000 vrf-id 0
BGP table version 3
RIB entries 5, using 920 bytes of memory
Peers 2, using 1446 KiB of memory
Peer groups 1, using 64 bytes of memory
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd PfxSnt Desc
169.254.255.1 4 65530 6 6 0 0 0 00:02:15 0 1 N/A
169.254.255.2 4 65530 8 7 0 0 0 00:03:15 0 1 N/A
Total number of neighbors 2
Para ver si su servidor es ahora alcanzable en su dirección IP anunciada, puede hacer ping a la dirección IP en una línea de comandos. Si está anunciando una dirección IPv4 o IPv6 pública, debería poder hacer ping desde cualquier servidor. Sin embargo, si está anunciando una dirección IPv4 privada, tendrá que estar conectado a la red privada, por lo que sólo podrá hacer ping desde un servidor del mismo proyecto y metro (o sólo del mismo proyecto si tiene activada la Transferencia de backend).
Recapitulación
Una vez que haya configurado BGP en el host, Equinix Metal proporciona monitorización para sus sesiones BGP. Encontrará más información en la página Monitorización de BGP.
Para un ejemplo diferente del mismo proceso, pero utilizando BIRD para gestionar la sesión BGP del servidor, también tenemos una guía Configuring BGP with BIRD on an Equinix Metal Server.
FRR también puede desplegarse automáticamente a través de Docker. Más información sobre [despliegue de FRR con Docker.