Get Rewarded! We will reward you with up to €50 credit on your account for every tutorial that you write and we publish!

Verteilen von IPv6-Adressen über libvirt-Gäste

profile picture
Author
Tuxifan
Published
2023-03-13
Time to read
4 minutes reading time

About the author- Ein Hobby-C++-Programmierer, der es liebt, mit Pointern herumzuspielen

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.

License: MIT
Want to contribute?

Get Rewarded: Get up to €50 in credit! Be a part of the community and contribute. Do it for the money. Do it for the bragging rights. And do it to teach others!

Report Issue

Discover our

Dedicated Servers

Configure your dream server. Top performance with an excellent connection at an unbeatable price!

Want to contribute?

Get Rewarded: Get up to €50 credit on your account for every tutorial you write and we publish!

Find out more