Acabo de instalar KVM en mi servidor Ubuntu de acuerdo con esta guía: https://help.ubuntu.com/community/KVM/Installation
Luego preparó una red puenteada como se muestra aquí: https://help.ubuntu.com/community/KVM/Networking
Luego, creé una máquina virtual con virt-manager. ¡Lo intenté varias veces pero el invitado no se conecta a la red! ¿Alguna ayuda?
ifconfig:
br0 Link encap:Ethernet HWaddr d0:27:88:b0:e4:38
inet addr:192.168.20.100 Bcast:192.168.20.255 Mask:255.255.255.0
inet6 addr: fe80::d227:88ff:feb0:e438/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:62 errors:0 dropped:0 overruns:0 frame:0
TX packets:62 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:10493 (10.4 KB) TX bytes:8433 (8.4 KB)
eth0 Link encap:Ethernet HWaddr d0:27:88:b0:e4:38
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:62 errors:0 dropped:0 overruns:0 frame:0
TX packets:63 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:11361 (11.3 KB) TX bytes:8479 (8.4 KB)
Interrupt:41
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
virbr0 Link encap:Ethernet HWaddr 5a:8c:57:95:af:3b
inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
espectáculo brctl:
bridge name bridge id STP enabled interfaces
br0 8000.d02788b0e438 no eth0
virbr0 8000.000000000000 yes
brctl showmacs br0:
port no mac addr is local? ageing timer
1 5c:d9:98:67:b6:28 no 48.33
1 d0:27:88:b0:e4:38 yes 0.00
1 e0:2a:82:f9:6c:09 no 0.00
ruta ip:
default via 192.168.20.1 dev br0 metric 100
192.168.20.0/24 dev br0 proto kernel scope link src 192.168.20.100
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
* En el invitado * No pude copiar y pegar la información del invitado porque no puedo enviarlo. No recibió ninguna ip de DHCP. No funcionará incluso después de configurarlo manualmente.
server
networking
kvm
network-bridge
THpubs
fuente
fuente

ifconfig,brctl show,brctl showmacs br0, yip route. En el invitado:ifconfig,ip route,ping 8.8.8.8,ping <your internet router>, ytraceroute 8.8.8.8. No puedo decir que configuré kvm de la manera que tú lo has hecho, pero me puse a trabajar en puente usando elkvmcomando. Tuve que desconectar la conexión inalámbrica para que mi host se conectara a Internet y, como dicen las instrucciones que citó, necesita conectarse a Internet con Ethernet.brctl showmacs br0lista anterior?Respuestas:
Preliminares
Lo siguiente funcionó para mí para Ubuntu 12.04. Debe deshabilitar el firewall de su computadora mientras prueba esto para que no interfiera.
El archivo / etc / default / qemu-kvm debe ser como se instaló originalmente.
Necesitará tener bridge-utils qemu-kvm y libvirt-bin instalados. Cualquier usuario que use máquinas virtuales debe agregarse al grupo libvirtd.


Parece que ya no hay necesidad de agregar la capacidad CAP_NET_ADMIN.
Configuración de la red
El modo de red predeterminado es el modo Usuario, también llamado SLIRP. Utiliza un puente virbr0 predefinido que se enruta NAT a la computadora invitada. El enrutamiento NAT utiliza la función ip_forwarding del núcleo y iptables . El modo de puente utiliza un puente virtual en el invitado al que se conecta la interfaz Ethernet (sin numerar) y en el que tanto el host como el invitado tienen sus interfaces de red.
Los siguientes diagramas pueden aclarar las diferencias:
Puede ver cómo se define la red de usuario predeterminada con:
Puedo configurar el modo puenteado con los siguientes enfoques:
En / etc / network / interfaces (de la parte puente de la publicación que menciona en su pregunta):
auto lo iface lo inet loopback #auto eth0 #face eth0 inet dhcp auto eth0 iface eth0 inet manual auto br0 iface br0 inet dhcp bridge_ports eth0 bridge_stp off bridge_fd 0 bridge_maxwait 0Reiniciar; y asegúrese de que la red inalámbrica no esté activa. Verifique la ruta IP predeterminada con
ip route. Debe estar utilizando la interfaz br0.NB Si su Ethernet no está conectada cuando se realiza este cambio, necesita tener su cable Ethernet enchufado y obtener un operador o el arranque se bloqueará durante dos minutos y no tendrá capacidad de red Eso es porque la interfaz eth0, por estando en este archivo, debe aparecer antes de que el arranque pueda continuar normalmente.
NB Generalmente, no puede usar una red inalámbrica en lugar de eth0 debido a su incapacidad para usar múltiples direcciones MAC (infiero que necesitan una segunda para el puente).
Como alternativa, puede deshabilitar el uso de Ethernet y asegurarse de que no tenga una dirección IP y de que no haya una ruta predeterminada configurada
ip route. Luego:También puede proporcionar una dirección IP estática aquí, así como definir la ruta predeterminada y la dirección DNS. Para este ejemplo
dhclienthace esto.Aquí está mi tabla de rutas:
Usando kvm
Entonces puedo arrancar una máquina kvm en puente con:
El
-netdev tapparámetro hace que sudo sea un requisito. Cuando se inicia la VM, qemu-kvm ejecuta los siguientes comandos:Esto lo hace / etc / qemu-ifup
La interfaz vnet0 de la VM se agrega al puente br0 porque la ruta predeterminada anterior usa esa interfaz de puente. Si no estuviera allí, la interfaz táctil se agregaría a la interfaz virbr0. Como eso no está conectado a Internet, NAT se usaría para conectar al invitado al host e Internet, en mis experimentos. Puede dirigir el vnet0 a un puente en particular en / etc / default / qemu-kvm. Usando virt-manager a continuación, puede dirigir explícitamente a qué puente conectarse.
Debido a los comandos anteriores emitidos por qemu-kvm y el
-netdev tap,id=tunnel,ifname=vnet0parámetro, la máquina virtual vm está conectada al túnel vnet0 y el túnel está conectado al puente br0.Ahora puedo pasar directamente a esta máquina virtual invitada desde otra computadora en mi red.
Mi host
ifconfig(tenga en cuenta la interfaz vnet0 que aparece en mi red cuando se está ejecutando la VM):$ ifconfig br0 Enlace encapsulado: Ethernet HWaddr 00: 1e: 33: 88: 07: e5 inet addr: 192.168.1.45 Bcast: 255.255.255.255 Máscara: 255.255.255.0 inet6 addr: fe80 :: 21e: 33ff: fe88: 7e5 / 64 Alcance: Enlace UP BROADCAST RUNNING MULTICAST MTU: 1500 Métrica: 1 Paquetes RX: 6526 errores: 0 descartados: 0 desbordamientos: 0 trama: 0 Paquetes TX: 7543 errores: 0 descartados: 0 desbordamientos: 0 operador: 0 colisiones: 0 txqueuelen: 0 RX bytes: 2712940 (2.7 MB) TX bytes: 1071835 (1.0 MB) eth0 Enlace de enlace: Ethernet HWaddr 00: 1e: 33: 88: 07: e5 UP BROADCAST RUNNING MULTICAST MTU: 1500 Métrica: 1 Paquetes RX: 7181 errores: 0 descartados: 0 desbordamientos: 0 trama: 0 Paquetes TX: 7740 errores: 0 descartados: 0 desbordamientos: 0 operador: 0 colisiones: 0 txqueuelen: 1000 RX bytes: 2974585 (2.9 MB) TX bytes: 1096580 (1.0 MB) Interrupción: 43 Dirección base: 0x6000 lo Link encap: Loopback local inet addr: 127.0.0.1 Máscara: 255.0.0.0 inet6 addr: :: 1/128 Ámbito: Host UP LOOPBACK RUNNING MTU: 16436 Métrica: 1 Paquetes RX: 10 errores: 0 descartados: 0 desbordamientos: 0 trama: 0 Paquetes TX: 10 errores: 0 descartados: 0 desbordamientos: 0 operador: 0 colisiones: 0 txqueuelen: 0 RX bytes: 664 (664.0 B) TX bytes: 664 (664.0 B) vnet0 Enlace de encapsulado: Ethernet HWaddr ca: 0c: 73: c3: bc: 45 inet6 addr: fe80 :: c80c: 73ff: fec3: bc45 / 64 Alcance: Enlace UP BROADCAST RUNNING MULTICAST MTU: 1500 Métrica: 1 Paquetes RX: 226 errores: 0 descartados: 0 desbordamientos: 0 trama: 0 Paquetes TX: 429 errores: 0 descartados: 0 desbordamientos: 0 operador: 0 colisiones: 0 txqueuelen: 500 RX bytes: 26919 (26,9 KB) TX bytes: 58929 (58,9 KB) virbr0 Enlace de encapsulado: Ethernet HWaddr d6: 18: 22: db: ff: 93 inet addr: 192.168.122.1 Bcast: 192.168.122.255 Máscara: 255.255.255.0 UP BROADCAST MULTICAST MTU: 1500 Métrica: 1 Paquetes RX: 0 errores: 0 descartados: 0 desbordamientos: 0 trama: 0 Paquetes TX: 0 errores: 0 descartados: 0 desbordamientos: 0 operador: 0 colisiones: 0 txqueuelen: 0 RX bytes: 0 (0.0 B) TX bytes: 0 (0.0 B)Mi configuración de puente mientras ejecuto la VM:
$ brctl show nombre de puente id de puente interfaces habilitadas para STP br0 8000.001e338807e5 no eth0 vnet0 virbr0 8000.000000000000 síTenga en cuenta que tanto la interfaz vnet0 de la máquina virtual como la interfaz eth0 están conectadas al puente br0.
Y los MAC en la interfaz br0:
Tenga en cuenta que la interfaz br0 conecta mi computadora host al mismo puente utilizado por el invitado.
Puede verificar que está conectado en puente en lugar de enrutar NAT a su propia red mediante
traceroute 8.8.8.8. Si el primer nodo es el enrutador de su red en lugar de la dirección IP del invitado, su red debería funcionar correctamente.Ver esta documentación .
virt-manager
Asegúrese de haber instalado
virt-manageryhal. Elhalpaquete es una dependencia sugeridavirt-managery se utiliza para determinar la configuración de red de su sistema al crear o editar invitados.Mientras tenía el puente br0 definido como anteriormente, creé una máquina virtual con virt-manager de la siguiente manera:
Pude ir directamente al resto de mi red doméstica y a Internet desde este invitado. También pude ingresar desde la otra computadora Ubuntu (no host, no huésped) en mi red doméstica.
Aquí está el
kvmcomando muy largo ejecutado por virt-manager (en comparación con EApubs o cualquier otra persona que tenga problemas con esto):Aquí está la porción de red de la descripción de la máquina virtual en /etc/libvirt/qemu/quantal.xml
De acuerdo con este enlace, para el rendimiento y la confiabilidad, puede ser mejor configurar el modelo de dispositivo de red
virtio, puede hacerlo en el visor virtual presionando el botón i , yendo a la configuración de NIC y configurando el "Modelo de dispositivo "avirtio. También puede agregar esto al XML anterior agregando la línea:En resumen
Todo esto asumió el 12.04 fue:
-device e1000,netdev=tunnel -netdev tap,id=tunnel,ifname=vnet0, o cree una máquina virtual con virt-manager, especificando el puente de red br0 en el panel Paso 4-> Opciones avanzadas.No se necesitaron más cambios en las redes, capacidades, plantillas o configuraciones.
Para exponer un servicio en su nuevo invitado a Internet, debe:
Recuerde probar y volver a habilitar el servicio de firewall para su computadora host. Es posible que necesite cualquier entrada para reenviar el tráfico al invitado.
Consulte https://help.ubuntu.com/community/KVM/Installation , https://help.ubuntu.com/community/KVM/Networking y https://help.ubuntu.com/12.04/serverguide/libvirt. html .
fuente
ps aux | grep kvm).brctl showcomo lo tiene en su pregunta?) ¿Qué versión de Ubuntu está ejecutando? Quizás esa sea la diferencia. ¿Qué versión de virt-manager? (El mío es 0.9.1-1ubuntu5.1).Si el comportamiento que está viendo es que el host puede acceder al invitado, y el invitado puede acceder al host, pero el invitado no puede acceder a otras máquinas en la red o viceversa ... probablemente el firewall del host esté bloqueando el acceso.
Ver: https://bugs.launchpad.net/ubuntu/+source/ufw/+bug/573461
Específicamente, esta sección: "El paso final es deshabilitar netfilter en el puente:
fuente
Estos son los dos scripts que uso para crear un puente
qemu-kvm.Primero, deje que el host se convierta en un enrutador IP.
Guión
ip-router.sh:Luego, crea el
tun-tapinterfaz ybridgecon su interfaz predeterminada (generalmente la que tiene una conexión a Internet).Guión
create-qemu-bridged-tuntap.sh:Uso estos scripts a diario, por lo que deberían funcionar bien también para usted. Tendrás que instalar algún paquete para que todo funcione. Utilizando:
puede ver qué paquete debe tener
COMMAND. Por ejemplo, para ver qué paquete debe tenerbrctl, simplemente ejecute:y tendrás:
Usando el mismo enfoque para todos los comandos en estos scripts, debe (al menos) ejecutar esta
aptitudelínea de comando:Finalmente, puede iniciar el script principal (como usuario normal):
En ejecución
ip addr, debería ver unabr0interfaz con la dirección IP192.168.1.1, como se especifica dentro delcreate-qemu-bridged-tuntap.shscript:Esto es lo
host addressvisto por elguest. Por el contrario, el invitado tendrá como dirección IP192.168.1.95(nuevamente, esto se puede cambiar fácilmente dentro del script principal).Ahora, con el uso
virt-manager, solo tiene que configurar su nic de invitado para usarbr0como interfaz física.Dentro de
guest, solo tienes que dareth0una dirección IP de192.168.1.95y todo debería funcionar bien.fuente
cat /proc/sys/net/ipv4/ip_forwardda0. Habilitándolo y persistiéndome me aclaró el problema, instrucciones en esta publicación .