Jak Skonfigurować Mostek Sieciowy dla Maszyn Wirtualnych w POP!_OS / UBUNTU z QEMU

Wprowadzenie

Wirtualizacja jest kluczowym elementem nowoczesnej infrastruktury IT, pozwalając na uruchamianie wielu systemów operacyjnych na jednej fizycznej maszynie. W systemach operacyjnych takich jak POP!_OS, narzędzia takie jak QEMU i libvirt umożliwiają proste i efektywne zarządzanie maszynami wirtualnymi. Jednak aby te maszyny mogły łączyć się z siecią domową w sposób transparentny, konieczne jest skonfigurowanie mostka sieciowego. W tym artykule przedstawimy krok po kroku, jak skonfigurować mostek sieciowy na interfejsie eth0, aby Twoje maszyny wirtualne mogły korzystać z sieci domowej.

Spis Treści

Wymagania wstępne

Przed rozpoczęciem upewnij się, że posiadasz zainstalowane następujące pakiety:

  • bridge-utils: Narzędzie do zarządzania mostkami sieciowymi.
  • libvirt: Platforma do zarządzania wirtualizacją.
  • qemu-kvm: Główne narzędzie do tworzenia i zarządzania maszynami wirtualnymi.

Zainstalujesz je za pomocą poleceń:

sudo apt update
sudo apt install bridge-utils libvirt-bin qemu-kvm

Tworzenie mostka sieciowego

Aby maszyny wirtualne mogły bezpośrednio korzystać z sieci fizycznej, musimy utworzyć mostek sieciowy br0, który połączy interfejs eth0 z maszynami wirtualnymi.

Konfiguracja mostka za pomocą Netplan

Edytuj lub utwórz plik konfiguracyjny Netplan, np. /etc/netplan/01-netcfg.yaml, i wprowadź następującą konfigurację:

network:
  version: 2
  ethernets:
    eth0:
      dhcp4: no
  bridges:
    br0:
      interfaces: [eth0]
      dhcp4: yes

Powyższa konfiguracja wyłącza DHCP dla eth0 i ustawia mostek br0, który uzyska adres IP z DHCP.

Zastosuj zmiany za pomocą komendy:

sudo netplan apply

Konfiguracja libvirt do użycia mostka

Następnie musimy skonfigurować libvirt tak, aby używał mostka br0 dla maszyn wirtualnych.

Definiowanie nowej sieci w libvirt

Utwórz plik XML o nazwie br0.xml z następującą zawartością:

<network>
  <name>br0</name>
  <forward mode="bridge"/>
  <bridge name="br0"/>
</network>

Zaimportuj i aktywuj sieć za pomocą poniższych komend:

sudo virsh net-define br0.xml
sudo virsh net-start br0
sudo virsh net-autostart br0

Przypisanie maszyny wirtualnej do mostka

Teraz musimy przypisać maszynę wirtualną do nowo utworzonego mostka br0.

Przypisanie przez virt-manager

  1. Otwórz virt-manager.
  2. Wybierz maszynę wirtualną i przejdź do jej ustawień.
  3. W zakładce "NIC" (Karta sieciowa), wybierz opcję "Mostek sieciowy" i wybierz br0 jako mostek.

Przypisanie przez virsh

Jeśli wolisz używać terminala, możesz edytować konfigurację maszyny wirtualnej za pomocą virsh:

sudo virsh edit vm_name

Zamień sekcję <interface> na:

<interface type='bridge'>
  <mac address='XX:XX:XX:XX:XX:XX'/>
  <source bridge='br0'/>
  <model type='virtio'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>

Dodatkowe reguły iptables (opcjonalne)

Mostkowanie sieciowe działa na poziomie warstwy 2, co oznacza, że w podstawowej konfiguracji nie są wymagane dodatkowe reguły iptables. Jednakże, jeśli masz bardziej zaawansowane potrzeby, takie jak dodatkowe zabezpieczenia lub routing, możesz dodać reguły iptables.

Zezwolenie na ruch przez br0

Aby zezwolić na ruch przez mostek br0, możesz dodać następujące reguły:

# Zezwalaj na cały ruch przychodzący na interfejsie br0
sudo iptables -A INPUT -i br0 -j ACCEPT

# Zezwalaj na cały ruch wychodzący z interfejsu br0
sudo iptables -A OUTPUT -o br0 -j ACCEPT

# Zezwalaj na cały ruch do i z maszyn wirtualnych przez interfejs br0
sudo iptables -A FORWARD -i br0 -j ACCEPT
sudo iptables -A FORWARD -o br0 -j ACCEPT

Zachowanie reguł iptables po restarcie

Aby zachować reguły iptables po restarcie, zainstaluj iptables-persistent:

sudo apt install iptables-persistent
sudo netfilter-persistent save

Podsumowanie

Konfiguracja mostka sieciowego w POP!_OS pozwala na transparentne połączenie maszyn wirtualnych z Twoją siecią domową, umożliwiając im korzystanie z tych samych zasobów sieciowych co host. Dzięki powyższym krokom, maszyny wirtualne uzyskają bezpośredni dostęp do sieci, co może być niezbędne w wielu scenariuszach, takich jak testowanie aplikacji czy zarządzanie usługami sieciowymi.

Jeśli napotkasz jakiekolwiek problemy lub masz pytania dotyczące konfiguracji, zostaw komentarz poniżej. Chętnie pomożemy!

We use cookies
Strona internetowa zbiera informację na potrzeby analizy ruchu odwiedzających (Google Analytics). Czy zgadzasz się na przetwarzanie danych?