Cara menggunakan jaringan bridged dengan libvirt dan kvm

Cara menggunakan jaringan bridged dengan libvirt dan kvm

Libvirt adalah perangkat lunak sumber terbuka dan terbuka yang menyediakan API untuk mengelola berbagai aspek mesin virtual. Di Linux biasanya digunakan bersama dengan KVM dan QEMU. Antara lain, libvirt digunakan untuk membuat dan mengelola jaringan virtual. Jaringan default yang dibuat saat libvirt digunakan disebut "default" dan menggunakan Nat (Terjemahan Alamat Jaringan) dan Penerusan Paket untuk menghubungkan sistem yang ditiru dengan dunia “luar” (baik sistem host dan internet). Dalam tutorial ini kita akan melihat cara membuat pengaturan yang berbeda menggunakan Jaringan Jembatan.

Dalam tutorial ini Anda akan belajar:

  • Cara membuat jembatan virtual
  • Cara menambahkan antarmuka fisik ke jembatan
  • Cara membuat konfigurasi jembatan persisten
  • Cara memodifikasi aturan firmware untuk memungkinkan lalu lintas ke mesin virtual
  • Cara membuat jaringan virtual baru dan menggunakannya di mesin virtual
Cara menggunakan jaringan bridged dengan libvirt dan kvm

Persyaratan dan konvensi perangkat lunak yang digunakan

Persyaratan Perangkat Lunak dan Konvensi Baris Perintah Linux
Kategori Persyaratan, konvensi atau versi perangkat lunak yang digunakan
Sistem Distribusi Independen
Perangkat lunak libvirt, iproute, brctl
Lainnya Hak istimewa administratif untuk membuat dan memanipulasi antarmuka jembatan
Konvensi # - mensyaratkan Linux -Commands untuk dieksekusi dengan hak istimewa root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo memerintah
$-mensyaratkan Linux-Commands untuk dieksekusi sebagai pengguna reguler yang tidak istimewa

Jaringan "Default"

Kapan libvirt sedang digunakan dan libvirtd Daemon sedang berjalan, jaringan default dibuat. Kami dapat memverifikasi bahwa jaringan ini ada dengan menggunakan Virsh utilitas, yang pada sebagian besar distribusi Linux biasanya disertakan dengan libvirt-client kemasan. Untuk memohon utilitas sehingga menampilkan semua jaringan virtual yang tersedia, kami harus menyertakan daftar net Sub -perintah:

$ sudo virsh net-list-semua 


Dalam contoh di atas kami menggunakan --semua opsi untuk memastikan juga tidak aktif Jaringan termasuk dalam hasil, yang biasanya sesuai dengan yang ditampilkan di bawah ini:

Name State Autostart Persistent -------------------------------------------- Default Active ya ya 

Untuk mendapatkan informasi terperinci tentang jaringan, dan akhirnya memodifikasinya, kami dapat meminta Virsh dengan edit Sub -perintah sebagai gantinya, memberikan nama jaringan sebagai argumen:

$ sudo virsh net-edit default 

File sementara yang berisi xml Definisi jaringan akan dibuka di editor teks favorit kami. Dalam hal ini hasilnya adalah sebagai berikut:

 Default 168F6909-715C-43333-A34B-F74584D26328          

Seperti yang dapat kita lihat, jaringan default didasarkan pada penggunaan virbr0 jembatan virtual, dan penggunaan Nat Konektivitas berbasis untuk menghubungkan mesin virtual yang merupakan bagian dari jaringan ke dunia luar. Kita dapat memverifikasi bahwa jembatan ada menggunakan aku p memerintah:

$ ip link tampilkan jenis jembatan 

Dalam kasus kami, perintah di atas mengembalikan output berikut:

5: virbr0: mtu 1500 qdisc noqueue state down mode default grup default qlen 1000 link/eter 52: 54: 00: 48: 3f: 0c brd ff: ff: ff: ff: ff 

Untuk menunjukkan antarmuka yang merupakan bagian dari jembatan, kita dapat menggunakan aku p perintah dan permintaan hanya untuk antarmuka yang memiliki virbr0 jembatan sebagai master:

$ ip link show master virbr0 

Hasil menjalankan perintah adalah:

6: virbr0-nic: mtu 1500 qdisc fq_codel master virbr0 state down mode default grup default qlen 1000 link/eter 52: 54: 00: 48: 3f: 0c brd ff: ff: ff: ff: ff: ff 

Seperti yang bisa kita lihat, hanya ada satu antarmuka yang saat ini melekat pada jembatan, virbr0-nic. Itu virbr0-nic Antarmuka adalah antarmuka Ethernet virtual: dibuat dan ditambahkan ke jembatan secara otomatis, dan tujuannya hanya untuk menyediakan stabil MAC Alamat (52: 54: 00: 48: 3f: 0c dalam kasus ini) untuk jembatan.

Antarmuka virtual lainnya akan ditambahkan ke jembatan saat kami membuat dan meluncurkan mesin virtual. Demi tutorial ini saya membuat dan meluncurkan mesin virtual Debian (Buster); Jika kita meluncurkan kembali perintah yang kita gunakan di atas untuk menampilkan antarmuka jembatan budak, kita dapat melihat yang baru ditambahkan, vnet0:

$ ip link show master virbr0 6: virbr0-nic: mtu 1500 qdisc fq_codel master virbr0 state down mode default grup default qlen 1000 tautan/eter 52: 54: 00: 48: 3f: 0c brd ff: ff: ff: ff: ff : ff 7: vnet0: mtu 1500 qdisc fq_codel master virbr0 status mode tidak diketahui grup default default qlen 1000 tautan/eter fe: 54: 00: e2: fe: 7b brd ff: ff: ff: ff: ff: ff 

Tidak ada antarmuka fisik yang harus ditambahkan ke virbr0 jembatan, karena menggunakan Nat untuk memberikan konektivitas.

Gunakan Jaringan Jembatan untuk Mesin Virtual

Jaringan default menyediakan cara yang sangat mudah untuk mencapai konektivitas saat membuat mesin virtual: semuanya "siap" dan bekerja di luar kotak. Namun, terkadang, kami ingin mencapai a Penerbangan penuh koneksi, di mana perangkat tamu terhubung ke host Lan, tanpa menggunakan Nat, Kita harus membuat jembatan baru dan berbagi salah satu antarmuka Ethernet fisik host. Mari kita lihat bagaimana melakukan langkah demi langkah ini.

Membuat jembatan baru

Untuk membuat jembatan baru, kita masih bisa menggunakan aku p memerintah. Katakanlah kami ingin memberi nama jembatan ini Br0; Kami akan menjalankan perintah berikut:

$ sudo ip link tambahkan jembatan tipe br0 

Untuk memverifikasi jembatan dibuat, kami lakukan seperti sebelumnya:

$ sudo ip tautan menunjukkan tipe jembatan 5: virbr0: mtu 1500 qdisc noqueue state down Mode default grup default qlen 1000 tautan/eter 52: 54: 00: 48: 3f: 0c brd ff: ff: ff: ff: ff: ff 8 : BR0: MTU 1500 QDISC NOOP State Down Mode Default Grup Default Qlen 1000 Link/Ether 26: D2: 80: 7C: 55: DD Brd FF: FF: FF: FF: FF: FF 

Seperti yang diharapkan, jembatan baru, Br0 dibuat dan sekarang termasuk dalam output perintah di atas. Sekarang jembatan baru dibuat, kita dapat melanjutkan dan menambahkan antarmuka fisik ke dalamnya.

Menambahkan antarmuka Ethernet fisik ke jembatan

Pada langkah ini kami akan menambahkan antarmuka fisik host ke jembatan. Perhatikan bahwa Anda tidak dapat menggunakan antarmuka Ethernet utama dalam kasus ini, karena segera setelah ditambahkan ke jembatan Anda akan kehilangan konektivitas, karena akan kehilangan alamat IP -nya. Dalam hal ini kami akan menggunakan antarmuka tambahan, ENP0S29U1U1: Ini adalah antarmuka yang disediakan oleh adaptor Ethernet ke USB yang terpasang pada mesin saya.

Pertama, kami memastikan status antarmuka sudah habis:

$ sudo ip tautan set ENP0S29U1U1 UP 

Untuk menambahkan antarmuka ke Bridge, perintah yang akan dijalankan adalah sebagai berikut:

$ sudo ip tautan set ENP0S29U1U1 Master BR0 

Untuk memverifikasi antarmuka ditambahkan ke jembatan, sebagai gantinya:

$ sudo ip link show master bR0 3: enp0s29u1u1: mtu 1500 qdisc fq_codel master br0 state up mode default default qlen 1000 tautan/eter 18: a6: f7: 0e: 06: 64 Brd ff: ff: ff: ff: ff: ff: ff: ff: ff: ff: ff: ff: ff: ff: ff: ff: ff: ff: ff 

Menetapkan alamat IP statis ke jembatan

Pada titik ini kita dapat menetapkan alamat IP statis ke jembatan. Katakanlah kami ingin menggunakan 192.168.0.90/24; Kami akan menjalankan:

$ Sudo IP Address Add Dev BR0 192.168.0.90/24 

Untuk alamat itu ditambahkan ke antarmuka, kami menjalankan:

$ ip addr show br0 9: br0: mtu 1500 qdisc noqueue state up grup up default qlen 1000 link/eter 26: d2: 80: 7c: 55: dd brd ff: ff: ff: ff: ff inet 192.168.0.90/24 Lingkup Global BR0 Valid_lft Forever Preferred_lft Forever […] 


Membuat konfigurasinya persisten

Konfigurasi jembatan kami sudah siap, bagaimanapun, karena itu, tidak akan selamat dari reboot mesin. Untuk membuat konfigurasi kami persisten, kami harus mengedit beberapa file konfigurasi, tergantung pada distribusi yang kami gunakan.

Debian dan Derivatif

Pada keluarga distribusi Debian, kita harus yakin bahwa jembatan-util Paket diinstal:

$ sudo apt-get menginstal jembatan-utils 

Setelah paket diinstal, kita harus memodifikasi konten /etc/jaringan/antarmuka mengajukan:

# File ini menjelaskan antarmuka jaringan yang tersedia di sistem Anda # dan cara mengaktifkannya. Untuk informasi lebih lanjut, lihat antarmuka (5). # Antarmuka jaringan loopback otomatis lo iface lo inet loopback # Tentukan bahwa antarmuka fisik yang harus dihubungkan ke jembatan # harus dikonfigurasi secara manual, untuk menghindari konflik dengan networkManager IFACE ENP0S29U1U1 Inet Manual # Pengaturan Jembatan BR0 Auto BR0 IFACE BR0 INET STATIS Bridge_ports ENP0S29U1U1 Alamat 192.168.0.90 siaran 192.168.0.255 Netmask 255.255.255.0 Gateway 192.168.0.1 

Keluarga Distribusi Topi Merah

Pada keluarga distribusi Red Hat, termasuk Fedora, kita harus memanipulasi skrip jaringan di dalam /etc/sysconfig/network-script direktori. Jika kita menginginkan jembatan bukan Untuk dikelola oleh NetworkManager, atau kami menggunakan distribusi yang lebih lama dengan versi yang lebih lama dari NetworkManager yang tidak mampu mengelola sakelar jaringan, kami perlu menginstal skrip jaringan kemasan:

$ sudo DNF menginstal skrip jaringan 

Setelah paket diinstal, kita perlu membuat file yang akan mengkonfigurasi Br0 menjembatani: /etc/sysconfig/network-scripts/ifcfg-br0. Di dalam file kami menempatkan konten berikut:

Perangkat = Type BR0 = Bridge BootProto = Tidak Ada Ipaddr = 192.168.0.90 gateway = 192.168.0.1 netmask = 255.255.255.0 Onboot = Ya Delay = 0 NM_CONTROLLED = 0 

Daripada, kami memodifikasi atau membuat file yang digunakan untuk mengonfigurasi antarmuka fisik yang akan kami sambungkan ke jembatan, dalam hal ini /etc/sysconfig/network-scripts/ifcfg-enp0s29u1u1:

Type = ethernet bootproTo = none name = enp0s29u1u1 perangkat = enp0s29u1u1 onboot = ya jembatan = br0 tunda = 0 nm_controlled = 0 

Dengan konfigurasi kami siap, kami dapat memulai jaringan layanan, dan aktifkan di boot:

$ sudo Systemctl Enable - -NOW Network 

Menonaktifkan Netfilter untuk Jembatan

Untuk memungkinkan semua lalu lintas diteruskan ke jembatan, dan karenanya ke mesin virtual yang terhubung ke sana, kita perlu menonaktifkan NetFilter. Ini diperlukan, misalnya, agar resolusi DNS bekerja di mesin tamu yang terpasang pada jembatan. Untuk melakukan ini, kami dapat membuat file dengan .conf ekstensi di dalam /etc/sysctl.D direktori, sebut saja 99-Netfilter-Bridge.conf. Di dalamnya kami menulis konten berikut:

bersih.menjembatani.jembatan-nf-call-ip6tables = 0 net.menjembatani.jembatan-nf-call-iPlable = 0 net.menjembatani.jembatan-nf-call-arptables = 0 

Untuk memuat pengaturan yang ditulis dalam file, Fist kami memastikan bahwa BR_NETFILTER Modul dimuat:

$ sudo modprobe br_netfilter 

Untuk memuat modul secara otomatis saat boot, mari kita buat /etc/modules-load.D/BR_NETFILTER.conf File: Ini harus berisi hanya nama modul itu sendiri:

BR_NETFILTER 


Setelah modul dimuat, untuk memuat pengaturan yang kami simpan di 99-Netfilter-Bridge.conf file, kami dapat menjalankan:

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

Membuat Jaringan Virtual Baru

Pada titik ini kita harus mendefinisikan "jaringan" baru yang akan digunakan oleh mesin virtual kami. Kami membuka file dengan editor favorit kami dan menempelkan konten berikut di dalamnya, daripada menyimpannya sebagai Jembatan Jembatan.xml:

 Jembatan Jembatan    

Setelah file siap, kami melewati posisinya sebagai argumen ke DEFINE NET Virsh Sub -perintah:

$ sudo virsh net-define bridged-network.xml 

Untuk mengaktifkan jaringan baru dan membuat sehingga dimulai secara otomatis, kita harus menjalankan:

$ sudo virsh net-start-jembatan-jembatan $ sudo virsh net-autostart-jembatan-jaringan 

Kami dapat memverifikasi jaringan telah diaktifkan dengan menjalankan Daftar Net Virsh
Perintah, lagi:

$ sudo virsh nama daftar net state autostart persisten ---------------------------------------- ------------ Jembatan Jembatan Aktif ya ya default aktif ya ya 

Kami sekarang dapat memilih jaringan dengan nama saat menggunakan --jaringan pilihan:

$ sudo virt-install \ --vcpus = 1 \ --memory = 1024 \ --cdrom = debian-10.8.0-AMD64-DVD-1.iso \--disk ukuran = 7 \ --os-variant = debian10 \--network network = Jembatan-jembatan 

Jika menggunakan virt-manager Antarmuka grafis, kami akan dapat memilih jaringan saat membuat mesin virtual baru:

Kesimpulan

Dalam tutorial ini kami melihat cara membuat jembatan virtual di Linux dan menghubungkan antarmuka Ethernet fisik ke sana untuk membuat "jaringan" baru yang akan digunakan dalam mesin virtual yang dikelola dengan libvirt. Saat menggunakan yang terakhir, jaringan default disediakan untuk kenyamanan: Ini menyediakan konektivitas dengan menggunakan NAT. Saat menggunakan jaringan yang dijembatani sebagai yang kami konfigurasi dalam tutorial ini, kami akan meningkatkan kinerja dan menjadikan mesin virtual bagian dari subnet yang sama dari host.

Tutorial Linux Terkait:

  • Pengantar Otomatisasi Linux, Alat dan Teknik
  • Menguasai loop skrip bash
  • Hal -hal yang harus diinstal pada ubuntu 20.04
  • Bagaimana bekerja dengan WooCommerce Rest API dengan Python
  • Cara Mengatur Server OpenVPN di Ubuntu 20.04
  • File Konfigurasi Linux: 30 Teratas Paling Penting
  • Mint 20: Lebih baik dari Ubuntu dan Microsoft Windows?
  • Ubuntu 20.04 trik dan hal -hal yang mungkin tidak Anda ketahui
  • Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
  • Cara menjalankan raspberry pi os di mesin virtual dengan…