• Untuk penyediaan dua VM dengan distribusi yang sama ini, saya gunakan imej QEMU qcow2 bagi Fedora Server 41, yang dimuat turun dari laman ini di bawah seksyen For Intel and AMD x86_64 systems.

  • Setiap satu VM ditetapkan alamat IP-nya sendiri dan hal ini dapat dicapai (terima kasih) dengan adanya fungsi untuk menambah peranti TUN/TAP. Fungsi ini membolehkan pengguna untuk menambah alamat IP yang ditugaskan kepada VM masing-masing melalui laluan (route) daripada alamat IP yang dimiliki oleh hos.

  • Buat satu skrip untuk aktifkan peranti tap dan jalankannya di terminal.

    ~/tapup
    #!/usr/bin/env zsh
    
    # Add new TAP (network tap) devices in TAP mode
    sudo ip tuntap add dev tap1 mode tap
    sudo ip tuntap add dev tap2 mode tap
    
    # Bring up the tap devices, making them active
    sudo ip link set dev tap1 up
    sudo ip link set dev tap2 up
    
    # Add routes to the assigned IP addresses for each tap
    sudo ip route add 192.168.0.101 dev tap1
    sudo ip route add 192.168.0.102 dev tap2
  • Urus firewall melalui UFW (Uncomplicated Firewall) untuk membenarkan trafik yang diperlukan.

    bash
    sudo ufw allow from 192.168.0.0/24 to any
    sudo ufw allow in on tap1
    sudo ufw allow in on tap2
    sudo ufw allow out on tap1
    sudo ufw allow out on tap2

    Edit fail berikut:

    /etc/default/ufw
    DEFAULT_FORWARD_POLICY="ACCEPT"

    Nyahkomen baris-baris di fail berikut:

    /etc/ufw/sysctl.conf
    net/ipv4/ip_forward=1
    net/ipv6/conf/default/forwarding=1
    net/ipv6/conf/all/forwarding=1

    Tambah fail berikut dengan entri baris di bawah:

    /etc/sysctl.d/99-arp-proxy.conf
    net.ipv4.conf.tap1.proxy_arp=1
    net.ipv4.conf.tap2.proxy_arp=1
    net.ipv4.conf.wlan0.proxy_arp=1

    Muat semula sysctl dan ufw.

    bash
    sudo sysctl --system
    sudo systemctl restart ufw
    sudo ufw reload
    sudo ufw status verbose
  • Salin imej yang dimuat turun dan namakan semula kedua-dua imej agar mempunyai nama unik untuk pelaksanaan, dan ubah saiz imej dengan arahan berikut:

    bash
    qemu-img resize Fedora-Server-KVM-41-1.4.x86_64_1.qcow2 30G 
    qemu-img resize Fedora-Server-KVM-41-1.4.x86_64_2.qcow2 30G 
  • Perintah baris untuk memulakan VM adalah seperti berikut (edit yang mana perlu bagi menjalankan kedua-duanya seperti nombor tap (ifname=tap2 untuk VM2), alamat MAC, dan nama imej):

    bash
    qemu-system-x86_64 -enable-kvm -daemonize \
      -machine type=q35,vmport=off \
      -spice unix=on,addr=/tmp/vm_spice.socket,disable-ticketing=on \
      -m 1G -cpu host -smp 2 \
      -vga qxl -display gtk,gl=on,show-cursor=on \
      -display spice-app,gl=on \
      -nic tap,model=virtio-net-pci,id=nic0,ifname=tap1,script=no,downscript=no,mac=52:54:00:12:34:56 \
      -drive media=disk,if=virtio,aio=native,cache.direct=on,file=laluan_ke_imej-Fedora-Server-KVM-41-1.4.x86_64_1.qcow2
    Seusai membuat konfigurasi SSH, baris ketiga dan keempat (diwarnakan) yang menempatkan opsyen untuk membuka virt-viewer boleh dibuang sebelum memulakan sesi berikutnya jika kerja-kerja di VM hanya dijalankan dari sistem hos.
  • Setelah VM dijalankan, ada 5 perkara yang akan terpapar untuk dibuat penetapan:-

    1. Language settings;
    2. Time settings;
    3. Network configuration: Saya tetapkan nama hos dan masukkan yang berikut pada konfigurasi peranti enp0s2.
      • IPv4 address192.168.0.101
      • IPv4 netmask255.255.255.0
      • IPv4 gateway192.168.0.50 (alamat IP hos)
      • Nameservers8.8.8.8
      • serta tanda “Connect automatically after reboot” (telah ditanda secara lalai) & “Apply configuration in installer”.
    4. Root password
    5. User creation

    Pun begitu, sekiranya terlupa untuk set up konfigurasi rangkaian semasa imej server ini mula-mula boot, buat langkah-langkah di bawah untuk mendapatkan sambungan Internet secara manual (aplikasikan kepada kedua-dua VM).

    VM1:

    bash
    sudo ip addr add 192.168.0.101/24 dev enp0s2
    sudo ip route add default via 192.168.0.50 dev enp0s2   # this is the host IP address

    VM2:

    bash
    sudo ip addr add 192.168.0.102/24 dev enp0s2
    sudo ip route add default via 192.168.0.50 dev enp0s2   # this is the host IP address 

    Tambahkan fail berikut di kedua-dua VM dengan konfigurasi DNS sebagaimana berikut.

    /etc/systemd/resolved.conf.d/dns_servers.conf
    [Resolve]
    DNS=8.8.8.8

    Dan mula semula servis systemd-resolved serta ping laman web untuk kepastian bahawa sambungan rangkaian telah berjaya.

    bash
    sudo systemctl restart systemd-resolved
    ping -c3 fedoraproject.org

    Cuba SSH dari hos ke semua VM.

  • Ubah saiz peranti dengan kaedah berikut:-

    bash
    sudo parted /dev/vda
    GNU Parted 3.6
    Using /dev/vda
    Welcome to GNU Parted! Type 'help' to view a list of commands.
    (parted) print
    Warning: Not all of the space available to /dev/vda appears to be used, you can fix 
    the GPT to use all of the space (an extra 48234496 blocks) or continue with the
    current setting? 
    Fix/Ignore? Fix
    Model: Virtio Block Device (virtblk)
    Disk /dev/vda: 32.2GB
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt
    Disk Flags: pmbr_boot
    Number Start End Size File system Name Flags 1 1049kB 2097kB 1049kB bios_grub 2 2097kB 1076MB 1074MB ext4 bls_boot 3 1076MB 7515MB 6439MB lvm
    (parted) unit s (parted) print free Model: Virtio Block Device (virtblk) Disk /dev/vda: 62914560s Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: pmbr_boot
    Number Start End Size File system Name Flags 34s 2047s 2014s Free Space 1 2048s 4095s 2048s bios_grub 2 4096s 2101247s 2097152s ext4 bls_boot 3 2101248s 14678015s 12576768s lvm 14678016s 62914526s 48236511s Free Space
    (parted) resizepart 3 62914526s (parted) unit compact (parted) print free Model: Virtio Block Device (virtblk) Disk /dev/vda: 32.2GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: pmbr_boot
    Number Start End Size File system Name Flags 17.4kB 1049kB 1031kB Free Space 1 1049kB 2097kB 1049kB bios_grub 2 2097kB 1076MB 1074MB ext4 bls_boot 3 1076MB 32.2GB 31.1GB lvm
    (parted) quit Information: You may need to update /etc/fstab.
    bash
    sudo pvresize /dev/vda3
    Physical volume "/dev/vda3" changed
    1 physical volume(s) resized or updated / 0 physical volume(s) not resized 
    
    bash
    sudo lvresize -l +100%FREE -r sysvg/root
    Size of logical volume sysvg/root changed from <6.00 GiB (1535 extents) to <29.00 GiB (7423 extents). 
    File system xfs found on sysvg/root mounted at /.
    Extending file system xfs to <29.00 GiB (31134318592 bytes) on sysvg/root...
    xfs_growfs /dev/sysvg/root
    meta-data=/dev/mapper/sysvg-root isize=512    agcount=4, agsize=392960 blks
             =                       sectsz=512   attr=2, projid32bit=1
             =                       crc=1        finobt=1, sparse=1, rmapbt=1
             =                       reflink=1    bigtime=1 inobtcount=1 nrext64=1
    data     =                       bsize=4096   blocks=1571840, imaxpct=25
             =                       sunit=0      swidth=0 blks
    naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
    log      =internal log           bsize=4096   blocks=16384, version=2
             =                       sectsz=512   sunit=0 blks, lazy-count=1
    realtime =none                   extsz=4096   blocks=0, rtextents=0
    data blocks changed from 1571840 to 7601152
    xfs_growfs done
      Extended file system xfs on sysvg/root.
      Logical volume sysvg/root successfully resized.
    
  • Apabila sudah selesai, boleh hentikan dan padam peranti tap dengan e.g. skrip di bawah:

    ~/tapdn
    #!/usr/bin/env zsh
    
    # Flush the routing table for the TAP devices
    sudo ip route flush dev tap1
    sudo ip route flush dev tap2
    
    # Bring down the TAP devices
    sudo ip link set dev tap1 down
    sudo ip link set dev tap2 down
    
    # Delete the TAP devices
    sudo ip link del dev tap1
    sudo ip link del dev tap2
    
    # Remove the TAP devices from the system
    sudo ip tuntap del dev tap1 mode tap
    sudo ip tuntap del dev tap2 mode tap

Kali terakhir dikemaskini:

Tentang Blog & Penulis

Topik perbincangan dalam blog ini merangkumi Linux dan perisian sumber terbuka, Virtual Machine, serta Typesetting system.
Fokus semasa: Full Stack Development
Minat sampingan: Analisis Data
Bakat tersembunyi hamba: Menyanyi dan melukis.

Sumber dari Wallpaper Cave.