Guida completa: installare e configurare NFS su AlmaLinux 9

Questa guida mostra come installare e configurare un server NFS e un client su AlmaLinux 9: installazione dei pacchetti nfs-utils, creazione e condivisione di directory via /etc/exports, apertura dei servizi necessari in firewalld, montaggio manuale e automatico tramite /etc/fstab e verifiche di lettura/scrittura. Include checklist operative, suggerimenti per sicurezza e risoluzione dei problemi.
Introduzione: cos’è NFS
NFS (Network File System) è un protocollo che permette a utenti locali e macchine client di accedere a file e directory su server remoti come se fossero locali. Originariamente sviluppato da Sun Microsystems, NFS è uno standard consolidato per la condivisione di file in ambienti centralizzati.
Definizione rapida: NFS espone file system remoti tramite rete TCP/IP permettendo montaggi su client e operazioni di I/O come se fossero dischi locali.
Importante: NFS non fornisce cifratura nativa; per scenari sensibili valutare tunnel (VPN) o alternative come NFS su Kerberos o soluzioni di storage distribuito con crittografia.
H2: Panoramica dell’esercitazione
Obiettivi pratici:
- Installare nfs-utils su server e client AlmaLinux 9 (compatibile con altre distribuzioni RHEL-based);
- Configurare /etc/idmapd.conf e /etc/exports sul server;
- Creare directory condivise e impostare permessi adeguati;
- Aprire i servizi necessari con firewalld;
- Montare manualmente sul client e configurare l’automount tramite /etc/fstab;
- Verificare lettura e scrittura e fornire checklist di sicurezza e risoluzione problemi.
Varianti di intento correlate: installare NFS su RHEL, configurare NFS con Kerberos, montaggio NFS in fstab, hardening NFS, debugging NFS.
Prerequisiti
- Un server AlmaLinux 9 con accesso root o un utente con sudo. Nell’esempio il server ha hostname
almalinux9-server
e IP 192.168.10.15. - Uno o più client (qualsiasi distribuzione RHEL-based andrà bene).
- Connettività di rete tra client e server e firewalld avviato se in uso.
Nota: se usate ambienti cloud o reti con restrizioni, verificate che le porte RPC e NFS siano raggiungibili (vedi box “Porte e servizi”).
Installare NFS Server e Client
Su server e client installare il pacchetto nfs-utils presente nel repository AppStream:
sudo dnf install nfs-utils
Configurare idmapd (mappatura utenti)
Aprire il file /etc/idmapd.conf e impostare il dominio; questo aiuta la risoluzione degli user/group tra client e server. Esempio con nano:
sudo nano /etc/idmapd.conf
Modificare la riga Domain in modo che rispecchi il FQDN o il nome host del server:
Domain = almalinux9-server
Salvare ed uscire.
Avviare e abilitare il servizio NFS
sudo systemctl start nfs-server
sudo systemctl enable nfs-server
sudo systemctl status nfs-server
Se il servizio è attivo vedrete lo stato “active (running)”.
Creare e configurare le directory condivise
Creare le directory che si intendono condividere:
sudo mkdir -p /mnt/shared /mnt/backup
Impostare proprietà e permessi di base:
sudo chown -R nobody:nobody /mnt/shared /mnt/backup
sudo chmod 775 /mnt/shared /mnt/backup
Nota: l’utente nobody è comunemente usato per condivisioni generiche. Per scenari con utenti reali valutate l’uso di UID/GID coerenti o di idmap/SSO.
Configurare /etc/exports
Aprire /etc/exports e aggiungere le righe di condivisione. Nell’esempio condividiamo /mnt/backup
e /home
per un client specifico (192.168.10.21) e /mnt/shared
per l’intera rete 192.168.10.0/24:
sudo nano /etc/exports
Inserire:
/mnt/backup 192.168.10.21(rw,sync,no_subtree_check)
/home 192.168.10.21(rw,sync,no_root_squash,no_subtree_check)
/mnt/shared 192.168.10.0/24(rw,sync,no_subtree_check)
Spiegazione delle opzioni principali:
- rw: lettura e scrittura abilitata;
- sync: scrive i dati su disco prima di rispondere al client (maggiore sicurezza, più latenza);
- no_subtree_check: disabilita il subtree checking per migliorare le prestazioni;
- no_root_squash: preserva i privilegi root del client nella directory condivisa (usare con cautela).
Salvare e chiudere il file, poi applicare le modifiche riavviando NFS:
sudo systemctl restart nfs-server
sudo exportfs -v
exportfs -v
lista le directory esportate e le opzioni applicate.
Porte e servizi (fact box)
Porte e servizi NFS comuni (default):
- rpcbind (portmap): TCP/UDP 111
- NFS (nfs): TCP/UDP 2049
- mountd: porta dinamica gestita da rpcbind (configurabile)
- nlockmgr, statd e altri RPC: porte dinamiche
Importante: aprite i servizi tramite firewalld o il vostro firewall di rete; il comando d’esempio apre i servizi comuni (vedi sezione firewall).
Proteggere NFS con firewalld
Aprite i servizi RPC/NFS con firewalld e ricaricate la configurazione:
sudo firewall-cmd --add-service={nfs,nfs3,mountd,rpc-bind} --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
Verificate che le zone e i servizi siano quelli corretti e che il traffico sia permesso tra client e server.
Nota: in ambienti più restrittivi consigliabile limitare l’accesso per IP e usare regole di zona specifiche.
Configurare il client NFS
Sul client installare nfs-utils se non già presente:
sudo dnf install nfs-utils
Verificare le condivisioni offerte dal server:
sudo showmount -e 192.168.10.15
Dovreste vedere /mnt/backup
, /mnt/shared
e /home
come nell’esempio.
Creare i punti di mount locali sul client e montare manualmente:
sudo mkdir -p /data /backup /shared
sudo mount 192.168.10.15:/mnt/backup /backup
sudo mount 192.168.10.15:/mnt/shared /shared
sudo mount 192.168.10.15:/home /data
Verificare con df -h:
sudo df -h
Verificare l’accesso in scrittura dal client
Sul client creare file di test nelle directory montate:
echo "This file from client" > /backup/test-write1.txt
echo "This file from client" > /shared/test-write2.txt
echo "This file from client" > /data/alice/test-write3.txt
Quindi tornare sul server e verificare che i file siano presenti nelle directory esportate:
cat /mnt/backup/test-write1.txt
cat /mnt/shared/test-write2.txt
cat /home/alice/test-write3.txt
Se tutto funziona i contenuti appariranno sul server.
Configurare l’automount via /etc/fstab sul client
Smontare le condivisioni attive prima di modificare fstab:
sudo umount /data /backup /shared
sudo df -h
Modificare /etc/fstab e aggiungere le righe per le condivisioni NFS. Personalizzate IP e percorsi secondo il vostro ambiente:
sudo nano /etc/fstab
Esempio di righe fstab:
192.168.10.15:/mnt/backup /backup nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
192.168.10.15:/mnt/shared /shared nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
192.168.10.15:/home /data nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
Spiegazione rapida delle opzioni fstab utili:
- auto: montare al boot (o quando si usa mount -a);
- nofail: non interrompere il boot se il mount fallisce (utile per laptop o reti intermittenti);
- noatime: migliora le prestazioni evitando aggiornamenti di atime;
- nolock: disabilita file locking (usare con cautela);
- intr: consente di interrompere operazioni pendenti (opzione storica);
- actimeo=1800: caching delle attribuzioni per 1800 secondi (regola la coerenza).
Salvare il file e applicare i mount:
sudo mount -a
sudo df -h
Dopo il riavvio il client monterà automaticamente le condivisioni specificate.
Controlli e prove (Test cases / acceptance criteria)
- Il servizio nfs-server è attivo: systemctl status nfs-server => active (running).
- exportfs -v mostra le directory esportate con le opzioni desiderate.
- showmount -e
da client mostra le stesse esportazioni. - mount (o df -h) mostra le condivisioni montate sul client.
- Creazione di file sul client è visibile sul server e viceversa (controllo contenuto con cat).
- Riavvio del client monta automaticamente le condivisioni specificate in /etc/fstab.
Seguridad y buone pratiche (sicurezza e hardening)
Importante: trattare NFS come un servizio di rete non cifrato se non adeguatamente protetto. Raccomandazioni:
- Limitare l’accesso alle reti/IP necessari nelle regole di /etc/exports;
- Evitare no_root_squash se non richiesto; preferire mapping UID/GID coerenti;
- Considerare NFS su Kerberos (sec=krb5/krb5i/krb5p) per autenticazione e integrità/confidenzialità;
- Usare firewall per restringere i servizi RPC alle sole subnet di gestione;
- Monitorare i log: /var/log/messages, journalctl -u nfs-server;
- Per dati sensibili usare cifratura a livello di trasporto (VPN) o cifratura a riposo.
Nota GDPR/Privacy: se su condivisioni transitano dati personali, applicare controlli di accesso, logging e cifratura secondo la normativa locale.
Migrazione e compatibilità
- NFSv3 è largamente supportato; NFSv4 migliora autenticazione, sicurezza e performance. Verificate la versione supportata da client e server con
nfsstat -s
orpcinfo -p
. - Se migrate da Samba/SMB o da soluzioni cloud, valutate differenze in permessi e locking.
Troubleshooting comune (edge-case gallery)
Problema: client non vede le esportazioni
- Verificare che rpcbind sia attivo su server:
systemctl status rpcbind
. - Controllare che
exportfs -v
mostri le esportazioni. - Verificare il firewall e le regole di rete.
Problema: permessi file non corrispondono
- Controllare UID/GID su server e client; usare idmap o sincronizzare UID/GID.
- Controllare opzioni come no_root_squash.
Problema: mount lento o timeouts
- Verificare opzioni in fstab come noatime, actimeo e scegliere tra TCP vs UDP (TCP è raccomandato);
- Monitorare rete e latenza.
Problema: lock o file bloccati
- Verificare servizi rpc-statd, nlockmgr; usare
rpcinfo -p
per vedere le porte.
Ruoli e checklist operative
Amministratore di sistema (server):
- Installare nfs-utils e avviare nfs-server.
- Configurare /etc/idmapd.conf Domain.
- Creare directory e impostare permessi coerenti.
- Definire /etc/exports con restrizioni IP e opzioni appropriate.
- [ ] Aggiornare firewall e verificare
exportfs -v
.
Amministratore client / DevOps:
- Installare nfs-utils sul client.
- Verificare showmount -e
. - Creare punti di mount e testare mount manuale.
- Aggiungere righe in /etc/fstab con opzioni nofail se necessario.
- Eseguire test di scrittura e lettura e automatizzare i controlli.
Sicurezza/Compliance:
- Verificare esposizioni di rete e limitare gli IP autorizzati.
- Valutare Kerberos e cifratura per dati sensibili.
- Abilitare logging e retention in conformità alle policy.
Mini-metodologia di rollout in produzione
- Ambiente di test: replicare server NFS e almeno un client in laboratorio.
- Validare performance e integrazione applicativa (lock, throughput).
- Definire policy UID/GID o idmap centralizzato.
- Applicare regole di firewall e RBAC. Eseguire scan di sicurezza.
- Procedere a rollout graduale (canary) per ridurre impatto di regressioni.
- Monitorare metriche: IOPS, latenza I/O, errori NFS e riavvii dei servizi.
Mermaid decision flow (scelta della soluzione NFS vs alternative):
flowchart TD
A[Hai bisogno di condivisione file di rete?] --> B{Richiedi sicurezza criptata?}
B -- No --> C[NFS standard 'valuta NFSv4']
B -- Sì --> D{Vuoi autenticazione forte 'Kerberos'?}
D -- Sì --> E[NFSv4 con Kerberos 'sec=krb5/krb5i/krb5p']
D -- No --> F[VPN o tunnel TLS + NFS]
C --> G[Valuta limitazioni UID/GID e firewall]
E --> G
F --> G
Esempi rapidi e snippet (cheat sheet)
Montare manualmente (comando rapido):
sudo mount -t nfs -o rw,hard,intr 192.168.10.15:/mnt/shared /shared
Lista esportazioni server:
sudo exportfs -v
Lista export visibile dal client:
sudo showmount -e 192.168.10.15
Verificare porte RPC e servizi:
rpcinfo -p 192.168.10.15
Log utili:
journalctl -u nfs-server -b
tail -n 200 /var/log/messages
Conclusione
Hai configurato con successo un server NFS e un client su AlmaLinux 9, impostando le esportazioni, aprendo i servizi sul firewall, montando le condivisioni manualmente e automaticamente via /etc/fstab e verificando l’accesso in lettura/scrittura. Prima di mettere in produzione, applica le pratiche di hardening descritte e testa i casi limite con i tuoi carichi di lavoro.
Importante: per scenari enterprise con dati sensibili o bisogni di auditing avanzato, considera NFSv4 con Kerberos o soluzioni di storage che offrono cifratura e controllo accessi più granulare.
Riepilogo rapido
- Installa nfs-utils su server e client;
- Configura /etc/idmapd.conf e /etc/exports;
- Avvia e abilita nfs-server; apri le porte con firewalld;
- Monta manualmente le condivisioni e verifica la scrittura;
- Configura /etc/fstab per automount; applica misure di sicurezza.
Risorse consigliate
- Manuale
man exports
,man nfs
eman rpcbind
per opzioni avanzate; - Documentazione ufficiale della distribuzione per parametri firewall e gestione dei servizi.