Conceitos de Rede para contêineres do Windows

Concluído

O processador em um computador Windows padrão tem um modo kernel e um modo de usuário. Os principais componentes do sistema operacional e a maioria dos drivers de dispositivos são executados no modo kernel, e os aplicativos são executados no modo de usuário. Quando você implementa contêineres no seu computador, cada contêiner cria um ambiente isolado e leve para executar aplicativos no sistema operacional host. O contêiner compartilha a maior parte do kernel do sistema operacional do host para acessar o sistema de arquivos e o registro.

Os contêineres do Windows precisam de um sistema operacional de contêiner. O contêiner depende do kernel do sistema operacional para gerenciar serviços como o sistema de arquivos, a rede, o agendamento de processos e o gerenciamento de memória. O sistema operacional de contêiner é o sistema operacional que faz parte do runtime empacotado. Você pode usar diferentes versões do Windows com seus contêineres para permitir o acesso a recursos específicos do sistema operacional ou a outros softwares necessários.

Isolamento e segurança de rede

Os contêineres do Windows dão suporte a dois tipos de isolamento de runtime: Process e Hyper-V. A principal diferença é a extensão do isolamento criado entre o contêiner, o sistema operacional do host e os outros contêineres no host.

O isolamento do processo é a abordagem mais comum. Várias instâncias de contêineres em execução no mesmo host obtêm isolamento por meio do namespace e das configurações de controle de recursos, juntamente com outras funções de isolamento de processos.

  • Cada contêiner compartilha o mesmo kernel com o sistema operacional do host e outros contêineres no host.
  • Cada contêiner tem um adaptador de rede virtual que se conecta a um comutador virtual.
  • Cada ponto de extremidade de contêiner é colocado em seu próprio namespace de rede. O namespace de rede padrão é o local do adaptador de rede virtual do host e da pilha de rede do host.

O isolamento do Hyper-V oferece segurança aprimorada e compatibilidade mais ampla entre o host e os contêineres. Várias instâncias de contêiner são executadas no mesmo host, mas cada contêiner é executado em uma máquina virtual otimizada. A máquina virtual fornece isolamento em nível de hardware entre cada contêiner e o host do contêiner.

  • Cada contêiner tem essencialmente seu próprio kernel.
  • Para impor o isolamento de rede entre os contêineres no host, um namespace de rede é criado para cada contêiner.
  • Os contêineres são executados sob o isolamento do Hyper-V no qual o adaptador de rede virtual do contêiner está instalado. Os contêineres do Windows Server usam um adaptador de rede virtual do host para se conectar ao comutador virtual. O isolamento do Hyper-V usa um adaptador de rede de máquina virtual sintética (não exposto à máquina virtual utilitária) para anexar-se ao comutador virtual.

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

Gerenciamento de rede com o Serviço de Rede de Host (HNS)

O Windows usa o Serviço de Rede de Host (HNS) e o Serviço de Computação de Host (HCS) para criar contêineres e anexar pontos de extremidade à rede.

  • Rede: O HNS cria um comutador virtual Hyper-V para cada rede, e o HNS cria os pools de NAT e IP necessários.
  • Pontos de Extremidade: O HNS cria o namespace de rede para cada ponto de extremidade de contêiner, e o HNS/HCS adiciona o adaptador de rede virtual ao namespace. O HNS cria portas de comutadores virtuais. O HNS atribui o endereço IP, as informações do Sistema de Nomes de Domínio (DNS), as rotas etc. ao ponto de extremidade de acordo com o modo de driver de rede configurado.
  • Políticas: Para a rede NAT padrão, o HNS cria regras de encaminhamento de porta WinNAT e mapeamentos com as regras de PERMISSÂO do Firewall do Windows correspondentes. Para todas as outras redes, o HNS usa a Plataforma de Filtragem Virtual (VFP) para criar políticas de balanceamento de carga, ACLs e encapsulamento.

Interação com o firewall

Dependendo da configuração do seu contêiner e do tipo de driver de rede, as ACLs de porta serão impostas por uma combinação do Firewall do Windows e da Plataforma de Filtragem Virtual (VFP) do Azure. Os seguintes valores usam o firewall dos hosts do Windows (aperfeiçoados com namespaces de rede) e VFP:

  • Saída Padrão: PERMITIR TUDO.
  • Entrada Padrão: PERMITIR TODO o tráfego de rede não solicitado (TCP, UDP, ICMP, IGMP). NEGAR TODOS os outros tráfegos de rede que não sejam provenientes desses protocolos.

Drivers de rede

O Windows dá suporte a cinco drivers ou modos de rede diferentes para contêineres do Docker: NAT, Transparente, Sobreposição, L2Bridge e L2Tunnel. Além da rede NAT padrão criada pelo Docker no Windows, você também pode definir redes de contêineres personalizadas usando o comando docker network create na CLI do Docker.

A tabela a seguir resume os tipos de driver de rede disponíveis para contêineres do Docker no Windows. Escolha o driver de rede que atenda aos requisitos da sua infraestrutura de rede física e à configuração do host (um ou vários nós).

Driver de rede Usos típicos Contêiner para contêiner (Nó único) Contêiner para externo (nó único + diversos nós) Contêiner para contêiner (diversos nós)
NAT (Padrão) Bom para Desenvolvedores Mesma Sub-rede: conexão de ponte por meio do comutador virtual do Hyper-V

Sub-rede cruzada: não compatível (somente um prefixo interno de NAT)
Roteado por meio do adaptador de rede virtual de gerenciamento (vinculado ao WinNAT) Não tem suporte direto: requer a exposição de portas por meio do host
Transparente Bom para Desenvolvedores ou implantações pequenas Mesma Sub-rede: conexão de ponte por meio do comutador virtual do Hyper-V

Sub-rede Cruzada: Roteado pelo host do contêiner.
Roteada por meio do host de contêiner com acesso direto ao adaptador de rede (físico) Roteada por meio do host de contêiner com acesso direto ao adaptador de rede (físico)
Sobreposição Adequado para diversos nós, necessário para o Docker Swarm e disponível no Kubernetes Mesma Sub-rede: conexão de ponte por meio do comutador virtual do Hyper-V

Sub-rede Cruzada: O tráfego de rede é encapsulado e roteado por meio do adaptador de rede virtual de gerenciamento.
Sem suporte direto: requer um segundo ponto de extremidade de contêiner anexado à rede NAT no Windows Server 2016 ou a regra de NAT VFP no Windows Server 2019. Mesma Sub-rede/Cruzada: O tráfego de rede é encapsulado usando VXLAN e roteado por meio do adaptador de rede virtual de gerenciamento
L2Bridge Usado para o Kubernetes e a Microsoft Software Designed Network (SDN) Mesma Sub-rede: conexão de ponte por meio do comutador virtual do Hyper-V

Sub-rede Cruzada: Endereço MAC do contêiner reescrito na entrada e saída e roteado.
Endereço MAC do contêiner
reescrito na entrada e saída Mesma sub-rede: conexão com ponte

Sub-rede Cruzada: roteada por meio do adaptador de rede virtual de gerenciamento no WSv1809 e superior
L2Tunnel Somente no Azure Mesma Sub-rede/Cruzada: Fixado no comutador virtual Hyper-V do host físico, ao qual a política é aplicada. O tráfego deve passar pelo gateway de rede virtual do Azure Mesma/Sub-rede cruzada: fixada a comutador virtual do Hyper-V do host físico a onde a política é aplicada

Opções avançadas de rede

Você pode aproveitar várias opções de driver de rede para recursos e funcionalidades específicos do Windows. Estes são alguns exemplos:

  • Acesse o Agrupamento Incorporado de Comutador para redes de host de contêineres especificando vários adaptadores de rede para seu contêiner do Windows.
  • Defina a ID da VLAN para uma rede para configurar o isolamento da VLAN para quaisquer pontos de extremidade de contêiner que se conectem à rede.
  • Especifique a política OutboundNAT de uma rede para permitir que o seu contêiner tenha acesso ao mundo externo.

Para obter mais informações, confira Opções avançadas de rede no Windows.