Pelayan & Klien (sambungan dalaman) dalam VM Fedora

Saya melaburkan masa yang agak lama untuk menghadam kegunaan protokol Kerberos menerusi banyaknya sesi percubaan yang mengecewakan. Setelah menempuh bersiri-siri episod kehampaan, kali ini terbayar juga sekian jumlah sumbangan tenaga yang agak melelahkan itu.

Penjelasan yang tuntas mengenai kaedah pengesahan dengan Kerberos ini boleh diperolehi dari YouTube, Kerberos Authentication Explained | A deep dive.

Sungguh! Prosesnya begitu rumit, sementelah betapa sebelum ini banyak kekeliruan yang saya alami dek kurangnya kemahiran dan kefahaman tentang perbezaan antara domain dan REALM, juga dalam bab menguruskan domain.

Makanya, empat topik yang akan saya sentuh di sini iaitu:

  1. Pemasangan & Konfigurasi Kerberos di KDC
  2. Pemasangan & Konfigurasi Kerberos di Klien
  3. Sambungan SSH Menggunakan Pengesahan GSSAPI
  4. Penyediaan dua VM Fedora (QEMU/KVM), khusus untuk tujuan belajar Kerberos ini. Saya kebelakangkan topik ini agar tumpuan utama diberikan kepada topik Kerberos terlebih dahulu. Topik ini hanya untuk dirujuk apabila perlu kepada pengetahuan menguruskan VM yang mungkin tidak cukup dimahiri sebelum ini.

TETAPAN WAJIB DI KEDUA-DUA MESIN MAYA

  • Maklumat rangkaian kedua-dua VM Fedora: VM1 adalah sebagai KDC yakni server manakala VM2 akan bertindak sebagai klien. Nama pengguna untuk kedua-dua VM adalah sama, iaitu hadoop.

    /etc/hosts
    192.168.0.101   master.cluster.loc master   # KDC/Server 
    192.168.0.102   worker.cluster.loc worker   # Klien
  • (Optional) Jika perlu memindahkan fail antara VM sebelum menggunakan tiket Kerberos untuk log masuk SSH, disarankan menjana kunci SSH di setiap VM. Kemudian, salin kunci tersebut antara VM secara timbal balik untuk membolehkan sambungan SSH tanpa kata laluan. Setelah itu, barulah digantikan dengan kaedah pengesahan menggunakan TGT melalui proses-proses konfigurasi seterusnya.

    bash
    ssh-keygen
    ssh-copy-id -i ~/.ssh/id_ed25519.pub <hostname / IP address> 

    Fail konfigurasi SSH:

    ~/.ssh/config
    # global options                          
    Host *
      IdentitiesOnly yes
      IdentityFile ~/.ssh/id_ed25519
    
    # host & client specific options
    Host master 
      HostName master.cluster.loc
    
    Host worker 
      HostName worker.cluster.loc
  • Uruskan perihal masa yang perlu diselaraskan terlebih dahulu. Fedora menetapkan masa kepada lokal secara lalai. Kita mahu seragamkan masa ini secara automatik melalui rangkaian dan bukan secara lokal. Maka nyahkan terlebih dahulu tetapan lokal. Fedora menetapkan servis chronyd secara lalai untuk NTP maka boleh semak statusnya dari servis berkenaan.

    bash
    sudo timedatectl set-local-rtc 0
    timedatectl
    chronyc tracking
    Reference ID    : 2BD8B124 (ntp2.demimasa.my)
    Stratum         : 3
    Ref time (UTC)  : Sun Feb 09 08:24:45 2025
    System time     : 0.000619294 seconds fast of NTP time
    Last offset     : +0.000626924 seconds
    RMS offset      : 0.061736684 seconds
    Frequency       : 6.417 ppm fast
    Residual freq   : -4.732 ppm
    Skew            : 0.215 ppm
    Root delay      : 0.029564878 seconds
    Root dispersion : 0.054725591 seconds
    Update interval : 64.8 seconds
    Leap status     : Normal
    
    Umumnya, aras Stratum yang bagus adalah 5 dan ke bawah kerana ia menunjukkan bahawa jam telah diseragamkan dengan sumber yang dipercayai. Semestinya aras 1 adalah terbaik tetapi peranti yang mencapai aras 1 keseragaman masa biasanya melibatkan kos yang tinggi, namun tidaklah semahal peranti-peranti yang menjadi sumber primer dalam rujukan bagi keselarasan masa dengan aras Stratum 0. Dalam kes saya ini, aras 3 sudah memadai.

Pemasangan & Konfigurasi Kerberos di KDC

  • Pemasangan:

    bash
    sudo dnf install krb5-server krb5-libs krb5-workstation ufw -y 
  • Arahan di atas turut memasang UFW untuk menguruskan firewall.

    bash
    sudo systemctl enable --now ufw
    sudo ufw enable
    sudo ufw allow from 192.168.0.0/24 to any
    sudo ufw allow 88/tcp
    sudo ufw allow 88/udp
  • Terdapat empat fail konfigurasi yang mesti ada:

    1. /etc/krb5.conf
    # To opt out of the system crypto-policies configuration of krb5, remove the
    # symlink at /etc/krb5.conf.d/crypto-policies which will not be recreated.
    includedir /etc/krb5.conf.d/
    
    [logging]
      default = FILE:/var/log/krb5libs.log
      kdc = FILE:/var/log/krb5kdc.log
      admin_server = FILE:/var/log/kadmind.log
    
    [libdefaults]
      ticket_lifetime = 24h
      renew_lifetime = 7d
      forwardable = true
      pkinit_anchors = FILE:/etc/pki/tls/certs/ca-bundle.crt
      default_realm = CLUSTER.LOC
      default_ccache_name = KEYRING:persistent:%{uid}
    
    [realms]
     CLUSTER.LOC = {
       kdc = master.cluster.loc
       admin_server = master.cluster.loc
       default_principal_flags = +preauth
    }
    
    [domain_realm]
     .cluster.loc = CLUSTER.LOC
     cluster.loc = CLUSTER.LOC
    2. /var/kerberos/krb5kdc/kdc.conf
    [kdcdefaults]
      kdc_ports = 88
      kdc_tcp_ports = 88
    
    [realms]
    CLUSTER.LOC = {
       database_name = /var/kerberos/krb5kdc/principal
       acl_file = /var/kerberos/krb5kdc/kadm5.acl
       key_stash_file = /var/kerberos/krb5kdc/.k5.CLUSTER.LOC
       admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
       max_life = 10h 0m 0s
       max_renewable_life = 7d 0h 0m 0s
       master_key_type = aes256-cts-hmac-sha384-192
       supported_enctypes = aes256-cts-hmac-sha384-192:normal aes128-cts-hmac-sha256-128:normal aes256-cts-hmac-sha1-96:normal aes128-cts-hmac-sha1-96:normal camellia256-cts-cmac:normal camellia128-cts-cmac:normal
    }
    3. /var/kerberos/krb5kdc/kadm5.acl
    */admin@CLUSTER.LOC	*
    hadoop/admin@CLUSTER.LOC e *
    Pengisian entri baris dirujuk dari Dokumentasi MIT untuk kadm5.acl yang antaranya memetik:
    "The extract privilege is not included in the wildcard privilege; it must be explicitly assigned. This privilege allows the user to extract keys from the database, and must be handled with great care to avoid disclosure of important keys like those of the kadmin/* or krbtgt/* principals. The lockdown_keys principal attribute can be used to prevent key extraction from specific principals regardless of the granted privilege."
    Dalam Arch Linux, fail-fail konfigurasi dan pangkalan data untuk admin KDC ditempatkan di /var/lib/krb5kdc/.
    4. ~/.k5login
    hadoop@CLUSTER.LOC
    Fahami fungsi entri dalam fail ini dengan baik kerana ia penting untuk sesi SSH dalam SSH / sesi SSH berlapis (nested SSH sessions).
    1. Log masuk sebagai pengguna tempatan (pengguna yang sama iaitu hadoop) melalui SSH juga memerlukan entri baris di atas. Jika tiada, SSH akan kembali kepada pengesahan menggunakan kunci awam.
    2. Katakan nama pengguna di VM2 ialah krbclient. Dalam situasi di mana KDC (VM1) perlu membuat sambungan SSH ke dalam VM2, krbclient mesti mempunyai entri KDC_user@DOMAIN.REALM dalam fail ini.
      ▪ Iaitu sebagaimana entri di atas dalam /home/krbclient/.k5login.
    3. Begitu juga sebaliknya. Sekiranya krbclient mahu membuat sambungan SSH ke dalam KDC, KDC mesti mempunyai entri krbclient@CLUSTER.LOC dalam /home/hadoop/.k5login. Entri ini bertindak sebagai pemberi kebenaran untuk log masuk bagi pihak klien.
    Harap jelas. Perlu diingat bahawa prinsipal untuk pengguna berserta domain_realm-nya mesti ditambah juga di KDC sebagai kadmin dengan arahan berikut:
    ▪ "addprinc krbclient@CLUSTER.LOC" dan
    ▪ "addprinc krbclient/admin@CLUSTER.LOC" untuk urusan pentadbiran.
  • Cipta pangkalan data:-

    bash
    sudo kdb5_util -r CLUSTER.LOC create -s
    Initializing database '/var/kerberos/krb5kdc/principal' for realm 'CLUSTER.LOC',
    master key name 'K/M@CLUSTER.LOC'
    You will be prompted for the database Master Password.
    It is important that you NOT FORGET this password.
    Enter KDC database master key:
    Re-enter KDC database master key to verify:
    
  • Mulakan servis:-

    bash
    sudo systemctl enable --now krb5kdc
    sudo systemctl enable --now kadmin
    Dalam Arch Linux, kedua-dua servis dinamakan sebagai krb5-kdc dan krb5-kadmind.
  • Teruskan dengan langkah-langkah selanjutnya. Dua langkah pertama menambah prinsipal untuk kegunaan pengguna biasa dan pentadbiran, diikuti dengan penjanaan prinsipal host/master.cluster.loc menggunakan kunci rawak bagi pengesahan hos. Akhir sekali, ktadd digunakan untuk menyimpan kunci tersebut dalam fail keytab bagi membolehkan akses tanpa kata laluan.

    bash
    sudo kadmin.local
    Authenticating as principal root/admin@CLUSTER.LOC with password.
    kadmin.local:  addprinc hadoop@CLUSTER.LOC
    No policy specified for hadoop@CLUSTER.LOC; defaulting to no policy
    Enter password for principal "hadoop@CLUSTER.LOC":
    Re-enter password for principal "hadoop@CLUSTER.LOC":
    Principal "hadoop@CLUSTER.LOC" created.
    kadmin.local:  addprinc hadoop/admin@CLUSTER.LOC
    No policy specified for hadoop/admin@CLUSTER.LOC; defaulting to no policy
    Enter password for principal "hadoop/admin@CLUSTER.LOC":
    Re-enter password for principal "hadoop/admin@CLUSTER.LOC":
    Principal "hadoop/admin@CLUSTER.LOC" created.
    kadmin.local:  addprinc -randkey host/master.cluster.loc
    No policy specified for host/master.cluster.loc@CLUSTER.LOC; defaulting to no policy
    Principal "host/master.cluster.loc@CLUSTER.LOC" created.
    kadmin.local:  ktadd host/master.cluster.loc
    Entry for principal host/master.cluster.loc with kvno 2, encryption type aes256-cts-hmac-sha1-96 added to keytab FILE:/etc/krb5.keytab.
    Entry for principal host/master.cluster.loc with kvno 2, encryption type aes128-cts-hmac-sha1-96 added to keytab FILE:/etc/krb5.keytab.
    kadmin.local:  quit
    
  • Sesi percubaan: dapatkan tiket Kerberos di KDC.

    bash
    kinit
  • Paparkan maklumat tiket.

    bash
    klist
    Ticket cache: KCM:1000
    Default principal: hadoop@CLUSTER.LOC
    Valid starting Expires Service principal 02/09/2025 10:10:02 02/09/2025 20:10:02 krbtgt/CLUSTER.LOC@CLUSTER.LOC renew until 02/10/2025 10:09:58
  • Sebelum beralih ke konfigurasi untuk klien, salin fail /etc/krb5.conf ke dalam direktori $HOME terlebih dahulu.

    bash
    cp /etc/krb5.conf .

Konfigurasi Kerberos di Klien

  • krb5-libs dan krb5-workstation memang sudah terpasang dalam Fedora Server. Salin fail krb5.conf dari KDC (VM1) ke Klien (VM2) dan alihkannya ke direktori /etc/:

    bash
    scp master:krb5.conf .
    sudo mv krb5.conf /etc
  • Pastikan Klien dapat berkomunikasi dengan KDC melalui arahan berikut:

    bash
    sudo dnf install telnet telnet-server -y
    ping -c3 master.cluster.loc    # Check connectivity
    telnet master.cluster.loc 88   # Verify KDC is listening on port 88
  • Sesi percubaan: dapatkan tiket Kerberos di Klien.

    bash
    kinit
  • Paparkan maklumat tiket.

    bash
    klist
    Ticket cache: KCM:1000
    Default principal: hadoop@CLUSTER.LOC
    Valid starting Expires Service principal 02/09/2025 10:17:52 02/09/2025 20:17:52 krbtgt/CLUSTER.LOC@CLUSTER.LOC renew until 02/10/2025 10:17:48
  • Cuba akses kadmin dari klien sebagai root:

    bash
    sudo kadmin -p hadoop/admin
    Authenticating as principal hadoop/admin with password.
    Password for hadoop/admin@CLUSTER.LOC:
    kadmin:  listprincs
    K/M@CLUSTER.LOC
    hadoop/admin@CLUSTER.LOC
    hadoop@CLUSTER.LOC
    host/master.cluster.loc@CLUSTER.LOC
    kadmin/admin@CLUSTER.LOC
    kadmin/changepw@CLUSTER.LOC
    krbtgt/CLUSTER.LOC@CLUSTER.LOC
    kadmin:   
    

Sambungan SSH Menggunakan Pengesahan GSSAPI

  • Konfigurasi universal SSH (tetapkan perkara di bawah ini di kedua-dua VM). Nyahkan komen dan aktifkan opsyen Kerberos serta GSSAPI:

    /etc/ssh/sshd_config
    # Kerberos options
    KerberosAuthentication yes
    
    # GSSAPI options
    GSSAPIAuthentication yes
    GSSAPICleanupCredentials yes
    GSSAPIKeyExchange yes
    /etc/ssh/ssh_config
    Host *
      GSSAPIAuthentication yes
      GSSAPIDelegateCredentials yes
      GSSAPIKeyExchange yes
    Kaedah pengesahan dengan KeyExchange tidak disokong dalam Arch Linux. Sebaliknya, kaedah pengesahan yang digunakan adalah gssapi-with-mic.
  • Mulakan semula servis: sudo systemctl restart sshd.

  • Di VM2 (Klien): Tambahkan hos klien dan hasilkan kunci rambang untuknya. Saya percaya langkah ini adalah bertepatan dengan perbincangan di ArchWiki pada bab [5.1: Service principals and keytabs with remote kadmin].

    bash
    sudo kadmin -p hadoop/admin
    kadmin:  addprinc -randkey host/worker.cluster.loc
    No policy specified for host/worker.cluster.loc@CLUSTER.LOC; defaulting to no policy
    Principal "host/worker.cluster.loc@CLUSTER.LOC" created.
    kadmin:  ktadd host/worker.cluster.loc
    Entry for principal host/worker.cluster.loc with kvno 2, encryption type aes256-cts-hmac-sha1-96 added to keytab FILE:/etc/krb5.keytab.
    Entry for principal host/worker.cluster.loc with kvno 2, encryption type aes128-cts-hmac-sha1-96 added to keytab FILE:/etc/krb5.keytab.
    kadmin:  quit
    
  • Cuba SSH ke KDC (Server) dengan opsyen -v.

    bash
    ssh master -v 
    ...
    debug1: Next authentication method: gssapi-keyex
    Authenticated to master.cluster.loc ([192.168.0.101]:22) using "gssapi-keyex". 
    ...
    
  • Semak maklumat tiket di kedua-dua VM dengan arahan klist.

    VM1 (KDC):

    Ticket cache: KCM:1000:71016
    Default principal: hadoop@CLUSTER.LOC
    Valid starting Expires Service principal 02/10/2025 10:47:54 02/10/2025 20:47:29 krbtgt/CLUSTER.LOC@CLUSTER.LOC renew until 02/17/2025 10:47:27

    VM2 (Klien):

    Ticket cache: KCM:1000
    Default principal: hadoop@CLUSTER.LOC
    Valid starting Expires Service principal 02/10/2025 10:47:29 02/10/2025 20:47:29 krbtgt/CLUSTER.LOC@CLUSTER.LOC renew until 02/17/2025 10:47:27 02/10/2025 10:47:54 02/10/2025 20:47:29 host/master.cluster.loc@CLUSTER.LOC renew until 02/17/2025 10:47:27
  • Saya kira, selesai sudah bahagian Kerberos ini. Cache tiket boleh dihapuskan dengan perintah kdestroy.

    Untuk menyemak kunci:

    bash
    sudo klist -kt /etc/krb5.keytab
    Keytab name: FILE:/etc/krb5.keytab
    KVNO Principal
    ---- --------------------------------------------------------------------------
       2 host/worker.cluster.loc@CLUSTER.LOC (aes256-cts-hmac-sha384-192)
       2 host/worker.cluster.loc@CLUSTER.LOC (aes128-cts-hmac-sha256-128)
       2 host/worker.cluster.loc@CLUSTER.LOC (aes256-cts-hmac-sha1-96)
       2 host/worker.cluster.loc@CLUSTER.LOC (aes128-cts-hmac-sha1-96)
       2 host/worker.cluster.loc@CLUSTER.LOC (camellia256-cts-cmac)
       2 host/worker.cluster.loc@CLUSTER.LOC (camellia128-cts-cmac)
    

    Untuk memadam kunci:

    bash
    sudo kadmin.local
    Authenticating as principal root/admin@CLUSTER.LOC with password.
    kadmin.local:  ktrem -q host/worker.cluster.loc 
    kadmin.local:    
    

Penyediaan dua VM Fedora (QEMU/KVM)

  • 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
    ???END
    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 \
      -machine type=q35,vmport=off \
      -vga qxl -display gtk,gl=on,show-cursor=on \
      -display spice-app,gl=on \
      -spice unix=on,addr=/tmp/vm_spice.socket,disable-ticketing=on \
      -m 1G -cpu host -smp 2 -daemonize \
      -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

Troubleshooting

After rebooting the VMs, there was an issue with the sssd-kcm service in VM2, where the kinit command threw the following error:

kinit: Connection refused while getting default ccache

Checking the service status using:

systemctl status sssd-kcm

returned the following output:

Failed to init Kerberos context [Permission denied]
Failed to start sssd-kcm.service - SSSD Kerberos Cache Manager.

The issue can be temporarily fixed using the command below, but ChatGPT and DeepSeek do not recommend this as a long-term solution for a production system:

bash
sudo semanage permissive -d sssd_t

The recommended approach is to create or modify an SELinux policy to properly allow sssd-kcm to function without disabling security mechanisms.


Kali terakhir dikemaskini:

Tentang Blog & Penulis

Topik perbincangan dalam blog ini merangkumi Linux & 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.