Concepts de mise en réseau pour les conteneurs Windows

Effectué

Le processeur d’un ordinateur Windows standard dispose d’un mode noyau et d’un mode utilisateur. Les principaux composants du système d’exploitation et la plupart des pilotes de périphérique s’exécutent en mode noyau, alors que les applications s’exécutent en mode utilisateur. Lorsque vous implémentez des conteneurs sur votre ordinateur, chaque conteneur crée un environnement isolé et léger pour exécuter des applications sur le système d’exploitation hôte. Le conteneur partage la plupart du noyau du système d’exploitation hôte pour l’accès au système de fichiers et au Registre.

Les conteneurs Windows ont besoin d’un système d’exploitation de conteneur. Le conteneur dépend du noyau du système d’exploitation pour gérer des services comme le système de fichiers, le réseau, la planification des processus et la gestion de la mémoire. Le système d’exploitation du conteneur est celui qui fait partie du runtime packagé. Vous pouvez utiliser différentes versions de Windows avec vos conteneurs pour permettre l’accès à des fonctionnalités de système d’exploitation spécifiques ou à d’autres logiciels requis.

Isolement et sécurité réseau

Les conteneurs Windows prennent en charge deux types d’isolement du runtime : Processus et Hyper-V. La principale différence est l’étendue de l’isolement créé entre le conteneur, le système d’exploitation hôte et les autres conteneurs sur l’hôte.

L’isolement des processus est l’approche la plus courante. Plusieurs instances de conteneur s’exécutant sur le même hôte obtiennent l’isolement via l’espace de noms et les paramètres de contrôle des ressources, ainsi que d’autres fonctions d’isolement de processus.

  • Chaque conteneur partage le même noyau avec le système d’exploitation hôte et d’autres conteneurs sur l’hôte.
  • Chaque conteneur a une carte réseau virtuelle qui se connecte à un réseau virtuel.
  • Chaque point de terminaison de conteneur est placé dans son propre espace de noms réseau. L’espace de noms réseau par défaut est l’emplacement de la carte réseau virtuelle hôte et de la pile réseau hôte.

L’isolement Hyper-V offre une sécurité renforcée et une compatibilité plus large entre l’hôte et les conteneurs. Plusieurs instances de conteneur s’exécutent sur le même hôte, mais chaque conteneur s’exécute dans une machine virtuelle optimisée. La machine virtuelle fournit un isolement au niveau matériel entre chaque conteneur et l’hôte de conteneur.

  • Chaque conteneur a essentiellement son propre noyau.
  • Pour appliquer l’isolement réseau entre les conteneurs sur l’hôte, un espace de noms réseau est créé pour chaque conteneur.
  • Les conteneurs s’exécutent sous l’isolement Hyper-V dans lequel la carte réseau virtuelle du conteneur est installée. Les conteneurs Windows Server utilisent une carte réseau virtuelle hôte pour s’attacher au réseau virtuel. L’isolement Hyper-V utilise une carte réseau de machine virtuelle synthétique (non exposée à la machine virtuelle de l’utilitaire) pour s’attacher au réseau virtuel.

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

Gestion du réseau avec le service réseau hôte (HNS)

Windows utilise le service de mise en réseau hôte (HNS) et le service de calcul hôte (HCS) pour créer des conteneurs et attacher des points de terminaison au réseau.

  • Réseau : HNS crée un réseau virtuel Hyper-V pour chaque réseau, et HNS crée le NAT et les pools d’IP requis.
  • Points de terminaison : HNS crée l’espace de noms réseau pour chaque point de terminaison de conteneur, et HNS/HCS ajoute la carte réseau virtuelle à l’espace de noms. HNS crée des ports de réseau virtuel. HNS attribue l’adresse IP, les informations DNS (Domain Name System), les routes, et ainsi de suite, au point de terminaison en fonction du mode de pilote réseau configuré.
  • Stratégies : Pour le réseau NAT par défaut, HNS crée les règles de transfert de port WinNAT et les mappages avec les règles ALLOW du Pare-feu Windows correspondantes. Pour tous les autres réseaux, HNS utilise la plateforme de filtrage virtuel (VFP) pour créer des stratégies pour l’équilibrage de charge, les listes de contrôle d’accès (ACL) et l’encapsulation.

Interaction avec le pare-feu

Selon la configuration de votre conteneur et le type de pilote réseau, les ACL de port sont appliquées par une combinaison du Pare-feu Windows et de la plateforme de filtrage virtuel Azure (Azure VFP). Les valeurs suivantes utilisent le pare-feu des hôtes Windows (compatible avec les espaces de noms réseau) et VFP :

  • Sortant par défaut : AUTORISER TOUT.
  • Entrant par défaut : AUTORISER TOUT (TCP, UDP, ICMP, IGMP) le trafic réseau non sollicité. REFUSER TOUT autre trafic réseau différent de ces protocoles.

Pilotes réseau

Windows prend en charge cinq pilotes ou modes de mise en réseau différents pour les conteneurs Docker : NAT, transparent, superposition, L2Bridge et L2Tunnel. Outre le réseau NAT par défaut créé par Docker sur Windows, vous pouvez également définir des réseaux de conteneurs personnalisés à l’aide de la commande docker network create de l’interface CLI Docker.

Le tableau suivant récapitule les types de pilotes réseau disponibles pour les conteneurs Docker sur Windows. Choisissez le pilote réseau qui répond aux exigences de votre configuration d’infrastructure réseau physique et d’hôte (un ou plusieurs nœuds).

Pilote réseau Utilisations classiques Conteneur à conteneur (nœud unique) Conteneur à externe (nœud unique + multinœud) Conteneur à conteneur (multinœud)
NAT (par défaut) Convient aux développeurs Même sous-réseau : connexion reliée par un pont via un commutateur virtuel Hyper-V

Multi-sous-réseau : non pris en charge (un seul préfixe interne NAT)
Routé via la carte réseau virtuelle de gestion (liée à WinNAT) Non pris en charge directement : nécessite l’exposition des ports via l’hôte
Mode transparent Convient aux développeurs ou aux petits déploiements Même sous-réseau : connexion reliée par un pont via un commutateur virtuel Hyper-V

Sous-réseau croisé : Routé via l’hôte de conteneur.
Routé via l’hôte de conteneur avec un accès direct à la carte réseau (physique) Routé via l’hôte de conteneur avec un accès direct à la carte réseau (physique)
Overlay Convient pour plusieurs nœuds ; requis pour Docker Swarm, disponible dans Kubernetes Même sous-réseau : connexion reliée par un pont via un commutateur virtuel Hyper-V

Sous-réseau croisé : Le trafic réseau est encapsulé et routé via la carte réseau virtuelle de gestion.
Non pris en charge directement : nécessite un deuxième point de terminaison de conteneur attaché au réseau NAT sur Windows Server 2016 ou règle NAT VFP sur Windows Server 2019. Sous-réseau identique/croisé : Le trafic réseau est encapsulé à l’aide de VXLAN et routé via la carte réseau virtuelle de gestion
L2Bridge Utilisé pour Kubernetes et Microsoft Software Designed Network (SDN) Même sous-réseau : connexion reliée par un pont via un commutateur virtuel Hyper-V

Sous-réseau croisé : Adresse MAC du conteneur réécrite en entrée et sortie et routée.
Adresse MAC du conteneur
réécrite sur l’entrée et la sortie Même sous-réseau : connexion reliée par un pont

Sous-réseau croisé : routé via la carte réseau virtuelle de gestion sur WSv1809 et versions ultérieures
L2Tunnel Azure uniquement Sous-réseau identique/croisé : Épinglé au réseau virtuel Hyper-V de l’hôte physique à l’endroit où la stratégie est appliquée. Le trafic doit passer par la passerelle de réseau virtuel Azure Même sous-réseau/multi-sous-réseau : épinglé au commutateur virtuel Hyper-V de l’hôte physique à l’endroit où la stratégie est appliquée

Options de mise en réseau avancées

Vous pouvez tirer parti de plusieurs options de pilote réseau pour des capacités et des fonctionnalités spécifiques de Windows. Voici quelques exemples :

  • Accédez à Switch Embedded Teaming (SET) pour les réseaux hôtes de conteneur en spécifiant plusieurs cartes réseau pour votre conteneur Windows.
  • Définissez l’ID de réseau local virtuel d’un réseau pour configurer l’isolement du réseau local virtuel pour tous les points de terminaison de conteneur qui s’attachent au réseau.
  • Spécifiez la stratégie OutboundNAT pour un réseau pour autoriser l’accès de votre conteneur au monde extérieur.

Pour plus d’informations, consultez Options réseau avancées dans Windows.