Escondendo Dispositivos de Rede Virtuais do VMWare e VirtualBox do Firewall do Windows e da Central de Rede e Compartilhamento

vboxhostonlynetnetnsharing1

O VMWare Workstation cria dois adaptadores de rede virtual por padrão. Um é a rede host-only e outro é para roteamento NAT. Você pode criar adaptadores adicionais para adequá-lo a necessidades de cenários mais complexos.

O VirtualBox cria um dispositivo “VirtualBox Host-Only Network” que é essencialmente um adaptador loopback para criar conexões de rede entre máquinas virtuals e entre o host e máquinas virtuais. Infelizmente, ele é exibido como uma rede pública desconhecida.

O problema é que estas redes causam o Windows 7 pensar que está conectado a uma rede pública “não identificada” que possuí como efeito colateral a desabilitação da descoberta de rede e compartilhamento de arquivos e impressoras. Você experimentará o mesmo problema com o Windows 7 Virtual PC se você criar um adaptador de loopback virtual. Este é um grande efeito colateral ao instalar alguns softwares de virtualização. Felizmente, o Windows possuí um meio de marcar um dispositivo de rede como virtual criando um valor no registro.

*NdisDeviceType

O tipo do dispositivo. O valor padrão é zero, que indica um dispositivo de rede padrão que conecta-se a uma rede. Defina *NdisDeviceType para NDIS_DEVICE_TYPE_ENDPOINT (1) caso este dispositivo seja um dispositivo endpoint e não é uma interface de rede verdadeira que conecta-se a uma rede. […] Consequentemente, o Windows ignora dispositivos endpoint quando ele identifica redes. A API Networl Awareness indica que o dispositivo não conecta o computador a uma rede. Para usuários finais nesta situação, a Central de Rede e Compartilhamento e o ícone de rede da área de notificação não exibirá o dispositivo endpoint NDIS como conectado. Porém, a conexão será exibida na pasta Conexões de Rede.

Tanto quanto sei é que este é somente um bug tanto no VirtualBox e VMware Workstation. Eles podem ter seus dispositivos de rede virtual marcados como *NdisDeviceType=1 para compatibilidade com sistemas NT 6.x.

Até eles fazerem isso, Brian Reiter criou dois pequenos scripts em PowerShell para encontrar todos os adaptadores de rede criados pelo VMware [1] quanto para VirtualBox [2] e marcá-los como virtuais e decidi uni-los em um único script.

# tell windows that VM Network Adapters
# is not a true network interface that connects to a network
# see http://msdn.microsoft.com/en-us/library/ff557037(VS.85).aspx
pushd
function NdisDeviceType([string]$arg1)
{
echo "Marking $arg1 as virtual."
cd 'HKLM:\system\CurrentControlSet\control\class\{4D36E972-E325-11CE-BFC1-08002BE10318}'
ls ???? | where { ($_ | get-itemproperty -name driverdesc).driverdesc `
-eq $arg1 } |`
new-itemproperty -name '*NdisDeviceType' -PropertyType dword -value 1
}
NdisDeviceType "VirtualBox Host-Only Ethernet Adapter"
NdisDeviceType "VMware Virtual Ethernet Adapter"
echo "`r`nReboot to apply changes."
popd

Copie o conteúdo do script no Bloco de notas e salve-o como NdisDeviceType.ps1

Para executar o script, abra o Prompt de Comando como administrador e execute o PowerShell com o comando:

powershell.exe -noprofile -executionpolicy bypass

No PowerShell, execute o script digitando o caminho completo do arquivo:

C:\Users\Marcos\Desktop\NdisDeviceType.ps1

NdisDeviceType-PS

A configuração começará a ter efeito após a reinicialização do computador.

Referências

[1] Hide VMWare Virtual Network Interfaces from Windows Firewall and Network and Sharing Center – Brian Reiter – https://brianreiter.org/2011/08/29/hide-vmware-virtual-network-interfaces-from-windows-firewall-and-network-and-sharing-center/

[2] FIX: VirtualBox Host-Only Network Adapter Creates a Virtual “Public Network” Connection That Causes Windows to Disable Services – Brian Reiter – https://brianreiter.org/2010/09/18/fix-virtualbox-host-only-network-adapter-creates-a-virtual-public-network-connection-that-causes-windows-to-disable-services/

Create Your Own PowerShell Functions – Windows IT Pro – http://windowsitpro.com/windows/create-your-own-powershell-functions

How do I pass multiple parameters into a function in PowerShell? – StackOverflow – http://stackoverflow.com/questions/4988226/how-do-i-pass-multiple-parameters-into-a-function-in-powershell

How to enable execution of PowerShell scripts? – Super User – http://superuser.com/questions/106360/how-to-enable-execution-of-powershell-scripts

Anúncios