Comprensione di NFS4 (server Linux)


26

Sono stato un po 'infastidito da NFS4 su Linux. Alcune informazioni "là fuori" sembrano essere in conflitto con altre informazioni e altre informazioni sembrano difficili da trovare. Quindi ecco un paio di cose che hanno attirato la mia attenzione, si spera che qualcuno là fuori possa far luce su questo.

Questa domanda si concentra esclusivamente su NFS4 senza Kerberos ecc.

1. Esportazioni

Ci sono informazioni ambigue nella exportsmanpage sulla struttura di / etc / exports.

Per citare da exports(5):

Inoltre, ogni riga può avere una o più specifiche per le opzioni predefinite dopo il nome del percorso, sotto forma di un trattino ("-") seguito da un elenco di opzioni.

L'elenco delle opzioni viene utilizzato per tutte le esportazioni successive solo su quella riga.

Che cosa significa "successive esportazioni solo su quella linea"?

1.2 fsid=0non è più richiesto?

Stavo cercando fsid quando ho trovato un commento nell'elenco linux-nfs che afferma che fsid = 0 non è più necessario. Ora sono solo confuso, ne ho bisogno con nfs4 o no ?!

2. Directory non esportata ancora montabile

Di 'che ho il seguente albero:

/exp
/exp/users
/exp/distr
/exp/distr/archlinux
/exp/distr/debian

E ho le seguenti voci in questa voce fstab:

/dev/disk/by-label/users  /mnt/users  ext4  defaults  0  0
/dev/disk/by-label/distr  /mnt/distr  ext4  defaults  0  0
/mnt/users                /exp/users  none  bind      0  0
/mnt/distr                /exp/distr  none  bind      0  0

E le mie esportazioni sono esattamente queste:

/exp       192.168.1.0/24(fsid=0,rw,async,no_subtree_check,no_root_squash)
/exp/distr 192.168.1.0/24(rw,async,no_subtree_check,no_root_squash)

E exportfs -arvmostra:

exporting 192.168.1.0/24:/exp/distr
exporting 192.168.1.0/24:/exp

Quindi perché sono in grado di farlo e non ottenere alcun errore su un client:

mount -t nfs4 server:/exp/users /tmp/test

Anche se /exp/usersnon viene esportato? Non ho esportato questa directory e anche se non vedo il contenuto, a /dev/disk/by-label/usersmeno che non lo specifichi crossmnt, sono ancora in grado di scrivere nella directory. Tutto ciò a cui scrivo va nella directory sottostante di /exp/userscui si può vedere quando umount /exp/users; ls /exp/users..

3. Il caso strano di showmount -d server

Come indicato da rpc.mountd(8), questo comando dovrebbe visualizzare le directory che sono attualmente montate dai client o voci non aggiornate in /var/lib/nfs/rmtab, come si può leggere:

Il demone rpc.mountd registra ogni richiesta MNT corretta aggiungendo una voce al file / var / lib / nfs / rmtab. Quando si riceve una richiesta UMNT da un client NFS, rpc.mountd rimuove semplicemente la voce corrispondente da / var / lib / nfs / rmtab, purché l'elenco di controllo di accesso per quell'esportazione consenta a quel mittente di accedere all'esportazione.

(...)

Si noti, tuttavia, che c'è poco da garantire che i contenuti di / var / lib / nfs / rmtab siano accurati. Un client può continuare ad accedere a un'esportazione anche dopo aver richiamato UMNT. Se il client si riavvia senza inviare una richiesta UMNT, le voci non aggiornate rimarranno per quel client in / var / lib / nfs / rmtab.

Dopo aver letto questo mi chiedo sicuramente:

  1. Non è terribilmente insicuro esporre questo tipo di informazioni sul cliente;
  2. Gli amministratori del server non sono consapevoli di avere un rmtab con molti client non aggiornati;
  3. È questo il motivo per cui i client che montano le directory nfs4 mount -vpossono vedere un output come "nulla è stato montato" anche se è stato montato qualcosa ?

Ho molte altre domande su nfs4, ma lo terrò per il momento .. :)


Forse l'elenco di esportazione non piace il tuo strano filesystem montato su bind. Prova prima con / mnt / users ...
jirib,

Si tratta di nfs4, che richiede un "pseudo file system", ovvero una gerarchia di file system ad un albero. Puoi chiarire cosa intendi, per favore?
Drumfire

Questa pagina wiki afferma anche che fsid = 0 non è più necessario: wiki.linux-nfs.org/wiki/index.php/… , ma "man export" implica ancora che è necessario
SystemParadox

1
Vorrei dire che sostengo questa domanda. Come te ho osservato molte delle stesse cose e ho la stessa domanda e altro ancora. Sembra un casino di merda.
Ciclone

1
Troppe domande in un post. @drumfire, potresti per favore scomporlo in post-domande separati più semplici?
Victor Yarema,

Risposte:


7

Grandi domande, evidenzia un punto più grande con la documentazione IMO. Ecco un tentativo di risposta completa:

Che cosa significa "successive esportazioni solo su quella linea"?

Un esempio è probabilmente il più semplice qui:

/export/stuff -rw 10.0.0.54 10.0.0.55

è equivalente a:

/export/stuff 10.0.0.54(rw) 10.0.0.55(rw)

Non fsid=0è più richiesto?

Questo dipende dal tuo caso d'uso. Sembra che tu stia esportando normali filesystem basati su disco dal resto della tua query, in quel caso è meglio lasciar perdere fsid=0(che in nfsv4 cambia il comportamento in riferimento al filesystem di root dell'esportazione).

Per modificare questo comportamento, rimuovere l'opzione no_subtree_check


rmtabcose correlate

  • La gestione di rmtabun rischio per la sicurezza?
    Immagino che dipenda dal tuo caso d'uso rispondere che, sulla mia rete, non presenta una perdita di informazioni credibile ma posso vedere casi in cui potrebbe potenzialmente.
  • Non rmtabsarà pieno di voci stantie?
    Potenzialmente sì, sempre in base allo scenario di distribuzione / al caso d'uso.
  • È per questo che alcuni client che eseguono mount -verroneamente vedono "non è stato montato nulla"?
    Non l'ho ancora trovato
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.