En este post se representará un escenario donde simulamos que redes de internet se están comunicando con una red ISP a través de un Carrier. Los prefijos y ASN utilizados son sólo para emular el laboratorio generado en eve-ng.
Configuración de router Facebook
Este router se usa para simular comunicación hacia Facebook. Como el router tiene su propio ASN esta publicando el prefijo 1.1.1.0/24 mediante BGP.
1 Configurar direccionamiento en las interfaces.
Este equipo tiene dos enlaces, uno hacia el router de Alestra y otro hacia un servidor que es a donde deben conectarse los clientes de la red ISP.
/ip address
add address=1.1.1.1/30 comment=to-Alestra interface=ether1 network=1.1.1.0
add address=1.1.1.5/30 comment=to-Server-Facebook interface=ether2 network=1.1.1.4
2 Anuncio de rutas mediante BGP
Agregamos el ASN dentro de la instancia default del Mikrotik.
/routing bgp instance set default as=100
Agregamos la red para que BGP se encargue de publicarlas a los demás peer.
/routing bgp network add network=1.1.1.0/24 synchronize=no
Establecemos el peer con nuestro vecino.
/routing bgp peer add name=peer-to-alestra remote-address=1.1.1.2 remote-as=300
Configuración de router Google
De la misma forma en como configuramos el router Facebook, en este configuraremos el peer hacia el router Alestra con la diferencia que aquí estamos anunciando dos prefijos, el 2.2.2.0/24 y el 8.8.8.0/24.
1 Configurar direccionamiento en las interfaces.
/ip address
add address=2.2.2.1/24 comment=to-Alestra interface=ether1 network=2.2.2.0
add address=8.8.8.2/24 comment=to-Server-Google interface=ether2 network=8.8.8.0
2 Configurar el enrutamiento BGP
/routing bgp network
add network=2.2.2.0/24 synchronize=no
add network=8.8.8.0/24 synchronize=no
#
/routing bgp instance set default as=200
#
/routing bgp peer add name=peer-to-alestra remote-address=2.2.2.2 remote-as=300
Configuración de router Alestra
Para este laboratorio hemos colocado Alestra como representación de un Carrier, por lo cual sólo hemos puesto valores ficticios con el fin de la práctica. El prefijo anunciado por este router es el 3.3.3.0/24.
1 Configurar direccionamiento en las interfaces.
/ip address
add address=1.1.1.2/30 comment=to-Facebook interface=ether1 network=1.1.1.0
add address=2.2.2.2/24 comment=to-Google interface=ether2 network=2.2.2.0
add address=3.3.3.1/24 comment=to-ISP-Border interface=ether3 network=3.3.3.0
2 Configurar el enrutamiento BGP
#
/routing bgp network add network=3.3.3.0/24 synchronize=no
#
/routing bgp instance set default as=300
#
/routing bgp peer
add name=peer-to-facebook remote-address=1.1.1.1 remote-as=100
add name=peer-to-google remote-address=2.2.2.1 remote-as=200
add name=peer-to-isp-border remote-address=3.3.3.2 remote-as=400
#
Configuración de router ISP-Border
Este router viene a representar a un ISP que esta haciendo peering con su Carrier (Alestra para esta práctica), por lo lo que este anuncia su prefijo hacia el Carrier mediante BGP y recibe las rutas de internet en su tabla de ruteo.
1 Configurar direccionamiento en las interfaces.
/ip address
add address=3.3.3.2/24 comment=to-Alestra interface=ether1 network=3.3.3.0
add address=4.4.5.254/24 comment=to-ISP-Core interface=ether2 network=4.4.5.0
2 Configurar el enrutamiento BGP
#
/routing bgp network
add network=4.4.4.0/24 synchronize=no
add network=4.4.5.0/24 synchronize=no
#
/routing bgp instance set default as=400
#
/routing bgp peer add name=peer-to-alestra remote-address=3.3.3.1 remote-as=300
#
Configuración de router ISP-Core
Este router viene a representar un router de agregación donde estamos colocando a los clientes de la red. Se ha puesto que el enlace hacia el borde use las ips públicas de la red para que se pueda natear directamente desde el router core.
1 Configurar direccionamiento en las interfaces.
/ip address
add address=4.4.5.2/24 comment=to-ISP-Border interface=ether1 network=4.4.5.0
add address=192.168.9.254/24 comment=to-Cliente-Final interface=ether8 network=192.168.9.0
2 Colocamos la ruta por defecto hacia el router de borde
/ip route add distance=1 gateway=4.4.5.254
3 Agregamos el NAT para salida a internet de los clientes
/ip firewall nat add action=masquerade chain=srcnat out-interface=ether1
Verificación en cliente final
Si entramos al equipo de laptop que tenemos conectado al ISP-Core, podemos hacer un ping a 8.8.8.8 y veremos como obtenemos respuesta.
Dentro de la tabla de ruteo del Mikrotik ISP-Border podemos ver como se estan recibiendo las rutas de las redes simuladas en internet.
Nota
Dado que tenemos un enlace hacia el router Alestra donde usamos el prefijo completo, la ruta recibida por BFP se observa secundaria respetando la prioridad de las rutas directamente conectadas.
Conclusiones de la práctica.
Escenario de ruteo completo
En este escenario el router Alestra esta simulando ser un Carrier con conexión directa en los datacenter de Facebook y Google, por lo que recibe directamente las redes medianrte peering BGP.
¿Dónde se ven las rutas? Dado que estamos en un router Mikrotik, las rutas las podemos observar en la tabla de ruteo del router.
En esta simulación el router ISP-Border va a recibir directamente las rutas del Carrier que se representa con el router Alestra.
¿Dónde se verías las rutas de Facebook y Google? Todas las rutas pueden observarse en la tabla de ruteo, como este laboratorio se hizo con Mikrotik se pueden observar en IP > Routes.
Probando conectividad de cliente final hacia servidores
Desde el equipo 'Cliente-Final' que se encuentra dentro de la LAN del ISP podemos realizar ping hacia las ips de los servidores ubicados en las redes de Facebook y Google. El ping nos responde correctamente en ambos casos, ya que el ISP-Core recibe la ip privada y la enmascara con la publica recibida del router ISP-Border con la que llega hacia los servidores mediante ruteo BGP.
¿Qué pasaría si el segmento asignado al router ISP-Core no esta anunciado en BGP?
Como vimos anteriormente, dentro de la configuración de router ISP-Border tenemos asignado un prefijo 4.4.4.0/22, pero sólo estamos anunciando los segmentos 4.4.4.0/24 y 4.4.5.0/24.
Imagina que por equivocación al configurar las ips públicas de la red ISP colocamos que el prefijo que enlaza al Borde con el Core es el 4.4.6.0/24. ¿Seguiríamos teniendo conexión hacia los servidores de Facebook y Google?
La respuesta es no. Si asignamos un rango del prefijo que no estamos publicando a través de BGP, los equipos conectados bajo ese segmento de red no podrán comunicarse como vemos a continuación:
¿Cómo resolveriamos esto? La forma más fácil sería que en el ISP-Border agreguemos el segmento 4.4.6.0/24 dentro de las redes anunciadas hacia el Carrier.