[VirtualBox] Adaptadores de Red

Iniciado por K-YreX, 24 Noviembre 2020, 00:52 AM

0 Miembros y 1 Visitante están viendo este tema.

K-YreX

He instalado en varias ocasiones VirtualBox en una máquina Windows 10. Me he dado cuenta de que cada vez que instalo VBox, se crea un adaptador de red: <VirtualBox Host-Only Network> (Habilitado). Hasta aquí creo que todo normal.

Sin embargo; en ocasiones, cuando ejecuto VBox, me aparece varias ventanas seguidas solicitando permisos para VBox y en caso de que acepte, me crea otro/s adaptador/es <VirtualBox Host-Only Network #X> (donde X es un número {2, 3, 4, ...}) (Habilitado) y después se inicia el programa en sí.
En cambio si cancelo las ventanas de permisos de VBox, el programa se inicia con normalidad sin crear más adaptadores.
No me queda muy claro por qué se crean más adaptadores de red y por qué esto sólo ocurre en algunas ocasiones.

Empecé a notar esto después de instalar en varias ocasiones Genymotion. La primera vez que lo instalé me pidió permisos de ejecución para VBox y se los concedí porque sino fallaba. Después de eso estuvo una temporada que funcionaba bien y de repente me empezó a pasar como con VBox: en ocasiones cuando ejecuto Genymotion me pide permisos para ejecutar VBox y si no se los doy no puedo iniciarlo. Sin embargo; si se los doy, me salen varias ventanas seguidas seguidas de permisos y me crea un adaptador de red nuevo cada vez que acepto los permisos. Lo peor de todo es que cuando los acepto, Genymotion arranca correctamente pero cuando voy a iniciar un dispositivo virtual, este se queda cargando y nunca llega a iniciar (o salta un error).

He buscado documentación en las páginas tanto de VBox como de Genymotion y en otras páginas pero siempre te explican los tipos de conexión de las VMs y no he encontrado nada sobre este tema. Además no tengo muchos conocimientos de redes por lo que espero que alguien pueda ayudarme con este tema.

PD: Necesito instalar Genymotion pero actualmente lo tengo desinstalado tras haber tenido estos problemas.
Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;

EdePC

Has revisado en Herramientas globales de VirtualBox, ahí deben de estar las Redes Host Only. También puede ser que tengas instalada alguna extensión o programa extra que automáticamente agregue las redes. Acá vi un problema con Vagrant: https://stackoverflow.com/questions/32093792/how-to-remove-extra-host-only-network-interfaces-created-by-vagrant-on-windows-1

K-YreX

Efectivamente en las herramientas de VirtualBox me aparecen los dos adaptadores que veo también desde Configuración - Red e Internet - Estado - Cambiar opciones del adaptador.

Y respecto a lo de que algún programa/extensión puede que me agregue estos adaptadores; hasta ahora pensaba que era Genymotion el único que lo hacía y suponía que sería para asignar dicho adaptador al dispositivo creado desde aquí. Sin embargo, en esta última ocasión ha sido el propio VBox el que me ha creado el adaptador extra.
He comprobado todas las máquinas virtuales por si se hubiese asignado dicho adaptador a alguna de ellas y no es así. Todas las máquinas las tengo configuradas con un único adaptador y están conectados a NAT, no a host-only adapter.

Hay alguna manera de averiguar por qué se están creando más adaptadores??
Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;

EdePC

Claro, el Visor de eventos debería de registrar que se ha agregado un nuevo Adaptador de Red y quizá muy cerca de ahí está la causa. Sino usar ProcMon y ponerlo a escuchar justo antes de que se agregue el Adaptador.

También puedes consultar directamente el Log de VirtualBox en %UserProfile%\.VirtualBox\VBoxSVC.log Incluso eliminar la carpeta .VirtualBox para restablecer la configuración (cuidado con tener máquinas virtuales u otras cosas en esta carpeta)

K-YreX

He intentado probar todo desde una máquina virtual inmutable para tener siempre el mismo estado inicial pero tenía problemas para virtualizar dispositivos con Genymotion (que es lo que me da problemas). Así que al final he desinstalado VirtualBox y Genymotion de mi sistema anfitrión y he hecho todas las pruebas en este último.

Durante todo el proceso he ido mirando los registros del Visor de eventos pero no daban mucha información ni en la parte de detalles así que al final he sacado más información de los logs de cada programa (que no significa que la haya entendido toda  :rolleyes:).

La instalación de VirtualBox ha ido todo bien. La he realizado generando también los logs de instalación y no he visto nada raro. Se crea un adaptador host-only network (como es normal).
Sin embargo, al instalar Genymotion es cuando empiezan a crearse adaptadores nuevos. He revisado los logs de Genymotion también y las siguientes líneas son las que me resultan extrañas:

//...
[Genymotion:5412] [debug] [VBox] get "" from host.only.interface
[Genymotion:5412] [debug] [VBox] [findHostOnlyInterface] Looking for compatible host-only interface
[Genymotion:5412] [debug] [VBox] Call: ("list", "hostonlyifs")
[Genymotion:5412] [debug] [VBox] Return code: 0
[Genymotion:5412] [debug] [VBox] [getSavedHostOnlyInterface] Checking "VirtualBox Host-Only Ethernet Adapter" interface status ( QHostAddress("192.168.56.1") )
[Genymotion:5412] [debug] [VBox] Empty interface name
[Genymotion:5412] [debug] [VBox] [createHostOnlyInterface] Creating new host-only interface
[Genymotion:5412] [debug] [VBox] Call: ("hostonlyif", "create")
[Genymotion:5412] [debug] [VBox] Return code: 0
[Genymotion:5412] [debug] [VBox] [createHostOnlyInterface] Interface "VirtualBox Host-Only Ethernet Adapter #2" created with success
[Genymotion:5412] [debug] [VBox] Call: ("list", "hostonlyifs")
[Genymotion:5412] [debug] [VBox] Return code: 0
[Genymotion:5412] [debug] [VBox] Call: ("hostonlyif", "ipconfig", "VirtualBox Host-Only Ethernet Adapter #2", "--ip", "192.168.225.1", "--netmask", "255.255.255.0")
[Genymotion:5412] [debug] [VBox] Return code: 0
[Genymotion:5412] [debug] [VBox] Call: ("hostonlyif", "ipconfig", "VirtualBox Host-Only Ethernet Adapter #2", "--ip", "192.168.225.2", "--netmask", "255.255.255.0")
[Genymotion:5412] [debug] [VBox] Return code: 0
[Genymotion:5412] [debug] [VBox] Call: ("dhcpserver", "remove", "--ifname", "VirtualBox Host-Only Ethernet Adapter #2")
[Genymotion:5412] [critical] [VBox] Return code: 1
[Genymotion:5412] [critical] [VBox] Output command: "VBoxManage.exe: error: Failed to find DHCP server for host-only interface 'VirtualBox Host-Only Ethernet Adapter #2' (network 'HostInterfaceNetworking-VirtualBox Host-Only Ethernet Adapter #2')"
[Genymotion:5412] [warning] [VBox] 1 "VBoxManage.exe: error: Failed to find DHCP server for host-only interface 'VirtualBox Host-Only Ethernet Adapter #2' (network 'HostInterfaceNetworking-VirtualBox Host-Only Ethernet Adapter #2')\r\n" ""
[Genymotion:5412] [debug] [VBox] Call: ("dhcpserver", "add", "--ifname", "VirtualBox Host-Only Ethernet Adapter #2", "--ip", "192.168.225.100", "--netmask", "255.255.255.0", "--lowerip", "192.168.225.101", "--upperip", "192.168.225.254", "--enable")
[Genymotion:5412] [debug] [VBox] Return code: 0
[Genymotion:5412] [debug] [VBox] [createHostOnlyInterface] DHCP server created with success
[Genymotion:5412] [debug] [VBox] set "VirtualBox Host-Only Ethernet Adapter #2" to host.only.interface
[Genymotion:5412] [debug] [VBox] [createHostOnlyInterface] "VirtualBox Host-Only Ethernet Adapter #2" host-only interface is ready to use
[Genymotion:5412] [debug] [VBox] Restart adapter "VirtualBox Host-Only Ethernet Adapter #2"
[Genymotion:5412] [debug] [VBox] Execute "powershell" ("-WindowStyle", "Hidden", "-command", "start-process -verb RunAs -filepath wmic -argumentlist 'path', 'win32_networkadapter', 'where name=\"VirtualBox Host-Only Ethernet Adapter #2\"', 'call', 'Disable'")

No sé muy bien a qué hace referencia el host.only.interface de la primera línea del log pero parece que no obtiene ningún adaptador de ahí y por eso aparecen varias ventanas de control de cuentas de usuarios para permitir la ejecución de VirtualBoxInterface (que es lo que crea el nuevo adaptador). Aparecen 3 ventanas seguidas de VirtualBoxInterface y después una de WMI (última línea del log anterior) y si das permiso a esta última vuelven a aparecer otras 3 ventanas de VirtualBoxInterface.

Después de muchas pruebas he descubierto que para que funcione tengo que permitir la ejecución de las ventanas de VirtualBoxInterface y cuando aparece la de WMI cancelar esta última (porque vi que estaba deshabilitando el adaptador). Así ya no aparecen más ventanas de permisos de ejecución y el dispositivo virtual se inicia correctamente.
Logs generados en una ejecución correcta:

[Genymotion Player:8316] [debug] [VBox] get "VirtualBox Host-Only Ethernet Adapter #3" from host.only.interface
[Genymotion Player:8316] [debug] [VBox] [findHostOnlyInterface] Looking for compatible host-only interface
[Genymotion Player:8316] [debug] [VBox] Call: ("list", "hostonlyifs")
[Genymotion Player:8316] [debug] [VBox] Return code: 0
[Genymotion Player:8316] [debug] [VBox] [getSavedHostOnlyInterface] Checking "VirtualBox Host-Only Ethernet Adapter #3" interface status ( QHostAddress("192.168.157.2") )
[Genymotion Player:8316] [debug] [VBox] [getSavedHostOnlyInterface] "VirtualBox Host-Only Ethernet Adapter #3" Interface seems compatible
[Genymotion Player:8316] [debug] [VBox] Call: ("list", "dhcpservers")
[Genymotion Player:8316] [debug] [VBox] Return code: 0
[Genymotion Player:8316] [debug] [VBox] [checkIfInterfaceHasValidDhcp] "HostInterfaceNetworking-VirtualBox Host-Only Ethernet Adapter #3" DHCP server is associated with "VirtualBox Host-Only Ethernet Adapter #3" interface
[Genymotion Player:8316] [debug] [VBox] [checkIfInterfaceHasValidDhcp] "VirtualBox Host-Only Ethernet Adapter #3" interface is compatible

Como se puede ver en este caso, la primera entrada obtiene el adaptador #3 de host.only.interface y entonces ya no tiene que crear más adaptadores y funciona todo bien.
Al momento de hacer las pruebas, noté que el adaptador #3 no aparecía en los adaptadores como Host-Only Network #3 (Host-Only Adapter #3) sino como Ethernet #3 (Host-Only Adapter #3). Pero ahora sí aparece como Host-Only Network #3.

He borrado todos los adaptadores de VirtualBox que se me habían ido creando durante las pruebas y he dejado únicamente el primero que se crea al instalar VirtualBox y este (el #3) que es el que funciona.
No entiendo por qué con el primer adaptador falla y con este funciona bien. He comprobado que el adaptador 1 estuviese habilitado y con el DHCP habilitado (resumiendo: misma configuración que el #3).
Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;