Jak korzystać z połączonej sieci z Libvirt i KVM
- 4901
- 1215
- Tomasz Szatkowski
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
Zastosowane wymagania i konwencje oprogramowania
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…