User Tools

Site Tools


doc:appunti:linux:sa:nfs

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 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
doc/appunti/linux/sa/nfs.txt · Last modified: 2019/01/23 10:21 by niccolo