IPv6 para balanceadores de cargas de aplicaciones y balanceadores de cargas de red de proxy

En este documento, se muestra cómo los balanceadores de cargas de aplicaciones y los balanceadores de cargas de red de proxy manejan el tráfico IPv6. Estos balanceadores de cargas son balanceadores de cargas de proxy, lo que significa que las conexiones de clientes entrantes se finalizan en el balanceador de cargas. Luego, el balanceador de cargas inicia una nueva conexión para reenviar la solicitud del cliente al backend. Según el tipo de balanceador de cargas, puedes habilitar IPv6 para una o ambas de estas conexiones.

Habilitar IPv6 para tu balanceador de cargas tiene los siguientes beneficios:

  • Usa una sola dirección IPv6 anycast para implementaciones multirregionales. Solo necesitas una dirección IPv6 del balanceador de cargas para las instancias de la aplicación que se ejecutan en varias regiones. Esto significa que el servidor DNS tiene un único registro AAAA y que no necesitas balancear las cargas entre varias direcciones IPv6. El almacenamiento en caché de registros AAAA por parte de los clientes no es un problema porque solo hay una dirección para almacenar en caché. Las solicitudes de los usuarios a la dirección IPv6 balancean las cargas de manera automática al backend en buen estado más cercano con capacidad disponible.
  • Ejecuta implementaciones de pila doble. Si quieres entregar contenido a los clientes IPv6 y, también, IPv4, crea dos direcciones IP del balanceador de cargas, una para IPv6 y la otra para IPv4. Los clientes IPv4 se conectan a la dirección IPv4, mientras que los clientes IPv6 se conectan a la dirección IPv6. Luego, estos clientes balancean las cargas de manera automática a los backends de pila doble IPv4 o IPv6 en buen estado más cercanos con capacidad disponible. Para ver qué balanceadores de cargas admiten backends de pila doble, consulta Tabla: Servicios de backend y tipos de backends compatibles. Proporcionamos reglas de reenvío de IPv6 sin cargo, por lo que solo debes pagar las de IPv4.

  • Balancea las cargas de HTTP, HTTPS, HTTP/2, TCP y tráfico de clientes IPv6 de SSL y TLS. La compatibilidad con los protocolos depende del tipo de balanceador de cargas que uses y del protocolo de la regla de reenvío.

  • Puedes desbordar regiones con una sola dirección de balanceador de cargas IPv6. Si los backends en una región no tienen recursos o están en mal estado, el balanceador de cargas global dirige de manera automática las solicitudes de los usuarios a la siguiente región más cercana con recursos disponibles. Cuando la región más cercana tiene recursos disponibles, el balanceo de cargas global vuelve a entregar en esta región. El balanceo de cargas global requiere que uses el nivel Premium de los Niveles de servicio de red.

Compatibilidad con el balanceador de cargas

En el caso de los balanceadores de cargas basados en proxy, como los balanceadores de cargas de aplicaciones y los balanceadores de cargas de red de proxy, la conexión del cliente al balanceador de cargas y la segunda conexión del balanceador de cargas al backend se pueden configurar de forma independiente. Por ejemplo, el balanceador de cargas puede aceptar el tráfico IPv4 de un cliente, finalizar la conexión y, luego, reenviar la solicitud del balanceador de cargas al backend a través de una nueva conexión IPv6, siempre y cuando el backend sea un backend de pila doble que esté equipado para controlar las conexiones IPv6.

Para permitir que un balanceador de cargas reciba conexiones IPv6 de los clientes, debes usar una dirección IPv6 para la regla de reenvío del balanceador de cargas. La conexión posterior del balanceador de cargas al backend usa IPv4 de forma predeterminada. Sin embargo, puedes habilitar ciertos balanceadores de cargas para que usen IPv6 configurando la opción Política de selección de direcciones IP en el servicio de backend.

En la siguiente tabla, se describen los tipos de conexión que admiten todos los balanceadores de cargas basados en proxy:

Balanceador de cargas Conexión de los clientes al balanceador de cargas Conexión del balanceador de cargas a los backends
Balanceador de cargas de aplicaciones externo global
Balanceador de cargas de red de proxy externo global
Se pueden finalizar las conexiones IPv4 e IPv6. Cualquiera de las siguientes opciones:
  • Conexión IPv4: Se admite con backends de solo IPv4 o de pila doble.
  • Conexión IPv6: Solo es compatible con backends de pila doble*.
Balanceador de cargas de aplicaciones clásico
Balanceador de cargas de red del proxy clásico
Se pueden finalizar las conexiones IPv4 e IPv6. Solo conexión IPv4
Balanceador de cargas de aplicaciones externo regional
Balanceador de cargas de red del proxy externo regional
Balanceador de cargas de aplicaciones interno regional
Balanceador de cargas de red del proxy interno regional
Balanceador de cargas de aplicaciones interno entre regiones
Balanceador de cargas de red del proxy interno entre regiones
Solo IPv4. El tráfico IPv6 no es compatible. Cualquiera de las siguientes opciones:
  • Conexión IPv4: Se admite con backends de solo IPv4 o de pila doble.
  • Conexión IPv6: Solo es compatible con backends de pila doble*.
* Solo los grupos de instancias y los NEG zonales (con extremos GCE_VM_IP_PORT) se pueden configurar para ser de pila doble.

Cómo funciona la terminación de IPv6

Los balanceadores de cargas de aplicaciones globales y clásicos, así como los balanceadores de cargas de red de proxy, admiten la terminación de IPv6. Si configuras la terminación de IPv6 para estos balanceadores de cargas, permites que tus backends aparezcan como aplicaciones IPv6 para los clientes IPv6, como se muestra en la siguiente figura:

Terminación de IPv6 para el balanceo de cargas
Terminación de IPv6 del balanceo de cargas (haz clic para agrandar).

Cuando un usuario se conecta al balanceador de cargas mediante IPv6, ocurre lo siguiente:

  1. Tu balanceador de cargas, con su dirección IPv6 y la regla de reenvío, espera las conexiones del usuario.
  2. Un cliente IPv6 se conecta al balanceador de cargas a través de IPv6.
  3. El balanceador de cargas actúa como un proxy inverso y finaliza la conexión del cliente IPv6. Basado en la política de selección de direcciones IP del servicio de backend, ubica la solicitud en una conexión IPv4 o IPv6 a un backend.
  4. En la ruta de acceso inversa, el balanceador de cargas recibe la respuesta del backend y, luego, la coloca en la conexión IPv6 de regreso al cliente original.

Asignación de direcciones IPv6 para las reglas de reenvío del balanceador de cargas

Cuando configuras un balanceador de cargas externo, proporcionas una o más reglas de reenvío, cada una con una dirección IP IPv4 o IPv6 externa y enrutada de forma pública (o ambas). Puedes usar esta dirección IP en los registros DNS de tu sitio.

Cuando creas una regla de reenvío, puedes usar una dirección IP estática reservada para tu proyecto o hacer que la regla de reenvío adquiera de forma automática una dirección IP efímera cuando creas la regla. Una dirección IP estática está reservada para tu proyecto y puedes conservarla hasta que la liberes de forma deliberada. Una dirección efímera pertenece a la regla de reenvío mientras esta exista. Si borras la regla de reenvío, la dirección efímera se libera de nuevo en el grupo de Google Cloud.

Si necesitas una dirección IPv4 o IPv6 para tu balanceador de cargas, puedes crear dos reglas de reenvío y asociar una dirección IPv4 a una, y una dirección IPv6 a la otra. Luego, puedes asociar ambas reglas al mismo balanceador de cargas.

Formato de dirección IPv6

Google Cloud asigna un rango de direcciones IPv6 /64 a las reglas de reenvío IPv6. Google Cloud CLI muestra las direcciones IPv6 con los 64 bits menos significativos configurados en 0, pero el balanceador de cargas acepta tráfico en todo el rango. Por lo tanto, es posible que veas otras direcciones IPv6 del balanceador de cargas en el rango asignado en los encabezados X-Forwarded-For según la dirección IP del servidor IPv6 al que se conectó el cliente.

Cuando formateas una dirección IPv6, Google Cloud sigue las recomendaciones de RFC 5952, sección 4.

Encabezado de IP del cliente con terminación IPv6 para balanceadores de cargas de aplicaciones externos

Cuando el balanceador de cargas envía mediante proxy la conexión IPv6 del cliente a una conexión IPv4 a tu backend, la dirección IP fuente original se reemplaza con la dirección IP del balanceador de cargas. Sin embargo, los backends a menudo necesitan conocer la dirección IP fuente original para el registro, la toma de decisiones o para otros fines. Google Cloud proporciona un encabezado HTTP que se propaga a los backends que incluyen la dirección IP de cliente IPv6 original.

Los encabezados HTTP para IPv6 son similares a aquellos para IPv4. El formato de las solicitudes es el siguiente:

  • X-Forwarded-For: CLIENT_IP_ADDRESS, GLOBAL_FORWARDING_RULE_EXTERNAL_IP_ADDRESSES

En el último elemento, se muestra la dirección IP del balanceador de cargas. En el penúltimo elemento, se muestra la dirección IP de cliente tal como la ve el balanceador de cargas. Es posible que haya otros elementos en el encabezado X-Forwarded-For cuando el cliente o los proxies intermedios agreguen otros encabezados X-Forwarded-For antes de enviar la solicitud al balanceador de cargas.

Un encabezado de ejemplo X-Forwarded-For puede tener este aspecto:

X-Forwarded-For: 2001:db8:abcd:1::1234, 2607:f8b0:4005:801::200e

2001:db8:abcd:1::1234 es la dirección IPv6 del cliente. 2607:f8b0:4005:801::200e es la dirección IPv6 del balanceador de cargas de aplicaciones externo.

Convierte de solo IPv4 a pila doble

Puedes convertir los recursos del balanceador de cargas que usan solo IPv4 (pila única) a IPv4 e IPv6 (pila doble). Si actualizas los recursos del balanceador de cargas, puedes enrutar automáticamente el tráfico IPv6 a tus backends.

Si deseas obtener instrucciones para convertir los recursos y backends del balanceador de cargas a la pila doble, consulta la siguiente documentación:

Balanceador de cargas Documentación
Balanceador de cargas de aplicaciones externo global
Balanceador de cargas de aplicaciones interno entre regiones
Balanceador de cargas de aplicaciones externo regional
Balanceador de cargas de aplicaciones interno regional
Convierte el balanceador de cargas de aplicaciones a IPv6
Balanceador de cargas de red de proxy externo global
Balanceador de cargas de red de proxy interno entre regiones
Balanceador de cargas de red de proxy externo regional
Balanceador de cargas de red de proxy interno regional
Convierte el balanceador de cargas de red del proxy a IPv6

Precios

Las reglas de reenvío para la terminación de IPv6 se proporcionan sin costo adicional. No se te cobrará por las direcciones IPv6 efímeras. Las direcciones IPv6 reservadas se cobran según las tarifas existentes, sin importar si están en uso. De lo contrario, el precio del balanceo de cargas IPv6 es el mismo que el del balanceo de cargas IPv4. Para obtener más información sobre los precios de balanceo de cargas, consulta Precios de red.

Limitaciones

  • Los balanceadores de cargas de red de proxy clásicos y los balanceadores de cargas de aplicaciones clásicos no admiten backends de pila doble. El balanceador de cargas finaliza el tráfico IPv6 y, luego, lo envía mediante proxy a través de una conexión IPv4 a los backends.
  • Los balanceadores de cargas de aplicaciones externos regionales, los balanceadores de cargas de aplicaciones internos regionales, los balanceadores de cargas de red de proxy interno regionales, los balanceadores de cargas de red de proxy interno entre regiones, los balanceadores de cargas de aplicaciones internos entre regiones y los balanceadores de cargas de red de proxy externo regionales no admiten frontends IPv6. El tráfico IPv4 entrante se envía mediante proxies a través de una conexión IPv4 o IPv6 a los backends IPv4 e IPv6 (pila doble).

  • Solo los backends de grupos de instancias de VM y los grupos de extremos de red (NEG) zonales con extremos GCE_VM_IP_PORT admiten backends de pila doble (IPv4 e IPv6).

¿Qué sigue?