Conceptos de Redes de Azure para contenedores de Windows

Completado

El procesador de un equipo Windows estándar tiene un modo kernel y un modo de usuario. Los componentes principales del sistema operativo y la mayoría de los controladores de dispositivos se ejecutan en el modo kernel y las aplicaciones lo hacen en el modo de usuario. Al implementar contenedores en el equipo, cada contenedor crea un entorno aislado y ligero para ejecutar aplicaciones en el sistema operativo anfitrión. El contenedor comparte la mayoría del kernel del sistema operativo anfitrión para acceder al sistema de archivos y al registro.

Los contenedores de Windows necesitan un sistema operativo contenedor. El contenedor depende del kernel del sistema operativo para administrar servicios como el sistema de archivos, las redes, la programación de procesos y la administración de memoria. El sistema operativo contenedor es el sistema operativo que forma parte del CLR empaquetado. Use diferentes versiones de Windows con los contenedores para habilitar el acceso a características específicas del sistema operativo u otro software necesario.

Aislamiento y seguridad de red

Los contenedores de Windows admiten dos tipos de aislamiento de CLR: Proceso y Hyper-V. La diferencia principal es la extensión del aislamiento creada entre el contenedor, el sistema operativo del anfitrión y los demás contenedores del anfitrión.

El aislamiento de procesos es el enfoque más común. Varias instancias de contenedor que se ejecutan en el mismo anfitrión logran el aislamiento a través de la configuración del control de recursos y el espacio de nombres, junto con otras funciones de aislamiento de procesos.

  • Cada contenedor comparte el mismo kernel con el sistema operativo anfitrión y otros contenedores en el anfitrión.
  • Cada contenedor tiene un adaptador de red virtual que se conecta a un conmutador virtual.
  • Cada punto de conexión de contenedor se coloca en su propio espacio de nombres de red. El espacio de nombres de red predeterminado es la ubicación del adaptador de red virtual anfitrión y la pila de red de anfitrión.

El aislamiento de Hyper-V proporciona mayor seguridad y una compatibilidad más amplia entre el anfitrión y los contenedores. Varias instancias de contenedor se ejecutan en el mismo anfitrión, pero cada contenedor se ejecuta en una máquina virtual optimizada. La máquina virtual proporciona aislamiento de nivel de hardware entre cada contenedor y el anfitrión del contenedor.

  • Cada contenedor básicamente tiene su propio kernel.
  • Para aplicar el aislamiento de red entre los contenedores del anfitrión, se crea un espacio de nombres de red para cada contenedor.
  • Los contenedores se ejecutan en aislamiento de Hyper-V, en el que está instalado el adaptador de red virtual para el contenedor. Los contenedores de Windows Server usan un adaptador de red virtual anfitrión para conectarse al conmutador virtual. El aislamiento de Hyper-V usa un adaptador de red de máquina virtual sintético (no expuesto a la máquina virtual de utilidad) para conectarse al conmutador virtual.

Diagram showing how the virtual machine provides hardware-level isolation between each container and the container host.

Administración de redes con el servicio de red de anfitrión (HNS)

Windows usa el servicio de Redes de Azure de anfitrión (HNS) y el servicio de proceso de anfitrión (HCS) para crear contenedores y adjuntar puntos de conexión a la red.

  • Red: HNS crea un conmutador virtual de Hyper-V para cada red y HNS crea los grupos de direcciones IP y NAT necesarios.
  • Puntos de conexión: HNS crea el espacio de nombres de red para cada punto de conexión de contenedor y HNS/HCS agrega el adaptador de red virtual al espacio de nombres. HNS crea puertos de conmutador virtual. HNS asigna la dirección IP, la información del Sistema de nombres de dominio (DNS), las rutas, etc., al punto de conexión según el modo de controlador de red configurado.
  • Directivas: Para la red NAT predeterminada, HNS crea las reglas de reenvío de puertos WinNAT y las asignaciones con las reglas PERMITIR de Firewall de Windows correspondientes. Para todas las demás redes, HNS usa la Plataforma de filtrado virtual (VFP) para crear directivas para el equilibrio de carga, ACL y encapsulación.

Interacción del firewall

Según la configuración del contenedor y el tipo de controlador de red, las ACL de puerto se aplican mediante una combinación del Firewall de Windows y la Plataforma de filtrado virtual de Azure (VFP). Los valores siguientes usan el firewall de los host de Windows (habilitado con espacios de nombres de red) y VFP:

  • Salida predeterminada: PERMITIR TODO.
  • Entrada predeterminada: PERMITIR TODO (TCP, UDP, ICMP e IGMP) tráfico de red no solicitado. DENEGAR TODO el resto del tráfico de red que no proceda de estos protocolos.

Controladores de red

Windows admite cinco controladores o modos de red diferentes para contenedores Docker: NAT, Transparent, Overlay, L2Bridge y L2Tunnel. Además de la red NAT predeterminada creada por Docker en Windows, también es posible definir redes de contenedor personalizadas mediante el comando docker network create de la CLI de Docker.

En la tabla siguiente, se resumen los tipos de controladores de red disponibles para contenedores Docker en Windows. Elija el controlador de red que cumpla los requisitos de la configuración de la infraestructura de red física y el host (único o varios nodos).

Controlador de red Usos típicos Contenedor a contenedor (nodo único) Contenedor a externo (nodo único + varios nodos) Contenedor a contenedor (varios nodos)
NAT (valor predeterminado) Good para desarrolladores Misma subred: conexión puenteda a través del conmutador virtual de Hyper-V

Subred cruzada: no compatible (solo un prefijo interno NAT)
Enrutado a través del adaptador de red virtual de administración (enlazado a WinNAT) No se admite directamente: requiere exponer puertos a través del host.
Transparente Adecuado para desarrolladores o implementaciones pequeñas Misma subred: conexión puenteada a través del conmutador virtual de Hyper-V

Subred cruzada: Enrutada a través del host de contenedor.
Enrutado a través del host de contenedor con acceso directo al adaptador de red (físico) Enrutado a través del host de contenedor con acceso directo al adaptador de red (físico)
Overlay Bueno para varios nodos; obligatorio para Docker Swarm, disponible en Kubernetes Misma subred: conexión puenteada a través del conmutador virtual de Hyper-V

Subred cruzada: El tráfico de red se encapsula y se enruta a través del adaptador de red virtual de administración.
No compatible directamente: requiere el segundo punto de conexión de contenedor conectado a la red NAT en Windows Server 2016 o regla NAT de VFP en Windows Server 2019. Subred cruzada o la misma: El tráfico de red se encapsula mediante VXLAN y se enruta a través del adaptador de red virtual de administración
L2Bridge Se usa para Kubernetes y Microsoft Software Designed Network (SDN) Misma subred: conexión puenteada a través del conmutador virtual de Hyper-V

Subred cruzada: La dirección MAC del contenedor se vuelve a escribir en la entrada y salida y enrutada.
Dirección MAC del contenedor
reescritura en la entrada y salida Misma subred: conexión puenteda

Subred cruzada: se enruta a través del adaptador de red virtual de administración en WSv1809 y versiones posteriores
L2Tunnel Solo Azure Subred cruzada o la misma: Anclado al conmutador virtual de Hyper-V del host físico en el que se aplica la directiva. El tráfico debe pasar por la puerta de enlace de red virtual de Azure Misma subred/entre subredes: anclado al conmutador virtual de Hyper-V del host físico en el que se aplica la directiva

Opciones de red avanzadas

Aproveche varias opciones de controlador de red para características y funcionalidades específicas de Windows. Estos son algunos ejemplos:

  • Acceda a Switch Embedded Teaming para redes host de contenedor especificando varios adaptadores de red para el contenedor de Windows.
  • Establezca el identificador de VLAN de una red para configurar el aislamiento de VLAN para todos los puntos de conexión de contenedor que se conecten a la red.
  • Especifique la directiva OutboundNAT para una red para permitir que el contenedor acceda al mundo exterior.

Para obtener más información, consulte Opciones de red avanzadas en Windows.