====== 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