Ich habe KVM soeben auf meinem Ubuntu-Server gemäß dieser Anleitung installiert: https://help.ubuntu.com/community/KVM/Installation
Bereiten Sie dann ein überbrücktes Netzwerk vor, wie hier gezeigt: https://help.ubuntu.com/community/KVM/Networking
Dann habe ich mit virt-manager eine virtuelle Maschine erstellt. Ich habe es mehrmals versucht, aber der Gast kann keine Verbindung zum Netzwerk herstellen! Irgendeine Hilfe?
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)
brctl zeigen:
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
ip route:
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
* Im Gast * Ich konnte die Informationen aus dem Gast nicht kopieren und einfügen, weil ich sie nicht kopieren kann. Es wurde keine IP von DHCP empfangen. Funktioniert auch nach dem manuellen Einrichten nicht.
server
networking
kvm
network-bridge
THpubs
quelle
quelle
ifconfig
,brctl show
,brctl showmacs br0
, undip route
. Auf dem Gast:ifconfig
,ip route
,ping 8.8.8.8
,ping <your internet router>
, undtraceroute 8.8.8.8
. Ich kann nicht behaupten, dass ich kvm so konfiguriert habe, wie Sie es getan haben, aber ich habe es geschafft, mithilfe deskvm
Befehls eine Brücke zur Arbeit zu schlagen . Ich musste die drahtlose Verbindung trennen, damit mein Host eine Verbindung zum Internet herstellen konnte, und wie in den von Ihnen angegebenen Anweisungen angegeben, müssen Sie eine Verbindung zum Internet über Ethernet herstellen.brctl showmacs br0
obigen Liste zugewiesen haben ?Antworten:
Vorbereitungen
Das Folgende funktionierte bei mir für Ubuntu 12.04. Sie sollten die Firewall Ihres Computers beim Testen deaktivieren, damit sie nicht stört.
Die Datei / etc / default / qemu-kvm sollte wie ursprünglich installiert sein.
Sie müssen die Bridge- Utils qemu-kvm und libvirt-bin installiert haben. Alle Benutzer, die virtuelle Maschinen verwenden, sollten der Gruppe libvirtd hinzugefügt werden.
Es scheint keine Notwendigkeit mehr zu bestehen, CAP_NET_ADMIN-Funktionen hinzuzufügen.
Netzwerkeinrichtung
Der Standardnetzwerkmodus ist der Benutzermodus, auch SLIRP genannt. Es verwendet eine vordefinierte virbr0-Brücke, die NAT-fähig ist und auf den Gastcomputer geroutet wird. Das NAT-Routing verwendet die Kernel-Funktion ip_forwarding und iptables . Im Bridge-Modus wird eine virtuelle Bridge im Gast verwendet, mit der die (nicht nummerierte) Ethernet-Schnittstelle verbunden ist und auf der sowohl der Host als auch der Gast über ihre Netzwerkschnittstellen verfügen.
Die folgenden Abbildungen können die Unterschiede verdeutlichen:
Sie können sehen, wie das Standardbenutzernetzwerk definiert ist mit:
Ich kann den Bridged-Modus mit den folgenden Ansätzen einrichten:
In / etc / network / interfaces (aus dem überbrückenden Teil des Posts, den Sie in Ihrer Frage erwähnt haben):
Neustart; und stellen Sie sicher, dass das drahtlose Netzwerk nicht aktiv ist. Überprüfen Sie die Standard-IP-Route mit
ip route
. Es muss die br0-Schnittstelle verwenden.NB Wenn Ihr Ethernet nicht angeschlossen ist, wenn diese Änderung vorgenommen wird, müssen Sie Ihr Ethernet-Kabel eingesteckt haben und einen Netzbetreiber besorgen. Andernfalls bleibt der Startvorgang zwei Minuten lang hängen und Sie haben keine Netzwerkfähigkeit. Das liegt an der eth0-Schnittstelle von Wenn Sie sich in dieser Datei befinden, muss sie aufgerufen werden, bevor der Startvorgang normal fortgesetzt werden kann.
NB Im Allgemeinen können Sie kein drahtloses Netzwerk anstelle von eth0 verwenden, da sie nicht mehrere MAC-Adressen verwenden können (ich schätze, dass sie eine zweite für die Bridge benötigen).
Alternativ können Sie die Verwendung von Ethernet deaktivieren und sicherstellen, dass es keine IP-Adresse hat und dass keine Standardroute eingerichtet ist
ip route
. Dann:Sie können hier auch eine statische IP-Adresse sowie die Standardroute und die DNS-Adresse angeben. In diesem Beispiel
dhclient
wird dies ausgeführt.Hier ist meine Routentabelle:
Mit kvm
Ich kann dann eine überbrückte KVM-Maschine booten mit:
Der
-netdev tap
Parameter macht sudo zu einer Anforderung. Beim Start der VM führt qemu-kvm die folgenden Befehle aus:Dies erledigt / etc / qemu-ifup
Die vnet0-Schnittstelle der VM wird der br0-Brücke hinzugefügt, da die oben angegebene Standardroute diese Brückenschnittstelle verwendet. Wäre dies nicht der Fall, würde stattdessen die Tap-Schnittstelle zur virbr0-Schnittstelle hinzugefügt. Da dies nicht mit dem Internet verbunden ist, wird NAT in meinen Experimenten verwendet, um den Gast mit dem Host und dem Internet zu verbinden. Sie können das vnet0 auf eine bestimmte Bridge in / etc / default / qemu-kvm richten. Mit dem unten stehenden virt-manager können Sie explizit festlegen, zu welcher Bridge eine Verbindung hergestellt werden soll.
Aufgrund der obigen Befehle von qemu-kvm und des
-netdev tap,id=tunnel,ifname=vnet0
Parameters ist die virtuelle Maschine vm mit dem Tunnel vnet0 und der Tunnel mit der Brücke br0 verbunden.Ich kann jetzt direkt von einem anderen Computer in meinem Netzwerk auf diese Gast-VM zugreifen.
Mein Host
ifconfig
(beachten Sie die vnet0-Schnittstelle, die in meinem Netzwerk angezeigt wird, wenn die VM ausgeführt wird):Meine Bridge-Konfiguration beim Ausführen der VM:
Beachten Sie, dass sowohl die vnet0-Schnittstelle der virtuellen Maschine als auch die eth0-Schnittstelle mit der br0-Brücke verbunden sind.
Und die MACs auf der br0-Schnittstelle:
Beachten Sie, dass die br0-Schnittstelle meinen Host-Computer mit derselben Bridge verbindet, die vom Gast verwendet wird.
Sie können mithilfe von überprüfen, ob Sie überbrückt sind, anstatt NAT an Ihr eigenes Netzwerk weiterzuleiten
traceroute 8.8.8.8
. Wenn der erste Knoten der Router Ihres Netzwerks ist und nicht die IP-Adresse des Gasts, sollte Ihr Netzwerk ordnungsgemäß funktionieren.Siehe diese Dokumentation .
virt-manager
Achten Sie darauf , dass Sie installiert haben
virt-manager
undhal
. Dashal
Paket ist eine empfohlene Abhängigkeit fürvirt-manager
und wird verwendet, um die Netzwerkkonfiguration Ihres Systems beim Erstellen oder Bearbeiten von Gästen zu bestimmen.Während die br0-Brücke wie oben definiert wurde, habe ich mit virt-manager eine virtuelle Maschine wie folgt erstellt:
Von diesem Gast konnte ich direkt in mein restliches Heimnetzwerk und ins Internet gehen. Ich konnte auch von einem anderen Ubuntu-Computer (nicht vom Host, nicht vom Gast) in meinem Heimnetzwerk darauf zugreifen.
Hier ist der sehr lange
kvm
Befehl, den virt-manager ausführt (zum Vergleich mit EApubs oder anderen, die Probleme damit haben):Hier ist der Netzwerkabschnitt der Beschreibung der virtuellen Maschine in /etc/libvirt/qemu/quantal.xml
Laut diesem Link ist es aus Gründen der Leistung und Zuverlässigkeit am besten, das Netzwerkgerätemodell so einzustellen
virtio
, dass Sie dies im virtuellen Viewer tun können, indem Sie die i- Taste drücken, zur NIC-Einstellung wechseln und das "Gerätemodell" einstellen "zuvirtio
. Sie können dies auch zum obigen XML-Code hinzufügen, indem Sie die folgende Zeile einfügen:Zusammenfassend
Das alles dauerte am 12.04 war:
-device e1000,netdev=tunnel -netdev tap,id=tunnel,ifname=vnet0
, oder erstellen Sie mit virt-manager eine virtuelle Maschine, indem Sie unter Schritt 4-> Erweiterte Optionen die Netzwerkbrücke br0 angeben.An Netzwerken, Funktionen, Vorlagen oder Konfigurationen waren keine weiteren Änderungen erforderlich.
Um einen Dienst in Ihrem neuen Gast dem Internet zugänglich zu machen, sollten Sie:
Denken Sie daran, den Firewall-Dienst für Ihren Host-Computer zu testen und erneut zu aktivieren. Möglicherweise ist ein Eintrag erforderlich, um den Datenverkehr an den Gast weiterzuleiten.
Siehe https://help.ubuntu.com/community/KVM/Installation , https://help.ubuntu.com/community/KVM/Networking und https://help.ubuntu.com/12.04/serverguide/libvirt. html .
quelle
ps aux | grep kvm
).brctl show
wie Sie es in Ihrer Frage haben?)? Welche Ubuntu-Version führen Sie aus? Vielleicht ist das der Unterschied. Welche Version von virt-manager? (Meins ist 0.9.1-1ubuntu5.1).Wenn als Verhalten Host angezeigt wird, kann der Gast darauf zugreifen, und Gast kann auf den Host zugreifen, der Gast kann jedoch nicht auf andere Computer im Netzwerk zugreifen oder umgekehrt. Wahrscheinlich blockiert die Firewall des Hosts den Zugriff.
Siehe: https://bugs.launchpad.net/ubuntu/+source/ufw/+bug/573461
Insbesondere dieser Abschnitt: "Der letzte Schritt ist das Deaktivieren von netfilter auf der Bridge:
quelle
Dies sind die beiden Skripte, mit denen ich eine Bridge erstelle
qemu-kvm
.Lassen Sie den Host zunächst zu einem IP-Router werden.
Skript
ip-router.sh
:Erstellen Sie dann die
tun-tap
Schnittstelle undbridge
diese mit Ihrer Standardschnittstelle (normalerweise mit einer Internetverbindung).Skript
create-qemu-bridged-tuntap.sh
:Ich benutze diese Skripte täglich, daher sollten sie auch für Sie gut funktionieren. Sie müssen ein Paket installieren, damit all dies funktioniert. Verwenden von:
Sie können sehen, welches Paket benötigt wird
COMMAND
. Um beispielsweise zu sehen, welches Paket benötigt wird, führen Siebrctl
einfach Folgendes aus:und du wirst haben:
Wenn Sie für alle Befehle in diesen Skripten denselben Ansatz verwenden, sollten Sie (mindestens) diese
aptitude
Befehlszeile ausführen :Schließlich können Sie das Hauptskript (als normaler Benutzer) starten:
Beim Ausführen
ip addr
sollte einebr0
Schnittstelle mit der IP-Adresse angezeigt werden192.168.1.1
, die imcreate-qemu-bridged-tuntap.sh
Skript angegeben ist :Dies ist die
host address
von derguest
. Umgekehrt hat der Gast eine IP-Adresse192.168.1.95
(diese kann wiederum problemlos im Hauptskript geändert werden).Jetzt müssen
virt-manager
Sie nur noch Ihre Gast-Netzwerkkarte einrichten, um siebr0
als physische Schnittstelle zu verwenden.Innerhalb der
guest
muss man nureth0
eine IP-Adresse von192.168.1.95
angeben und alles sollte gut laufen.quelle
cat /proc/sys/net/ipv4/ip_forward
gibt0
. Durch das Aktivieren und Fortbestehen wurde das Problem für mich behoben. Anweisungen in diesem Beitrag .