Jak korzystać z połączonej sieci z Libvirt i KVM

Jak korzystać z połączonej sieci z Libvirt i KVM

Libvirt to bezpłatne i open source, które zapewnia interfejs API do zarządzania różnymi aspektami maszyn wirtualnych. W Linux jest powszechnie stosowany w połączeniu z KVM i QEMU. Między innymi libvirt służy do tworzenia i zarządzania sieciami wirtualnymi. Domyślna sieć utworzona, gdy używana jest libvirt, nazywa się „domyślną” i używa Nat (Tłumaczenie adresów sieciowych) i przekazywanie pakietów w celu połączenia emulowanych systemów ze światem „zewnętrznym” (zarówno system hosta, jak i Internet). W tym samouczku zobaczymy, jak utworzyć inną konfigurację za pomocą Networking pomostowy.

W tym samouczku się nauczysz:

  • Jak stworzyć wirtualny most
  • Jak dodać interfejs fizyczny do mostu
  • Jak sprawić, by konfiguracja mostu była trwała
  • Jak zmodyfikować reguły oprogramowania układowego, aby umożliwić ruch na maszynie wirtualnej
  • Jak utworzyć nową wirtualną sieć i użyć jej w maszynie wirtualnej
Jak korzystać z połączonej sieci z Libvirt i KVM

Zastosowane wymagania i konwencje oprogramowania

Wymagania oprogramowania i konwencje linii poleceń Linux
Kategoria Wymagania, konwencje lub wersja oprogramowania
System Niezależny dystrybucja
Oprogramowanie libvirt, iproute, BRCTL
Inny Przywileje administracyjne do tworzenia i manipulowania interfejsem mostu
Konwencje # - Wymaga, aby podane Linux -commands były wykonywane z uprawnieniami root bezpośrednio jako użytkownik root lub za pomocą sudo Komenda
$-wymaga wykonania Linux-commands jako zwykłego niewidzianego użytkownika

Sieć „domyślna”

Gdy Libvirt jest używany i libvirtd Demon działa, tworzona jest domyślna sieć. Możemy sprawdzić, czy ta sieć istnieje za pomocą Virsh użyteczność, która w większości dystrybucji Linuksa zwykle jest wyposażona w Libvirt-Client pakiet. Aby wywołać narzędzie, aby wyświetlała wszystkie dostępne sieci wirtualne, powinniśmy uwzględnić Lista netto Podkomenda:

$ sudo virsh net-list-wszyscy 


W powyższym przykładzie użyliśmy --Wszystko opcja, aby upewnić się również nieaktywny Sieci są zawarte w wyniku, który zwykle powinien odpowiadać temu wyświetlanemu poniżej:

Nazwa State Autostart Trwałość ----------------------------------------- tak tak 

Aby uzyskać szczegółowe informacje o sieci i ostatecznie je zmodyfikować, możemy wywołać Virsh z edytować Zamiast tego podkomunał, podając nazwę sieci jako argument:

$ sudo virsh net-edit domyślnie 

Tymczasowy plik zawierający XML Definicja sieci zostanie otwarta w naszym ulubionym edytorze tekstu. W takim przypadku wynik jest następujący:

 Domyślnie 168F6909-715C-4333-A34B-F74584D26328          

Jak widzimy, domyślna sieć opiera się na użyciu Virbr0 wirtualny most i użycie Nat oparta na łączności w celu podłączenia maszyn wirtualnych, które są częścią sieci do świata zewnętrznego. Możemy sprawdzić, czy most istnieje za pomocą ip Komenda:

$ ip link show Typ Most 

W naszym przypadku powyższe polecenie zwraca następujące dane wyjściowe:

5: virbr0:  mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default qlen 1000 link/ether 52:54:00:48:3f:0c brd ff:ff:ff:ff:ff:ff 

Aby pokazać interfejsy, które są częścią mostu, możemy użyć ip polecenie i zapytanie tylko o interfejsy, które mają Virbr0 mostek jako mistrz:

$ ip link show master virbr0 

Wynik uruchamiania polecenia to:

6: Virbr0-NIC: MTU 1500 QDISC FQ_CODEL Master Virbr0 Stan Tryb Down Domyślna grupa Domyślna QLen 1000 Link/Eter 52: 54: 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 

Jak widzimy, do mostu jest obecnie tylko jeden interfejs, Virbr0-NIC. Virbr0-NIC Interfejs to wirtualny interfejs Ethernet: jest tworzony i dodawany do mostu automatycznie, a jego celem jest po prostu zapewnienie stabilnego PROCHOWIEC Adres (52: 54: 00: 48: 3f: 0c w tym przypadku) dla mostu.

Inne wirtualne interfejsy zostaną dodane do mostu podczas tworzenia i uruchamiania maszyn wirtualnych. Ze względu na ten samouczek stworzyłem i uruchomiłem wirtualną maszynę Debian (Buster); Jeśli ponownie zorganizujemy polecenie, którego użyliśmy powyżej do wyświetlania interfejsów niewolników mostu, możemy zobaczyć, jak dodano nowy, VNET0:

$ ip link show master virBr0 6: virbr0-NIC: MTU 1500 QDISC FQ_CODEL Master Virbr0 State Tryb Down Domyślny grupa QLen 1000 Link/eter 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 7: VNET0: MTU 1500 QDISC FQ_CODEL Master Virbr0 Stan nieznany Tryb Domyślna grupa Domyślna QLen 1000 Link/Ether Fe: 54: E2: Fe: 7b 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: 

Do żadnych fizycznych interfejsów nigdy nie należy dodawać do Virbr0 most, ponieważ używa Nat Aby zapewnić łączność.

Używaj sieci mostowanych do maszyn wirtualnych

Domyślna sieć zapewnia bardzo prosty sposób na osiągnięcie łączności podczas tworzenia maszyn wirtualnych: wszystko jest „gotowe” i działa poza pudełkiem. Czasami jednak chcemy osiągnąć Pełna mrzora połączenie, w którym urządzenia gości są podłączone do hosta Lan, bez używania Nat, Powinniśmy stworzyć nowy most i udostępnić jeden z fizycznych interfejsów Ethernet hosta. Zobaczmy, jak to zrobić krok po kroku.

Tworzenie nowego mostu

Aby utworzyć nowy most, nadal możemy użyć ip Komenda. Powiedzmy, że chcemy wymienić ten most Br0; Uruchomilibyśmy następujące polecenie:

$ sudo ip link Dodaj Br0 typu most 

Aby sprawdzić, czy most jest tworzony, robimy jak poprzednio:

$ sudo ip link show Typ Most 5: Virbr0: MTU 1500 QDISC Noqueue Stan Tryb Down Domyślna grupa Domyślna QLen 1000 Link/eter 52: 54: 00: 48: 3F: 0c Brd FF: FF: FF: FF: FF: FF: FF: FF 8 : br0:  mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 link/ether 26:d2:80:7c:55:dd brd ff:ff:ff:ff:ff:ff 

Zgodnie z oczekiwaniami nowy most, Br0 został utworzony i jest teraz uwzględniony w wyjściu powyższego polecenia. Teraz, gdy powstaje nowy most, możemy kontynuować i dodać do niego interfejs fizyczny.

Dodanie fizycznego interfejsu Ethernet do mostu

W tym kroku dodamy interfejs fizyczny hosta do mostu. Zauważ, że w tym przypadku nie możesz użyć swojego głównego interfejsu Ethernet, ponieważ gdy tylko zostanie on dodany do mostu, stracisz łączność, ponieważ straci on swój adres IP. W takim przypadku użyjemy dodatkowego interfejsu, ENP0S29U1U1: Jest to interfejs dostarczany przez Ethernet do adaptera USB dołączonego do mojego komputera.

Najpierw upewniamy się, że stan interfejsu jest w górę:

$ sudo ip link ENP0S29U1U1 UP 

Aby dodać interfejs do mostu, polecenie do uruchomienia jest następujące:

$ sudo ip link zestaw ENP0S29U1U1 Master Br0 

Aby zweryfikować interfejs został dodany do mostu:

$ sudo ip link show Master BR0 3: ENP0S29U1U1: MTU 1500 QDISC FQ_CODEL Master BR0 Tryb stanu domyślny Grupa Domyślnie QLen 1000 Link/eter 18: A6: F7: 0E: 06: 64 BRD FF: FF: FF: FF: FF: FF: FF: FF: ff 

Przypisanie statycznego adresu IP do mostu

W tym momencie możemy przypisać statyczny adres IP do mostu. Powiedzmy, że chcemy użyć 192.168.0.90/24; Bieglibyśmy:

$ sudo adres IP Dodaj dev Br0 192.168.0.90/24 

Do bardzo, że adres został dodany do interfejsu, uruchamiamy:

$ ip addr show Br0 9: BR0: MTU 1500 QDISC Noqueue State Up Group Domyślnie QLen 1000 Link/Eter 26: D2: 80: 7C: 55: DD BRD FF: FF: FF: FF: FF: FF: FF INET 192.168.0.90/24 Zakres Global BR0 Proste_lft Forever Preferred_lft Forever […] 


Utrzymanie konfiguracji trwałych

Nasza konfiguracja mostu jest jednak gotowa, jednak nie przetrwa ponownego uruchomienia maszyny. Aby nasza konfiguracja była trwała, musimy edytować niektóre pliki konfiguracyjne, w zależności od używanego rozkładu.

Debian i pochodne

W rodzinie dystrybucji Debian musimy być pewni, że Bridge-Utils Pakiet jest zainstalowany:

$ sudo apt-get instaluj mostki mostowe 

Po zainstalowaniu pakietu powinniśmy zmodyfikować zawartość /etc/sieci/interfejsy plik:

# Ten plik opisuje interfejsy sieciowe dostępne w systemie # i jak je aktywować. Aby uzyskać więcej informacji, zobacz Interfejsy (5). # Interfejs sieciowy LOOPBACK Auto lo iface lo inet Loopback # określa, że ​​interfejs fizyczny, który powinien być podłączony do mostu #, powinien być skonfigurowany ręcznie, aby uniknąć konfliktów z NetworkManager IFACE ENP0S29U1U1 INET Manual # Ustawienia BR0 Most Bridge_ports ENP0S29U1U1 Adres 192.168.0.90 Broadcast 192.168.0.255 Mash Network 255.255.255.0 bramy 192.168.0.1 

Rodzina dystrybucji Red Hat

W rodzinie dystrybucji Red Hat, w tym Fedora, musimy manipulować scenariuszami sieciowymi wewnątrz /etc/sysconfig/scripts informator. Jeśli chcemy mostu nie Do zarządzania przez NetworkManager, lub używamy starszej dystrybucji ze starszą wersją NetworkManager, która nie jest w stanie zarządzać przełącznikami sieciowymi, musimy zainstalować skrypty sieciowe pakiet:

$ sudo dnf instaluj skrytyki sieciowe 

Po zainstalowaniu pakietu musimy utworzyć plik, który skonfiguruje Br0 most: /etc/sysconfig/network-scripts/IFCFG-BR0. W pliku umieszczamy następującą zawartość:

Device = Br0 Type = Bridge Bootproto = Brak iPaddr = 192.168.0.90 bramy = 192.168.0.1 maska ​​sieci = 255.255.255.0 onboot = tak opóźnienie = 0 nm_controlled = 0 

Niż, modyfikujemy lub tworzymy plik używany do konfiguracji interfejsu fizycznego, w tym przypadku połączymy się z mostem /etc/sysconfig/network-scripts/IFCFG-ENP0S29U1U1:

Type = ethernet bootproto = Brak nazwa = ENP0S29U1U1 DEVICE = ENP0S29U1U1 ONBOOT = Tak Bridge = Br0 opóźnienie = 0 nm_controlled = 0 

Przy przygotowaniu naszych konfiguracji możemy rozpocząć sieć serwis i włącz go w rozruchu:

$ sudo systemctl enable --Now Network 

Wyłączanie netfiltera dla mostu

Aby umożliwić przesłanie całego ruchu do mostu, a zatem do połączonych z nim maszyn wirtualnych, musimy wyłączyć Netfilter. Jest to na przykład konieczne, aby rozdzielczość DNS działała w maszynach gościnnych przymocowanych do mostu. Aby to zrobić, możemy utworzyć plik z .conf przedłużenie wewnątrz /etc/sysctl.D katalog, nazwijmy to 99-netfilter-most.conf. Wewnątrz piszemy następującą treść:

internet.most.Bridge-NF-Call-IP6Tables = 0 netto.most.Bridge-NF-call-iptables = 0 netto.most.Bridge-NF-Call-Arptables = 0 

Aby załadować ustawienia zapisane w pliku, pięść upewniamy się, że BR_NETFILTER Moduł jest ładowany:

$ sudo modprobe br_netfilter 

Aby automatycznie załadować moduł podczas rozruchu, utwórzmy /etc/moduły.D/Br_netfilter.conf Plik: Powinien zawierać tylko nazwę samego modułu:

BR_NETFILTER 


Po załadowaniu modułu, aby załadować ustawienia przechowywane w 99-netfilter-most.conf Plik, możemy uruchomić:

$ sudo sysctl -p /etc /sysctl.D/99-Netfilter-most.conf 

Tworzenie nowej sieci wirtualnej

W tym momencie powinniśmy zdefiniować nową „sieć”, która będzie używana przez nasze maszyny wirtualne. Otwieramy plik z naszym ulubionym edytorem i wklejamy następującą zawartość w środku, niż zapisujemy go jako Mostka.XML:

 Mostka    

Gdy plik będzie gotowy, przekazujemy jego pozycję jako argument do definicja netto Virsh Podkomenda:

$ sudo virsh net definicja mostkowana.XML 

Aby aktywować nową sieć i zrobić, aby była automatyczna, powinniśmy uruchomić:

$ sudo virsh net-start-start mostged-network $ sudo virsh net-autostart mostged-sieci 

Możemy sprawdzić, czy sieć została aktywowana, uruchamiając Lista sieci Virsh
Polecenie, znowu:

$ sudo virsh net-list Nazwa lista stanu Autostart --------------------------------------------- ------------ Bridged sieci Active Tak Tak, domyślnie aktywny tak tak, tak 

Możemy teraz wybrać sieć według nazwy podczas korzystania z --sieć opcja:

$ sudo vir-install \ --vcpus = 1 \ --Memory = 1024 \--cdrom = Debian-10.8.0-AMD64-DVD-1.ISO \--Disk Rozmiar = 7 \ --os-variant = debian10 \ --Network Network = Bridged-sieci 

Jeśli używasz Virt-manager Interfejs graficzny będziemy mogli wybrać sieć podczas tworzenia nowej maszyny wirtualnej:

Wnioski

W tym samouczku widzieliśmy, jak utworzyć wirtualny most w systemie Linux i podłączyć z nim fizyczny interfejs Ethernet, aby utworzyć nową „sieć”, która ma być używana w wirtualnych maszynach zarządzanych z libvirt. Podczas korzystania z tej ostatniej jest dla wygody domyślna sieć: Zapewnia łączność przy użyciu NAT. Gdy używając mostowanej sieci jako tej, którą skonfigurujemy w tym samouczku, poprawimy wydajność i sprawimy, że maszyny wirtualne są częścią tej samej podsieci hosta.

Powiązane samouczki Linux:

  • Wprowadzenie do automatyzacji, narzędzi i technik Linuksa
  • Mastering Bash Script Loops
  • Rzeczy do zainstalowania na Ubuntu 20.04
  • Jak pracować z WooCommerce Rest API z Pythonem
  • Jak skonfigurować serwer OpenVPN na Ubuntu 20.04
  • Linux Pliki konfiguracyjne: Top 30 Najważniejsze
  • Mint 20: Lepsze niż Ubuntu i Microsoft Windows?
  • Ubuntu 20.04 sztuczki i rzeczy, których możesz nie wiedzieć
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
  • Jak uruchomić Raspberry Pi OS w wirtualnej maszynie z…