Einführung
Dieses Tutorial erklärt, wie man einen Teil des Pools an IPv6-Adressen mit Hilfe von Bridges auf die libvirt-Gäste verteilen kann. Auf diese Weise haben alle Gäste ihre eigene öffentliche IPv6.
Voraussetzungen
Zunächst benötigen wir einen dedizierten Server, auf dem libvirt
installiert ist, sowie ein /64
IPv6-Subnetz. Dieses ist bei den meisten dedizierten Servern ohnehin schon vorhanden.
Ich gehe davon aus, dass auf der Maschine Debian läuft, aber es sollte auch auf die meisten anderen Distributionen anwendbar sein.
Was sollte man wissen, bevor wir anfangen?
- Die IPv6-Subnetzadresse (wir werden hier
2001:db8:5678
als Beispiel verwenden)
Schritt 1 - Erforderliche Pakete installieren
Das einzige Paket, das neben der bestehenden libvirt-Installation benötigt wird, ist das bridge-utils
und das ifupdown
Paket:
sudo apt install bridge-utils ifupdown
Schritt 2 - Erstellen der Netzwerkbrücke
Der nächste Schritt besteht darin, die Netzwerkbrücke mithilfe der gerade installierten Pakete zu erstellen:
sudo brctl addbr br0
Schritt 2.1 - Zuweisung eines Subnetzes
Als Nächstes weisen wir der Netzwerkbrücke ein /96
-Subnetz zu, was wahrscheinlich reichlich ist. Der dedizierte Server ist höchstwahrscheinlich nicht in der Lage, so viele VMs zu betreiben, dass hier die Adressen ausgehen.
sudo ip addr add <Ihr /64-Subnetz>:1:0:0:1/96 dev br0
Beispiel:
sudo ip addr add 2001:db8:5678:1:0:0:1/96 dev br0
Schritt 2.2 - Aktivieren
Jetzt können wir es auf up
setzen (oder: "aktivieren"):
ip link set br0 up
Schritt 3 - Schnittstelle hinzufügen
Jetzt werden wir diese Bridge an eine VM anhängen. Um das zu tun, führen wir aus
sudo virsh
und geben Folgendes ein:
edit --domain <Name der VM>
Nun fügen wir den folgenden Eintrag in den devices
Node ein:
<interface type='bridge'>
<source bridge='br0'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x07' slot='0x00' function='0x0'/>
</interface>
Bitte bedenke, dass die Adresse (address
) von der Anzahl der bereits angeschlossenen Geräte abhängt.
Die Schnittstelle sollte jetzt per hot-plug mit der VM verbunden sein, so dass kein Neustart erforderlich ist.
Schritt 4 - Einrichten der VM
Nun müssen wir die neue Netzwerkschnittstelle mit der folgenden statischen Konfiguration einrichten:
auto enp7s0
iface enp7s0 inet6 statisch
address <Ihr /64-Subnetz>:1::<Maschinensuffix>
netmask 96
gateway <Ihr /64-Subnetz>:1::1
Beispiel:
auto enp7s0
iface enp7s0 inet6 statisch
address 2001:db8:5678:1::dead
netmask 96
gateway 2001:db8:5678:1::1
Um dies auf einem Linux-Gast zu tun, hängen wir diese Zeilen einfach an die /etc/network/interfaces
-Datei an. Auf einem Windows-Gast müssen wir sie in der Windows-Einstellungs-App eingeben.
Tipp: unter Ubuntu müssen wir möglicherweise stattdessen netplan verwenden
Schritt 4.1 - Aktivieren der Konfiguration
Der letzte Schritt besteht darin, die Konfiguration zu aktivieren, indem wir den networking
-Service neu starten:
sudo systemctl restart networking
Das Netzwerk sollte nach ein paar Sekunden wieder funktionieren. Die laufende SSH-Sitzung wird dadurch nicht unterbrochen.
Ergebnis
Nun können wir uns mit der angegeben statischen Adresse von außen mit der VM verbinden! Jetzt könnte man noch einen DHCP-Server installieren, um automatisch Adressen zu vergeben.