Arch Linux

Pengenalan

NFSv4 boleh digunakan dengan beberapa kaedah autentikasi. Secara lalai, banyak konfigurasi hanya menggunakan AUTH_SYS, iaitu kawalan akses berdasarkan UID/GID, yang kurang selamat kerana maklumat dihantar tanpa penyulitan. Dengan integrasi Kerberos, akses dapat dikawal melalui tiket pengesahan yang sah, dan data boleh dilindungi dengan penyulitan (contoh: sec=krb5p).

Panduan ini menunjukkan konfigurasi NFSv4 dengan Kerberos menggunakan hos Arch Linux sebagai server dan VM Debian 13 sebagai klien.

Contoh prinsipal servis yang perlu ada dalam keytab :

  1. nfs/kdc.archey.loc@CLUSTER.LOC
  2. nfs/master.debian.vm@CLUSTER.LOC

Prasyarat

  • KDC (Key Distribution Center) Kerberos telah berfungsi, dan pengguna boleh mendapatkan tiket (kinit).

  • Pakej berikut dipasang di hos (Arch Linux):

    bash
    sudo pacman -S nfs-utils gssproxy krb5
  • Pakej berikut dipasang di VM (Debian):

    bash
    sudo apt install nfs-common krb5-user nmap
  • DNS atau /etc/hosts telah ditetapkan dengan betul untuk nama penuh (FQDN).


Konfigurasi di Hos (Arch Linux)

idmapd.conf

Sunting fail di bawah, dengan menggantikan Domain kepada nama Kerberos REALM :

/etc/idmapd.conf
[General]
Domain = cluster.loc

[Mapping]
Nobody-User = nobody
Nobody-Group = nobody

[Static]
raihan@CLUSTER.LOC = raihan

Untuk konfigurasi NFS tanpa Kerberos, gantikan domain dengan nama domain yang ditetapkan di /etc/hosts, e.g. jika FQDN adalah kdc.archey.loc, maka nama Domain adalah archey.loc.

exports

Contoh konfigurasi:

/etc/exports
# /etc/exports - exports(5) - directories exported to NFS clients
# Use `exportfs -arv` to reload.

#/srv/nfs4           kdc.archey.loc(rw,sync,fsid=0)
#/srv/nfs4/home      kdc.archey.loc(rw,sync,nohide)

# NFSv4 root (fsid=0)
/srv/nfs4           192.168.0.0/24(rw,sync,fsid=0,no_subtree_check,sec=krb5p)

# Home dir under pseudo-root
/srv/nfs4/home      192.168.0.0/24(rw,sync,no_root_squash,no_subtree_check,sec=krb5p)

gssproxy.conf

Tetapkan entri [global] dengan baris kosong:

/etc/gssproxy/gssproxy.conf
[global]

24-nfs-server.conf

Tetapan lalai (biarkan dengan entri di bawah):

/etc/gssproxy/24-nfs-server.conf
[service/nfs-server]
  mechs = krb5
  socket = /run/gssproxy.sock
  cred_store = keytab:/etc/krb5.keytab
  trusted = yes
  kernel_nfsd = yes
  euid = 0

Prinsipal Servis Kerberos

  • Tambahkan prinsipal servis nfs/kdc.archey.loc@CLUSTER.LOC pada fail keytab /etc/krb5.keytab.

Aktifkan direktori dan Servis

bash
# Muatkan semula `exports`:
sudo exportfs -arv

# Bersihkan tab lama
sudo rm -f /var/lib/nfs/etab /var/lib/nfs/rmtab

# Firewall (UFW)
sudo ufw allow from 192.168.0.0/24 to any port 2049 proto tcp

# Aktifkan servis
sudo systemctl enable --now nfsv4-server nfs-idmapd gssproxy nfs-client.target rpc-gssd

# Papar exports
showmount -e

# Direktori ujian
sudo mkdir -p /srv/nfs4/home/raihan
sudo mkdir -p /mnt/test   # as `mountpoint`
sudo chown raihan:raihan /srv/nfs4/home/raihan

# 'Mount' direktori `root`
sudo mount -t nfs4 -o sec=krb5p kdc.archey.loc:/ /mnt/test

# Jalankan ujian dengan menulis fail dalam 'mounted directory'
echo "Hello from kdc.archey.loc" > /mnt/test/home/raihan/greeting.txt

Konfigurasi VM (Debian 13)

Tetapan di Hos

Kemas kini fail eksport

/etc/exports
...

# VM
/srv/nfs4/vmshare   master.debian.vm(rw,sync,no_subtree_check,sec=krb5p)

Cipta Direktori dan Tetapkan Pemilikan

bash
sudo mkdir -p /srv/nfs4/vmshare
sudo chown raihan:raihan /srv/nfs4/vmshare
sudo chmod 700 /srv/nfs4/vmshare

Prinsipal Servis Kerberos

  • Tambahkan prinsipal servis nfs/master.debian.vm@CLUSTER.LOC ke keytab /etc/krb5.keytab di hos.

Proses di VM

Aktifkan Servis

bash
sudo systemctl enable --now nfs-client.target rpc-gssd

Uji sama ada VM dapat bersambung dengan Hos pada port NFS

bash
nmap -p 2049 kdc.archey.loc

Contoh output:

Starting Nmap 7.95 ( https://nmap.org ) at 2025-09-10 18:50 +08
Nmap scan report for kdc.archey.loc (192.168.0.50)
Host is up (0.00043s latency).
PORT STATE SERVICE 2049/tcp open nfs
Nmap done: 1 IP address (1 host up) scanned in 0.04 seconds

Mount Direktori

bash
sudo mkdir -p /mnt/vmshare
sudo mount -t nfs4 -o sec=krb5p kdc.archey.loc:/vmshare /mnt/vmshare

mount | grep nfs4
kdc.archey.loc:/vmshare on /mnt/vmshare type nfs4 (rw,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=krb5p,clientaddr=192.168.0.101,local_lock=none,addr=192.168.0.50)
  • Buat percubaan dengan menulis fail di hos dalam direktori /srv/nfs4/vmshare, manakala di VM, tambah baris entri pada fail yang sama dalam direktori /mnt/vmshare.

Penyelesaian Masalah

  • mount.nfs4: access denied by server → Semak parameter sec=krb5p dan pastikan prinsipal NFS ada dalam keytab.

  • rpc.gssd gagal bermula → Pastikan gssproxy aktif dan keytab boleh dibaca.

  • UID/GID tidak padan → Semak idmapd.conf dan pastikan Domain konsisten dengan REALM atau domain FQDN.


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 (yang patutlah dipendam buat selama-lamanya): Menyanyi dan melukis.

Sumber dari Wallpaper Cave.