====== Condivisione NFS e firewall ======
Un server NFS ha il demone ''**portmapper**'' sempre in ascolto sulle porte **111 tcp** e **111 udp**, il servizio ''**nfs**'' usa la porta **2049 udp**. Con il comando
# rpcinfo -p localhost
program vers proto port
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 32111 status
100024 1 tcp 32111 status
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100021 1 udp 32771 nlockmgr
100021 3 udp 32771 nlockmgr
100021 4 udp 32771 nlockmgr
100005 1 udp 32032 mountd
100005 1 tcp 32032 mountd
100005 2 udp 32032 mountd
100005 2 tcp 32032 mountd
100005 3 udp 32032 mountd
100005 3 tcp 32032 mountd
Possiamo vedere che esistono altri servizi in ascolto su altre porte. Ad esempio l'NFS mount daemon ''**mountd**'' tradizionalmente chiamato ''**rpc.mountd**'' attende le richieste di mount, generalmente ascolta su una porta casuale assegnata dal ''**portmapper**''.
Per poter aprire il firewall su una sola porta bisogna forzare ''**rpc.mountd**'' con il parametro ''**%%--port%%**''. In Debian Sarge si aggiunge a ''**/etc/default/nfs-kernel-server**'' una riga del tipo
RPCMOUNTDOPTS="--port 32032"
Anche l'NFS ''**status**'' monitor chiamato tradizionalmente ''**rpc.statd**'', si pone in ascolto su una porta casuale assegnata dal portmapper. Per determinarla si mette in ''**/etc/default/nfs-common**'' l'opzione:
STATDOPTS="--port 32111"
Infine ''**nlockmgr**'' (chiamato anche ''**rpc.lockd**'') utilizza due porte scelta casualmente, una **udp** e una **tcp**. Per determinarla si deve passare l'opportuno parametro al kernel; se il supporto NFS è compilato staticamente nel boot manager si aggiunge quanto segue alla riga **kernel**:
lockd.nlm_udpport=32771 lockd.nlm_tcpport=32771
Altrimenti se il supporto NFS è compilato come modulo si aggiunge un file **''/etc/modprobe.d/local''** con questa riga:
options lockd nlm_udpport=32771 nlm_tcpport=32771
===== NFS Permission denied: troppi gruppi! =====
Se cercate di accedere ad una directory NFS dove avete permessi grazie al gruppo ed ottenete un **''Permission denied''**, controllate **a quanti gruppi appartenete**! Sembra che ci sia un **limite a 16 gruppi**.
Verificato su Linux 2.6.26 e NFS versione 3.
Cercare //user is in too many groups// in **[[http://hell.org.ua/Docs/oreilly/tcpip2/nfs/ch12_04.htm|NFS security]]**.
===== NFS problema di versione =====
Può essere che durante il montaggio di una risorsa NFS sul client si manifesti questo errore (si è utilizzata l'opzione **%%-v%%** di mount):
mount.nfs: trying text-based options 'vers=4.2,addr=10.0.0.210,clientaddr=10.0.0.112'
mount.nfs: mount(2): Protocol not supported
mount.nfs: trying text-based options 'vers=4.1,addr=10.0.0.210,clientaddr=10.0.0.112'
mount.nfs: mount(2): Input/output error
mount.nfs: mount system call failed
Sul server non si riscontrano errori evidenti. Potrebbe essere un problema di versione, nel nostro caso il server ha **NFS v. 1.2.2** mentre il client ha **NFS v. 1.3.4** (Debian 6.0 e Ubuntu 18.04 rispettivamente).
Si forza la version 3 del protocollo NFS in **/etc/fstab**:
nis-server:/nfshome /nfshome nfs defaults,nfsvers=3 0 0
quindi il montaggio avviene correttamente:
mount.nfs: trying text-based options 'nfsvers=3,addr=10.0.0.210'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: trying 10.0.0.210 prog 100003 vers 3 prot TCP port 2049
mount.nfs: prog 100005, trying vers=3, prot=17
mount.nfs: trying 10.0.0.210 prog 100005 vers 3 prot UDP port 53361