NFSv4 dengan Autentikasi Kerberos
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
:
nfs/kdc.archey.loc@CLUSTER.LOC
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 parametersec=krb5p
dan pastikan prinsipal NFS ada dalam keytab.rpc.gssd
gagal bermula → Pastikangssproxy
aktif dan keytab boleh dibaca.UID/GID
tidak padan → Semakidmapd.conf
dan pastikanDomain
konsisten denganREALM
ataudomain FQDN
.