Episodio 1 · paso 1 de la migración

Una red que no llega a nada

lectura · 12 mindominio · BCPS Bankpaso · la primera VPC

Lo primero que se mueve

BCPS Bank empieza a llevarse cosas a la nube. No todo: Cuentasver en el mapa, con el libro de movimientos, y el conmutador de Tarjetasver en el mapa se quedan en el CPD, el centro de datos propio del banco. Lo primero que se mueve es la API de la app, la que atiende a Ana cuando mira su saldo.

El equipo de la app abre la consola del proveedor, crea una red privada (una VPC, virtual private cloud), le pone un par de subredes y levanta la API dentro. Diez minutos. La consola incluso sugiere un rango de direcciones, 10.0.0.0/16, y nadie ve motivo para cambiarlo.

Luego Ana abre la app, y no pasa nada. La API está encendida, contesta a quien la llama desde dentro, pero desde fuera no hay manera de llegar. Esta serie trata de quién puede hablar con quién, por dónde y cuánto cuesta cada salto. En este episodio, la respuesta es: casi nadie, por ningún sitio, y gratis. Y es un buen punto de partida.

La primera VPC

Dos maneras de crear la misma VPC. A la izquierda, a ojo: el rango que sugiere la consola y subredes según van haciendo falta. A la derecha, con el plan de direcciones del banco: un bloque que asigna el equipo de redes y subredes repartidas por zona y por capa (públicas y privadas). Arriba de cada una, internet, con el móvil de Ana.

Elige una traza y pulsa Trazar. El paquete avanza salto a salto y, junto al marcador, verás lo que se consulta en cada uno: la fila de la tabla de rutas que gana o la regla de firewall que acierta. El marcador tiene cuatro cifras que verás en toda la serie: si llega, por dónde, cuánto cuesta y cuántas piezas podrían llegar a Cuentas. Luego escala la API y mira la tira de abajo.

Qué ha pasado

Una VPC es un rango de direcciones

Lo primero que se decide al crear una VPC es su rango: qué direcciones IP podrán tener las piezas de dentro. Se escribe en notación CIDR. 10.0.0.0/16 quiere decir «las direcciones que empiezan por 10.0»: 65.536. 10.64.0.0/24, «las que empiezan por 10.64.0»: 256.

Ese rango se reparte en subredes, rangos más pequeños dentro del grande, y cada pieza (una copia de la API, una base de datos) toma una dirección de la subred donde vive. A la izquierda, las subredes son /24: 256 direcciones cada una. A la derecha, /26: 64. En las dos, la nube se guarda 5 direcciones de cada subred para sus cosas (son las casillas grises de las rejillas), así que un /24 deja 251 útiles y un /26, 59.

El plan de la derecha reparte con criterio. Hay dos zonas (dos centros de datos del proveedor en la misma región, para que la caída de uno no tumbe la app) y dos capas: las subredes públicas, que se podrán abrir a internet, y las privadas, que no. La API vive en las privadas, repartida entre las dos zonas. Las públicas están vacías: son para el episodio 2.

La ruta local, y nada más

Cada subred tiene una tabla de rutas: una lista de «para llegar a este rango, ve por aquí». Cuando sale un paquete, se buscan las filas cuyo rango contiene la IP de destino y gana la más concreta, la del prefijo más largo (longest prefix match).probar en el laboratorio Una VPC nueva trae una sola fila, que no se puede borrar: su propio rango, local. Por eso Tareas, en otra subred, llega a la API sin que nadie haya configurado nada. Lo que decide si entra es el grupo de seguridad de la API, el firewall que lleva puesto: deja pasar al puerto 443 a quien venga de dentro de la VPC.

Y como la ruta local es la única fila, cualquier otro destino no tiene camino. Cuando la API intenta descargar una actualización de internet, busca una fila que contenga la IP del repositorio, no la encuentra y el paquete se descarta sin salir de la subred.probar en el laboratorio Una VPC no tiene puerta hasta que alguien la pone.

Ana no sale de su móvil

La traza de Ana ni siquiera llega a la VPC.probar en el laboratorio La app llama a la IP de la API, y esa IP es privada: empieza por 10. Los rangos privados los puede usar cualquiera dentro de su red, y los usan millones de redes a la vez, así que internet no los enruta: ningún operador anuncia «por aquí se llega a 10.0.1.4», porque hay millones de 10.0.1.4. El paquete no tiene a dónde ir.

Esto no es un fallo que arreglar a toda prisa, es el punto de partida correcto. Una VPC nace cerrada: sin puerta a internet y sin camino a ninguna otra red. Cada camino que se abra a partir de aquí será una decisión, con su precio. El episodio 2 abre el primero.

Cuándo hace daño: el rango a ojo

Hoy, la VPC de la izquierda funciona igual que la de la derecha. La diferencia está en la tira de abajo, que dibuja todo el espacio privado del banco, 10.0.0.0/8, en casillas de un /16.probar en el laboratorio El CPD de BCPS Bank lleva veinte años usando 10.0.0.0/12, las 16 primeras casillas. Y el 10.0.0.0/16 que sugirió la consola es la primera casilla: está dentro del CPD. Cuentas, por ejemplo, vive en 10.0.12.20, que cae dentro de los dos rangos.

Mientras la VPC no hable con el CPD, da igual. Pero la API necesita el saldo de Ana, y el saldo está en Cuentas. El día que se conecten las dos redes, en el episodio 3, habrá dos sitios con las mismas direcciones y ninguna tabla de rutas sabrá a cuál mandar el paquete. Arreglarlo entonces significa cambiar las direcciones de todo lo que haya en la VPC, con la API ya en producción. La VPC de la derecha usa el bloque que el banco reservó para la nube, 10.64.0.0/10, y no toca a nadie.

Cuándo hace daño: el plan demasiado justo

El plan también tiene su trampa. Es día de cobro y la API escala: de 8 copias a 150, y cada copia toma una IP de su subred (es lo que pasa, por ejemplo, con los contenedores en Kubernetes gestionado).probar en el laboratorio A la izquierda sobra sitio: 150 de 251. A la derecha, cada zona necesita 75 direcciones y su /26 solo tiene 59. Las rejillas se llenan y 33 copias no arrancan.

Ampliar no es cosa del equipo de la app: el rango lo asigna el equipo que lleva el plan, y hay que pedirle otro, esperar a que lo apruebe y añadirlo a la VPC. El plan es ordenado, pero alguien lo dimensionó para la API de un día normal. Un plan de direcciones evita los choques; no evita quedarse corto, y quedarse corto con un plan cuesta un ticket y una espera.

Criterio

Una VPC se puede crear a ojo en diez minutos, y a veces es lo correcto. La pregunta es si algún día tendrá que hablar con otra red.

SituaciónQué hacerPor qué
Una prueba que se borra el viernesA ojo, con el rango que seaNo se conectará con nada; el plan sería trabajo tirado
Cualquier VPC que un día hable con el CPD o con otra VPCDel plan de direccionesDos redes conectadas no pueden compartir direcciones, y renumerar después es carísimo
Subredes de algo que escala (contenedores, funciones)Del plan, pero generosasCada copia toma una IP; un plan justo se llena el día de más carga
La VPC recién creadaCerrada: solo la ruta localCada camino que se abra debe ser una decisión
  1. ¿Se va a conectar alguna vez con el CPD o con otra red del banco?Si hay que dudar, la respuesta es sí.
    rango del plan, que no solape con nada
  2. ¿Va a durar más de unas semanas?Las pruebas «temporales» tienen la costumbre de quedarse.
    rango del plan igualmente: es gratis pedirlo hoy
  3. A ojo, y se borra al terminar.

Y al pedir el rango, se piensa en el peor día, no en el de hoy: cuántas copias habrá el día de cobro, en cuántas zonas, y si cada copia necesita su propia IP. Las direcciones privadas no cuestan dinero; lo que cuesta es quedarse sin ellas.

En el mundo real

El rango a ojo es un clásico: el asistente de creación de VPC de AWS propone 10.0.0.0/16, el portal de Azure sugiere el mismo para una red virtual nueva, y medio mundo tiene alguna red en 10.0.0.0/8 o en 192.168.0.0/16. Los problemas aparecen al conectar, al fusionar dos empresas o al contratar un proveedor que usa el mismo rango. Por eso los bancos y las empresas grandes llevan un registro central de direcciones (un IPAM): AWS tiene VPC IPAM, que reparte rangos de un bloque y avisa de solapamientos, y fuera de la nube se usan herramientas como NetBox o Infoblox.

Quedarse sin direcciones también es habitual, sobre todo con Kubernetes: en Amazon EKS, el plugin de red por defecto da a cada pod una IP de la subred, y los clústeres grandes se comen un /24 enseguida. La salida que recomienda AWS es añadir a la VPC un rango secundario solo para los pods, a menudo en 100.64.0.0/10, un rango que no se usa en las redes internas y que no choca con nada. En Google Cloud, una subred se puede ampliar sin parar nada; en AWS, una subred no cambia de tamaño y hay que crear otra.

Y lo de las direcciones reservadas es literal: AWS y Azure se quedan 5 direcciones de cada subred; Google Cloud, 4. En un /28, la subred más pequeña que permite AWS, eso es casi un tercio.

Equivalencias

En la serieAWSAzureGoogle Cloud
VPCVPCVirtual Network (VNet)VPC network
SubredSubnet (en una zona)Subnet (abarca la región)Subnet (abarca la región)
Tabla de rutasRoute table (por subred)Route table (por subred)Routes (de toda la VPC)
Ruta localLocal routeSystem routeSubnet route
Grupo de seguridadSecurity groupNetwork security groupFirewall rules
Registro de direccionesVPC IPAMIPAM de Virtual Network Manager—

Siguiente episodio

La API está lista y nadie puede usarla. Hay que abrirla a internet para que Ana llegue, y dejar que Notificaciones salga a avisarla por el móvil. Abrir es fácil; lo difícil es abrir solo lo que toca.

Episodio 2 Abrir la puerta con cuidado Gateway de internet, subredes públicas y privadas, NAT de salida y firewalls con y sin estado.

← Todos los episodios · Cuentas en el mapa de BCPS Bank