Nächste: Custom NAT-based network for libvirt, Vorige: Netzwerkbrücke für QEMU, Nach oben: Virtuelle Maschinen [Inhalt][Index]
If the machine hosting your virtual machines is connected wirelessly to the
network, you won’t be able to use a true network bridge as explained in the
preceding section (siehe Netzwerkbrücke für QEMU). In this case, the next
best option is to use a virtual network switch with static routing
and to configure a libvirt-powered virtual machine to use it (via the
virt-manager
GUI for example). This is similar to the default
mode of operation of QEMU/libvirt, except that instead of using NAT (Network Address Translation), it relies on static routes to join the
VM (virtual machine) IP address to the LAN (local area
network). This provides two-way connectivity to and from the virtual
machine, which is needed for exposing services hosted on the virtual
machine.
A virtual network switch consists of a virtual network device called a ‘virtual bridge’, DHCP server (dnsmasq) and firewall rules (iptables). See the libvirt Wiki article on Virtual Networking for more details on the modes of operation, management and implementation of virtual network switches.
The virsh
command, provided by the libvirt
package, makes
it very easy to create a virtual switch. You first need to choose a network
subnet for your virtual switch; if your home LAN is in the
‘192.168.1.0/24’ network, you could opt to use e.g.
‘192.168.2.0/24’. Define an XML file, e.g. /tmp/virbr0.xml,
containing the following:
<network> <name>virbr0</name> <bridge name="virbr0" /> <forward mode="route"/> <ip address="192.168.2.0" netmask="255.255.255.0"> <dhcp> <range start="192.168.2.1" end="192.168.2.254"/> </dhcp> </ip> </network>
Damit legen Sie die Schnittstelle mit Hilfe des virsh
-Befehls an,
welchen Sie als Administratorbenutzer root
ausführen:
virsh net-define /tmp/virbr0.xml virsh net-autostart virbr0 virsh net-start virbr0
Die Schnittstelle ‘virbr0’ müsste jetzt zum Beispiel in der Ausgabe des Befehls ‘ip address’ zu sehen sein. Sie wird automatisch gestartet, sobald Ihre virtuelle Maschine mit libvirt gestartet wird.
Wenn Sie Ihre virtuelle Maschine so eingerichtet haben, dass sie auf der neu geschaffenen Schnittstelle ‘virbr0’ für die virtuelle Bridge läuft, sollte sie von sich aus bereits eine IP wie ‘192.168.2.15’ über DHCP beziehen und darüber von dem Wirts-Serverrechner aus erreichbar sein mit ‘ping 192.168.2.15’ oder entsprechend. Zum Schluss fehlt noch eine letzte Konfiguration, damit die VM auch das externe Netzwerk erreichen kann: Sie müssen im für das Netzwerk zuständigen Router statische Routen hinzufügen.
In diesem Beispiel gehen wir davon aus, dass das LAN-Netzwerk bei Ihnen den Block ‘192.168.1.0/24’ bekommt und die Router-Einstellungswebseite könnte z.B. unter http://192.168.1.1 verfügbar sein. Wenn auf Ihrem Router die Firmware von libreCMC läuft, würden Sie nach Netzwerk → Statische Routen navigieren (auf die Seite https://192.168.1.1/cgi-bin/luci/admin/network/routes) und dort einen neuen Eintrag für ‘Statische IPv4-Routen’ mit den folgenden Informationen anlegen:
lan
192.168.2.0
255.255.255.0
Server-IP
unicast
Dabei schreiben Sie statt Server-IP die IP-Adresse der Wirtsmaschine, auf der die VM laufen. Diese sollte als statische Adresse eingerichtet sein.
Sobald Sie diese neue statische Route speichern und anwenden, sollten Sie sich von und nach außen mit Ihrer VM verbinden können. Um zu überprüfen, ob es funktioniert, führen Sie z.B. den Befehl ‘ping gnu.org’ aus.
Nächste: Custom NAT-based network for libvirt, Vorige: Netzwerkbrücke für QEMU, Nach oben: Virtuelle Maschinen [Inhalt][Index]