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
- Tworzenie mostka sieciowego
- Konfiguracja
libvirtdo użycia mostka - Przypisanie maszyny wirtualnej do mostka
- Dodatkowe reguły
iptables(opcjonalne) - Podsumowanie
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
- Otwórz
virt-manager. - Wybierz maszynę wirtualną i przejdź do jej ustawień.
- W zakładce "NIC" (Karta sieciowa), wybierz opcję "Mostek sieciowy" i wybierz
br0jako 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!