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
libvirt
do 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
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!