So verwenden Sie überbrückte Netzwerke mit Libvirt und KVM

So verwenden Sie überbrückte Netzwerke mit Libvirt und KVM

Libvirt ist eine kostenlose und Open -Source -Software, die API zur Verwaltung verschiedener Aspekte virtueller Maschinen bietet. Unter Linux wird es üblicherweise in Verbindung mit KVM und QEMU verwendet. Libvirt wird unter anderem verwendet, um virtuelle Netzwerke zu erstellen und zu verwalten. Das Standardnetzwerk, das bei Verwendung von libvirt erstellt wurde, wird als „Standard“ bezeichnet und verwendet Nat (Übersetzung von Netzwerkadressen) und Paketweiterung, um die emulierten Systeme mit der „externen“ Welt (sowohl das Host -System als auch das Internet) zu verbinden. In diesem Tutorial sehen wir, wie Sie ein anderes Setup verwenden Brückennetzwerk.

In diesem Tutorial lernen Sie:

  • So erstellen Sie eine virtuelle Brücke
  • So fügen Sie einer Brücke eine physische Schnittstelle hinzu
  • So machen Sie die Brückenkonfiguration anhaltend
  • So ändern Sie Firmware -Regeln, um den Datenverkehr auf die virtuelle Maschine zu ermöglichen
  • So erstellen Sie ein neues virtuelles Netzwerk und verwenden Sie es in einer virtuellen Maschine
So verwenden Sie überbrückte Netzwerke mit Libvirt und KVM

Softwareanforderungen und Konventionen verwendet

Softwareanforderungen und Linux -Befehlszeilenkonventionen
Kategorie Anforderungen, Konventionen oder Softwareversion verwendet
System Verteilung unabhängig
Software libvirt, iproute, brctl
Andere Verwaltungsberechtigte zum Erstellen und Manipulieren der Brückenschnittstelle
Konventionen # - Erfordert, dass gegebene Linux -Commands mit Root -Berechtigungen entweder direkt als Stammbenutzer oder mithilfe von verwendet werden können sudo Befehl
US

Das "Standard" -Netzwerk

Wenn libvirt wird verwendet und die libvirtd Dämon wird ausgeführt, ein Standardnetzwerk wird erstellt. Wir können überprüfen, ob dieses Netzwerk mit der Verwendung existiert virsh Dienstprogramm, das bei den meisten Linux -Verteilung normalerweise mit dem kommt libvirt-client Paket. Um das Dienstprogramm so aufzurufen, dass alle verfügbaren virtuellen Netzwerke angezeigt werden, sollten wir das aufnehmen Netzliste Unterbefehl:

$ sudo virsh netlist-alle 


Im obigen Beispiel haben wir die verwendet --alle Option, um auch die inaktiv Netzwerke sind im Ergebnis enthalten, was normalerweise der unten angezeigten entsprechen sollte:

Name Status Autostart Persistent ---------------------------------------- Standardaktiv Ja ja 

Um detaillierte Informationen über das Netzwerk zu erhalten und es schließlich zu ändern, können wir Virsh mit dem aufrufen bearbeiten Subcomand stattdessen den Netzwerknamen als Argument angeben:

$ sudo virsh net-edit ausfall 

Eine temporäre Datei mit der enthält die xml Die Netzwerkdefinition wird in unserem bevorzugten Texteditor geöffnet. In diesem Fall lautet das Ergebnis Folgendes:

 Standard 168F6909-715C-4333-A34B-F74584D26328          

Wie wir sehen können, basiert das Standardnetzwerk auf der Verwendung der Virbr0 virtuelle Brücke und verwendet und verwendet Nat basierte Konnektivität, um die virtuellen Maschinen zu verbinden, die Teil des Netzwerks mit der Außenwelt sind. Wir können überprüfen, ob die Brücke mit dem existiert IP Befehl:

$ ip link show Type Bridge 

In unserem Fall gibt der obige Befehl die folgende Ausgabe zurück:

5: virbr0: MTU 1500 Qdisc Noqueue State Down -Modus Standardgruppe Standard Qlen 1000 Link/Ether 52: 54: 00: 48: 3f: 0c Brd FF: FF: FF: FF: FF: FF 

Um die Schnittstellen zu zeigen, die Teil der Brücke sind, können wir die verwenden IP Befehl und Abfrage nur für Schnittstellen, die die haben Virbr0 Brücke als Meister:

$ ip link show Master virbr0 

Das Ergebnis des Ausführens des Befehls ist:

6: virbr0-nic: MTU 1500 QDISC FQ_CODEL MASTER VIRBR0 STATION DOMMOMODE DER BEGROUSTE GRUPPENTETZUNG QLEN 1000 LINK/ETHER 52: 54: 00: 48: 3F: 0C BRD FF: FF: FF: FF: FF: FF 

Wie wir sehen können, gibt es derzeit nur eine Schnittstelle an der Brücke, virbr0-nic. Der virbr0-nic Die Schnittstelle ist eine virtuelle Ethernet -Schnittstelle: Sie wird automatisch erstellt und zur Brücke hinzugefügt, und ihr Zweck besteht nur darin, einen Stall zu liefern MAC Adresse (52: 54: 00: 48: 3F: 0c in diesem Fall) für die Brücke.

Andere virtuelle Schnittstellen werden der Brücke hinzugefügt, wenn wir virtuelle Maschinen erstellen und starten. Für dieses Tutorial habe ich eine virtuelle Debian (Buster) -Maschine erstellt und eingeführt. Wenn wir den oben verwendeten Befehl neu starten, um die Sklavenschnittstellen der Brücken anzuzeigen, können wir sehen, dass ein neues hinzugefügt wurde, wurde hinzugefügt, Vnet0:

$ ip link show master virbr0 6: virbr0-nic: MTU 1500 QDISC FQ_CODEL MASTER VIRBR0 STATION DOMMODE DOMMOUSTER STATELGESTELLUNG QLEN 1000 LINK/ETHER 52: 54: 00: 48: 3F: 0C BRD FF: FF: FF: FF: FF: FF: ff: ff: ff: ff: ff: ff: ff: ff: ff: ff: ff: ff: ff: ff: ff: ff: ff: ff: ff: ff: ff: ff: ff: ff: ff: ff: ff: ff: ff: ff : ff 7: vnet0: MTU 1500 qdisc fq_codel master virbr0 Zustand Unbekannter Modus Standardgruppe Standard Qlen 1000 Link/Ether Fe: 54: 00: E2: Fe: 7b Brd FF: FF: FF: FF: FF: FF 

Keine physischen Schnittstellen sollten jemals zu dem hinzugefügt werden Virbr0 Brücke, da es verwendet Nat Konnektivität bereitstellen.

Verwenden Sie überbrückte Netzwerke für virtuelle Maschinen

Das Standardnetzwerk bietet eine sehr einfache Möglichkeit, beim Erstellen von virtuellen Maschinen Konnektivität zu erreichen: Alles ist „bereit“ und funktioniert nicht in der Box. Manchmal wollen wir jedoch eine erreichen Vollständiges Bridgining Verbindung, wo die Gastgeräte mit dem Host verbunden sind Lan, ohne zu benutzen Nat, Wir sollten eine neue Brücke erstellen und eine der Host Physical Ethernet -Schnittstellen teilen. Lassen Sie uns sehen, wie dies Schritt für Schritt geht.

Erstellen einer neuen Brücke

Um eine neue Brücke zu erstellen, können wir das immer noch verwenden IP Befehl. Nehmen wir an, wir wollen diese Brücke nennen BR0; Wir würden den folgenden Befehl ausführen:

$ sudo IP -Link Fügen Sie BR0 -Typ Bridge hinzu 

Um zu überprüfen, ob die Brücke erstellt wird, machen wir wie zuvor:

$ sudo ip link show Type Bridge 5: virbr0: MTU 1500 Qdisc Noqueue State Down -Modus Standardgruppe Standard -Standard -Qlen 1000 Link/Ether 52: 54: 00: 48: 3f: 0c Brd ff: ff: ff: ff: ff: ff 8 : BR0: MTU 1500 Qdisc Noop Status Down -Modus Standardgruppe Standard Qlen 1000 Link/Ether 26: D2: 80: 7C: 55: DD BRD FF: FF: FF: FF: FF: FF: FF 

Wie erwartet die neue Brücke, BR0 wurde erstellt und ist jetzt in der Ausgabe des obigen Befehls enthalten. Nachdem die neue Brücke erstellt wird, können wir fortfahren und die physische Schnittstelle dazu hinzufügen.

Hinzufügen einer physischen Ethernet -Schnittstelle zur Brücke

In diesem Schritt werden wir der Brücke eine physische Oberfläche des Hosts hinzufügen. Beachten Sie, dass Sie Ihre Haupt -Ethernet -Schnittstelle in diesem Fall nicht verwenden können, da Sie der Brücke, sobald sie hinzugefügt wird. In diesem Fall werden wir eine zusätzliche Schnittstelle verwenden, ENP0S29U1U1: Dies ist eine Schnittstelle, die von einem Ethernet zu USB -Adapter bereitgestellt wird, das an meiner Maschine angeschlossen ist.

Zuerst stellen wir sicher, dass der Schnittstellenzustand abgelaufen ist:

$ sudo ip link set ENP0S29U1U1 UP 

Um die Schnittstelle zur Brücke hinzuzufügen, ist der zu ausgeführte Befehl Folgendes:

$ sudo ip link set ENP0S29U1U1 Master BR0 

Um zu überprüfen, dass die Schnittstelle stattdessen zur Brücke hinzugefügt wurde:

$ sudo ip link show master br0 3: enp0s29u1u1:  mtu 1500 qdisc fq_codel master br0 state UP mode DEFAULT group default qlen 1000 link/ether 18:a6:f7:0e:06:64 brd ff:ff:ff:ff:ff: ff 

Zuweisen einer statischen IP -Adresse der Brücke

Zu diesem Zeitpunkt können wir der Brücke eine statische IP -Adresse zuweisen. Nehmen wir an, wir wollen verwenden 192.168.0.90/24; Wir würden rennen:

$ sudo ip address add Dev BR0 192.168.0.90/24 

Zu sehr, dass die Adresse der Schnittstelle hinzugefügt wurde, führen wir aus:

$ IP ADDR SHOW BR0 9: BR0: MTU 1500 QDISC Noqueue State UP Group Default Qlen 1000 Link/Ether 26: D2: 80: 7C: 55: DD BRD FF: FF: FF: FF: FF: FF INET 192.168.0.90/24 SCOPE Global BR0 valid_lft für immer bevorzugt_lft für immer […] 


Die Konfiguration beständig machen

Unsere Brückenkonfiguration ist so wie sie ist, sie überlebt jedoch keinen Neustart von Maschinen. Um unsere Konfiguration anhaltend zu machen.

Debian und Derivate

In der Debian -Familie der Verteilungen müssen wir sicher sein, dass die Bridge-Utils Paket ist installiert:

$ sudo apt-get install Bridge-Utils 

Sobald das Paket installiert ist, sollten wir den Inhalt des /etc/netzwerk/schnittstellen Datei:

# Diese Datei beschreibt die Netzwerkschnittstellen, die auf Ihrem System # verfügbar sind und wie sie aktiviert werden. Weitere Informationen finden Sie unter Schnittstellen (5). # Die Loopback -Netzwerkschnittstelle auto lo iface lo inet Loopback # Geben Sie an, dass die physische Schnittstelle, die mit der Brücke angeschlossen werden sollte Bridge_Ports ENP0S29U1U1 Adresse 192.168.0.90 Sendung 192.168.0.255 NETMASK 255.255.255.0 Gateway 192.168.0.1 

Red Hat -Familie der Verteilungen

In der Red Hat of Distributions, einschließlich Fedora, müssen wir Netzwerkskripte im Inneren manipulieren /etc/sysconfig/network-scripts Verzeichnis. Wenn wir die Brücke wollen nicht Um von NetworkManager verwaltet zu werden, oder wir verwenden eine ältere Verteilung mit einer älteren Version von NetworkManager, die nicht in der Lage ist, Netzwerkschalter zu verwalten, müssen wir die installieren Netzwerkkripte Paket:

$ sudo dnf installieren Netzwerk-Skripte installieren 

Sobald das Paket installiert ist, müssen wir die Datei erstellen, mit der die konfiguriert werden kann BR0 Brücke: /etc/sysconfig/network-scripts/ifcfg-br0. In der Datei platzieren wir den folgenden Inhalt:

Device = BR0 Typ = Bridge BootProto = Keine iPaddr = 192.168.0.90 Gateway = 192.168.0.1 NetMask = 255.255.255.0 Onboot = Ja Delay = 0 nm_controlled = 0 

Wir ändern oder erstellen die Datei, die zur Konfiguration der physischen Schnittstelle verwendet wird, in diesem Fall eine Verbindung zur Brücke heran /etc/sysconfig/network-scripts/ifcfg-enp0S29U1U1:

Type = ethernet bootProto = non name = enp0s29u1u1 develation = enp0S29U1U1 Onboot = Ja Bridge = Br0 Delay = 0 nm_controlled = 0 

Mit unseren Konfigurationen können wir das starten Netzwerk Service, und aktivieren Sie es am Boot:

$ sudo systemCTL Enable -Now Network 

Netfilter für die Brücke deaktivieren

Damit den gesamten Verkehr an die Brücke weitergeleitet werden kann, und damit an die damit verbundenen virtuellen Maschinen, müssen wir NetFilter deaktivieren. Dies ist beispielsweise erforderlich, damit die DNS -Lösung in den an der Brücke befestigten Gastmaschinen arbeitet. Dazu können wir eine Datei mit der erstellen .Conf Erweiterung im Inneren /etc/sysctl.D Verzeichnis, nennen wir es 99-Netfilter-Bridge.Conf. Im Inneren schreiben wir den folgenden Inhalt:

Netz.Brücke.Bridge-NF-Call-IP6Tables = 0 Netz.Brücke.Bridge-NF-Call-exptables = 0 Netz.Brücke.Bridge-NF-Call-artables = 0 

Um die in der Datei geschriebenen Einstellungen zu laden, stellen wir sicher, dass die BR_NETFILTER Das Modul ist geladen:

$ sudo modprobe br_netfilter 

Um das Modul automatisch beim Boot zu laden, erstellen wir das /etc/modules laden.D/Br_netfilter.Conf Datei: Es sollte nur den Namen des Moduls selbst enthalten:

BR_NETFILTER 


Sobald das Modul geladen ist, laden wir die Einstellungen, die wir in der gespeichert haben 99-Netfilter-Bridge.Conf Datei, wir können ausführen:

$ sudo sysctl -p /etc /sysctl.D/99-Netfilter-Brücke.Conf 

Erstellen eines neuen virtuellen Netzwerks

Zu diesem Zeitpunkt sollten wir ein neues „Netzwerk“ definieren, das von unseren virtuellen Maschinen verwendet werden soll. Wir öffnen eine Datei mit unserem bevorzugten Editor und fügen den folgenden Inhalt darin ein, als sie zu speichern als Brückennetzwerk.xml:

 Brückennetzwerk    

Sobald die Datei fertig ist, übergeben wir ihre Position als Argument an die Net-Define virsh Unterbefehl:

$ sudo virsh net-definierte Brückennetzwerk.xml 

Um das neue Netzwerk zu aktivieren und so zu machen, dass es automatisch gestartet wird, sollten wir ausführen:

$ sudo virsh net-start überbrückungsnetzig $ sudo virsh net-autostart geblautes Netzwerk 

Wir können überprüfen, ob das Netzwerk aktiviert wurde, indem Sie das ausführen Virsh Net-Liste
Befehl wieder:

$ sudo virsh netlistname state autostart persistent ------------------------------------ ------------ Bridged-Network Active Active Ja Ja Standard aktiv Ja Ja Ja 

Wir können jetzt das Netzwerk per Namen auswählen, wenn wir die verwenden --Netzwerk Möglichkeit:

$ sudo virtin-install \ --vcpus = 1 \ ---memory = 1024 \--cdrom = debian-10.8.0-AMD64-DVD-1.ISO \--disk size = 7 \ --os-variant = debian10 \-Network Network = Bridged-Network 

Wenn Sie die verwenden Virt-Manager Grafische Schnittstelle können wir beim Erstellen der neuen virtuellen Maschine das Netzwerk auswählen:

Schlussfolgerungen

In diesem Tutorial haben wir gesehen. Bei der Verwendung des letzteren wird ein Standardnetzwerk zur Bequemlichkeit bereitgestellt: Es bietet Konnektivität mit NAT. Wenn eine in diesem Tutorial konfigurierende Verwendung eines überbrückten Netzwerks als das, das wir konfigurieren, die Leistung verbessern und die virtuellen Maschinen zum gleichen Subnetz des Hosts machen.

Verwandte Linux -Tutorials:

  • Eine Einführung in Linux -Automatisierung, Tools und Techniken
  • Mastering -Bash -Skriptschleifen beherrschen
  • Dinge zu installieren auf Ubuntu 20.04
  • Wie man mit der Woocommerce -REST -API mit Python arbeitet
  • So richten Sie einen OpenVPN -Server auf Ubuntu 20 ein.04
  • Linux -Konfigurationsdateien: Top 30 am wichtigsten
  • Mint 20: Besser als Ubuntu und Microsoft Windows?
  • Ubuntu 20.04 Tricks und Dinge, die Sie vielleicht nicht wissen
  • Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
  • So führen Sie das Raspberry Pi OS in einer virtuellen Maschine mit…