El host tiene una única IP externa disponible, por lo que configuré a mis invitados KVM con NAT.
¿Cómo configuro un reenvío de puertos para reenviar algunas de las solicitudes desde el exterior a los invitados?
No pude encontrar ninguna documentación sobre esto. La respuesta más cercana es probablemente esta respuesta , pero también se menciona que hay una manera más fácil de hacerlo en libvirt 0.8.3. ¿Alguien sabe de una forma más actual de hacer esto?
Respuestas:
Aquí hay una mejor manera de configurar el reenvío de puertos, utilizando un script de enlace ( fuente ).
En
/etc/libvirt/hooks/qemu
:Debe configurar las cuatro variables en la parte superior para que se ajusten a su configuración de libvirt.
Deberá reiniciar libvirt-bin, que en ubuntu se hace con:
entonces deberá reiniciar el invitado. En Ubuntu, deberá ajustar
/etc/apparmor.d/usr.sbin.libvirtd
para permitir que se ejecute el script de enlace:Cerca de
adjuntar
Luego vuelva a cargar apparmor:
Probablemente haya una manera de autoconfigurarse
$GUEST_IPADDR
usando virsh / dumpxml / iface-dumpxml, pero no la he encontrado. Alternativamente, la IP puede establecerse estáticamente en la red xml: documentación .Por lo que puedo decir, los filtros de red solo se pueden usar para restringir lo que sucede en la red virtual, y no son útiles para el reenvío de puertos.
fuente
/etc/libvirt/hooks/** rmix,
en el archivo de configuración de apparmor de forma predeterminada, y parece tener el mismo efecto. Podría ejecutar el script sin modificar la configuración de apparmor.Estoy en una situación similar Tengo un servidor de Windows ejecutándose en KVM en la red privada NAT que está conectada al host a través de la interfaz virbr0. Quiero acceder a la VM a través del escritorio remoto. Así que tengo que reenviar el tráfico al puerto 3389 (RDP) al puerto VM 3389. He logrado esto con algunas reglas iptable.
HOST-IP, VM-IP y VM-NET tienen que ser adoptados, por supuesto. Sin embargo, jugar con iptables y libvirt es complicado. En este momento estoy buscando una solución para obtener acceso a Internet en mi máquina virtual que he perdido debido a un error con las reglas de iptable :-(
fuente
Creo que la respuesta a la que hace referencia todavía muestra las reglas apropiadas de iptables. Sin embargo, ahora podría usar un enlace de secuencia de comandos para crear y destruir reglas cuando las máquinas virtuales se inician y se detienen. Como Isaac dijo en la respuesta anterior, también hay filtros de red en libvirt actual, pero no estoy seguro de cómo o incluso si se pueden usar para abrir puertos para invitados NAT.
fuente
¿Cómo se configura la red de invitados? Si está puenteado, todo lo que necesita hacer es reenviar los puertos a las direcciones IP de los invitados. Si sus invitados están detrás de otro NAT, el que libvirt configura, entonces se complica
pero en cualquier caso, aquí simplemente trata las máquinas virtuales como lo haría con una máquina física
fuente