Eu tenho um servidor físico/dedicado que está executando o Debian 9 (Stretch). O servidor tem recursos suficientes para suportar sua própria carga e a carga de algumas máquinas virtuais (nesta questão: Windows Server 2016 Standard edition).
Para simplificar esta questão, usarei o host Debian para me referir ao servidor físico/dedicado que está executando o Debian 9 (Stretch) e o Windows VM para se referir à máquina virtual (atualmente não implementada) do Windows Server 2016 Standard edition que é executada no Host Debian .
O host Debian usa KVM/QEMU/virsh para fornecer capacidade de virtualização e sua configuração. O host Debian atualmente não possui nenhuma máquina virtual (ou rede) configurada. O host Debian possui apenas uma placa de rede física (NIC) que é mapeada para a interface de rede eth0
. O próprio host Debian fornece vários serviços que o host Debian também deve fornecer, quando estiver hospedando máquinas virtuais adicionais.
O host Debian deve (escopo desta questão) hospedar uma VM Windows. O host Debian e seus serviços devem poder acessar a VM do Windows por meio de uma rede/endereço IPv4 privado. A VM do Windows deve ser capaz de acessar o host Debian pela mesma rede IPv4 (endereço IPv4 privado do host Debian). A VM do Windows não deve ser acessível por meio de uma rede/endereço IPv4 ou IPv6 público. A VM do Windows deve poder acessar a Internet (conexões de saída). A VM do Windows não deve ter uma rede/endereço IPv4 ou IPv6 público atribuído a ela. Um proxy no host Debian deve fazer proxy de conexões de entrada específicas para o endereço IPv4 privado da VM do Windows.
O host Debian deve ainda (relevante para esta questão) ser capaz de hospedar outras máquinas virtuais (outras instâncias Debian). Todas as máquinas virtuais no host Debian devem ser isoladas umas das outras. Significando que o host Debian pode alcançar todas as VMs, todas as VMs podem alcançar o host Debian e a Internet, mas as VMs não podem alcançar umas às outras (diretamente).
Encontrei alguns conceitos sobre rede VM. No entanto, não consegui encontrar uma solução que atendesse às minhas necessidades. O conceito mais próximo (mas não correspondente) que encontrei foi: Bridge networking . Com isso, a VM do Windows estaria conectada "à Internet". Isso não é desejado. Os outros conceitos (NAT, somente Host) não permitem Host -> Guest ou Guest -> acesso à Internet .
Minha pergunta é: meu projeto de rede planejado é possível com uma NIC virtual? Como implementar esse design de rede com KVM/QEMU no host Debian e no Windows VM?
Devido a restrições de rede do lado dos provedores de hospedagem, não posso usar um endereço IP público dentro de uma máquina virtual (filtros IP para MAC). Além disso: não quero que as VMs sejam acessadas diretamente da Internet.
A pilha de rede 'privada' padrão fornecida com KVM (dnsmasq) permite que você faça isso, o padrão é uma sub-rede privada de 192.168.122.0/24. Todo o seu tráfego de VM é enviado por NAT para o host e aparece do lado de fora como se fosse o endereço IP público do seu host (como um roteador). Se estiver usando o virt-manager, você pode simplesmente acessar os detalhes do host e provisionar mais redes privadas e, em seguida, anexar a interface de rede da nova VM à sub-rede que você definiu para ela.