Arquitectura y flujo de tráfico
En esta sección se describe la arquitectura del modo puente de NetScaler CPX y el flujo de tráfico. NetScaler CPX también se puede implementar en modo host.
Cuando aprovisiona una instancia de NetScaler CPX en un host de Docker, el motor de Docker crea una interfaz virtual, eth0, en la instancia CPX. Esta interfaz eth0 está conectada directamente a una interfaz virtual (veth*) en el puente docker0. El motor de Docker también asigna una dirección IP a la instancia de NetScaler CPX en la red 172.17.0.0/16.
La puerta de enlace predeterminada para la instancia CPX es la dirección IP del puente docker0, lo que significa que cualquier comunicación con la instancia de NetScaler CPX se realiza a través de la red Docker. Todo el tráfico entrante recibido desde el puente docker0 lo recibe la interfaz eth0 en la instancia NetScaler CPX y el motor de paquetes NetScaler CPX lo procesa.
Esta ilustración ilustra la arquitectura de una instancia de NetScaler CPX en un host Docker.
Cómo funciona una dirección IP única en NetScaler CPX
Un dispositivo NetScaler MPX o VPX normal requiere al menos tres direcciones IP para funcionar:
- Dirección IP de administración denominada dirección IP de Citrix ADC (NSIP)
- Dirección IP de subred (SNIP) para comunicarse con el conjunto de servidores
- Direcciones IP (VIP) del servidor virtual para aceptar solicitudes de clientes
Una instancia de NetScaler CPX funciona con una sola dirección IP que se utiliza tanto para la administración como para el tráfico de datos.
Durante el aprovisionamiento, el motor de Docker solo asigna una dirección IP privada (dirección IP única) a una instancia de NetScaler CPX. Las tres funciones IP de una instancia de Citrix ADC se multiplexan en una dirección IP. Esta única dirección IP utiliza diferentes números de puerto para funcionar como NSIP, SNIP y VIP (s).
La siguiente imagen ilustra cómo se usa una sola dirección IP para realizar las funciones de NSIP, SNIP y VIP (s).
Flujo de tráfico para solicitudes que se originan en la instancia de NetScaler CPX
Docker configura implícitamente tablas IP y una regla NAT para dirigir el tráfico que se origina en la instancia de NetScaler CPX a la dirección IP de docker0.
Esta ilustración ilustra cómo una solicitud ping que se origina en una instancia de NetScaler CPX llega al destino.
En este ejemplo, el motor de paquetes envía la solicitud ping en la interfaz eth0 con la dirección IP de origen como la dirección IP de NetScaler CPX (172.17.0.4). A continuación, el host de Docker realiza la traducción de direcciones de red (NAT) para agregar la dirección IP del host (192.68.x.x) como dirección IP de origen y envía la solicitud al destino (216.58.x.x). La respuesta de la dirección IP de destino sigue la misma ruta a la inversa. El host Docker realiza NAT en la respuesta y reenvía la respuesta a la instancia de NetScaler CPX en la interfaz eth0.
Flujo de tráfico para solicitudes que se originan en la red externa
Para habilitar la comunicación externa, al aprovisionar NetScaler CPX, debe establecer parámetros de modo que Docker exponga ciertos puertos, como 80, 22 y cualquier otro puerto que quiera. Si no ha configurado ningún puerto para que esté expuesto durante el aprovisionamiento, debe configurar reglas NAT en el host de Docker para que estos puertos estén disponibles.
La solicitud del cliente que se origina en Internet es recibida por el host de Docker, que luego realiza la traducción de direcciones de puerto (PAT) para asignar la dirección IP pública y el puerto a la dirección IP y el puerto únicos de la instancia de NetScaler CPX, y reenvía el tráfico a la instancia.
Esta ilustración muestra cómo el host Docker realiza la traducción de direcciones de puerto para dirigir el tráfico a la dirección IP única y al puerto NetScaler CPX.
En este ejemplo, la dirección IP del host de Docker es 192.68.x.x y la dirección IP única de la instancia de NetScaler CPX es 172.17.0.4. El puerto SSH 22 de la instancia de NetScaler CPX se asigna al puerto 1100 en el host Docker. La solicitud SSH del cliente se recibe en la dirección IP 192.68.x.x en el puerto 1100. El host de Docker realiza la traducción de direcciones de puerto para asignar esta dirección y puerto a la dirección IP única 172.17.0.4 en el puerto 22 y reenvía la solicitud del cliente.