NFS4 exporty, jak to kruci (ne)funguje?

MP

NFS4 exporty, jak to kruci (ne)funguje?
« kdy: 11. 04. 2017, 11:25:42 »
Ahoj,

uz to vubec nechapu. Dokumentace je jasna, ale stejne si to funguje po svem. Takze, jde o nfs4 (o v3 ani neuvazuju do provozu).

Konfigurace serveru je tato (krb5 neni vubec zprovoznen/nakonfigurovan):
Kód: [Vybrat]
/srv/nfs *(rw,fsid=0,sync,subtree_check,root_squash,crossmnt,sec=krb5)
/srv/nfs/export2/proxmox_vmstore2 192.168.X.0/24(rw,fsid=1,sync,subtree_check,no_root_squash,crossmnt,sec=krb5:sys)
/srv/nfs/export3/proxmox_vmstore3 192.168.X.0/24(rw,fsid=2,sync,subtree_check,no_root_squash,crossmnt,sec=krb5:sys)
/srv/nfs/export3/datastore3 192.168.Y.0/24(rw,fsid=2,sync,subtree_check,root_squash,crossmnt,sec=krb5:sys)

Klient z Y:
Kód: [Vybrat]
mount -vv -t nfs4 192.168.X.X:/export3/datastore3 /var/www/wwwroot -o vers=4,minorversion=2,sec=sys
mount.nfs4: timeout set for Tue Apr 11 11:09:48 2017
mount.nfs4: trying text-based options 'minorversion=2,sec=sys,vers=4,addr=192.168.X.X,clientaddr=192.168.Y.Y'
mount.nfs4: mount(2): Operation not permitted
mount.nfs4: trying text-based options 'minorversion=2,sec=sys,addr=192.168.X.X'
mount.nfs4: prog 100003, trying vers=4, prot=6
mount.nfs4: trying 192.168.X.X prog 100003 vers 4 prot TCP port 2049
mount.nfs4: prog 100005, trying vers=3, prot=17
mount.nfs4: trying 192.168.X.X prog 100005 vers 3 prot UDP port 55804
mount.nfs4: mount(2): Operation not permitted
mount.nfs4: Operation not permitted

Log serveru:
Kód: [Vybrat]
Apr 11 11:00:15 stor-01 rpc.mountd[13577]: Received NULL request from 192.168.Y.Y
Apr 11 11:00:15 stor-01 rpc.mountd[13577]: check_default: access by 192.168.Y.Y ALLOWED (cached)
Apr 11 11:00:15 stor-01 rpc.mountd[13577]: nfsd_export: found 0x564dafac98c0 path /srv/nfs
Apr 11 11:00:15 stor-01 rpc.mountd[13577]: nfsd_export: inbuf '*,192.168.Y.0/24 /srv/nfs'
Apr 11 11:00:15 stor-01 rpc.mountd[13577]: auth_unix_ip: client 0x564dafae9290 '*,192.168.Y.0/24'
Apr 11 11:00:15 stor-01 rpc.mountd[13577]: auth_unix_ip: inbuf 'nfsd 192.168.Y.Y'

Klient z Y to nenamountuje. Pokud pouziju:
Kód: [Vybrat]
/srv/nfs *(rw,fsid=0,sync,subtree_check,root_squash,crossmnt,sec=krb5:sys)
Tak to klient z Y namountuje. Ale to umozni pristup pres sec=sys do celeho nfs4 stromu a to nechci. Nechapu to hlavne z toho duvodu, ze klient z X (proxmox node, taktez nfs4) s tim problem absolutne nema?! Proxmox muzu (un)mountovat sec=sys libovolne a absolutne v tomhle je bezproblemovy. Proc klient Y nedokaze pouzit sys?


MP

Re:NFS4 exporty, jak to kruci (ne)funguje?
« Odpověď #1 kdy: 11. 04. 2017, 11:34:04 »
Jeste bych doplnil:

showmount -e (srv i klient) (nfs3 check)
Kód: [Vybrat]
Export list for X.X:
/srv/nfs *
/srv/nfs/export3/datastore3 192.168.Y.0/24
/srv/nfs/export3/proxmox_vmstore3 192.168.X.0/24
/srv/nfs/export2/proxmox_vmstore2 192.168.X.0/24

Sten

Re:NFS4 exporty, jak to kruci (ne)funguje?
« Odpověď #2 kdy: 11. 04. 2017, 12:03:04 »
Máte stejné fsid pro /srv/nfs/export3/proxmox_vmstore3 a /srv/nfs/export3/datastore3, takže NFS server si myslí, že se klient pokouší připojit /srv/nfs/export3/proxmox_vmstore3, k čemuž nemá oprávnění, tak to fallbackuje na /srv/nfs.

MP

Re:NFS4 exporty, jak to kruci (ne)funguje?
« Odpověď #3 kdy: 11. 04. 2017, 12:13:59 »
Máte stejné fsid pro /srv/nfs/export3/proxmox_vmstore3 a /srv/nfs/export3/datastore3, takže NFS server si myslí, že se klient pokouší připojit /srv/nfs/export3/proxmox_vmstore3, k čemuž nemá oprávnění, tak to fallbackuje na /srv/nfs.

Takze to fsid se tedy pouziva v pripade debianu presne pro jake ucely? Myslel jsem, ze pouze pro rozliseni rozdilnych fs/disku.

Ceho se snazim dosahnout. Mam na serveru 2xR1 pole, muze jich byt vice. Jedno pole je ciste pro VM, druhe pole je VM a data. Dalsi budouci R1 bud opet kombinace, nebo specificky ucel.

Takze v pripade pole per ucel by to melo by takhle?
/srv/nfs fsid=0
/srv/nfs/R1_A fsid=1
/srv/nfs/R1_B fsid=2
atd...

V pripade pole s vice ucely by to melo byt takhle?
/srv/nfs fsid=0
/srv/nfs/R1_A fsid=1
/srv/nfs/R1_B_subdir1 fsid=2
/srv/nfs/R1_B_subdir2 fsid=3

Diky, uz se s tim morim peknych par dnu.

Sten

Re:NFS4 exporty, jak to kruci (ne)funguje?
« Odpověď #4 kdy: 11. 04. 2017, 12:21:30 »
fsid je unikátní identifikátor exportu, v NFS paketech se neposílá cesta k exportu, ale jen fsid. NFS server pak na základě toho aplikuje nastavení (ověří autorizaci ap.) a převede relativní cestu na absolutní.

Pokud fsid nezadáte, NFS načte nějaké ID z fyzického FS (typicky UUID či číslo zařízení). Pokud je každý export na jiném fyzickém FS, pak bude mít každý unikátní fsid a nemusíte nic uvádět. Ale pokud jde o podadresáře v jednom fyzickém FS, pak by oba měly stejné fsid a je nutné je uvést explicitně.


MP

Re:NFS4 exporty, jak to kruci (ne)funguje?
« Odpověď #5 kdy: 11. 04. 2017, 12:42:06 »
OK. Zkouska:

Kód: [Vybrat]
/srv/nfs/export3/datastore3 192.168.Y.0/24(rw,fsid=3,sync,subtree_check,root_squash,crossmnt,sec=krb5:sys)
Stale nic :/ stejna chyba, resp. zaznam v logu.

MP

Re:NFS4 exporty, jak to kruci (ne)funguje?
« Odpověď #6 kdy: 11. 04. 2017, 12:47:54 »
Tak po restartu proxmoxoveho node se taky nemohl pripojit. Takze jsem zmenil na

Kód: [Vybrat]
/srv/nfs *(...sec=krb5,sys)

Coz je ale v kolizi s potrebou mit blokovany pristup z hlediska dat a zaroven mit pro hypervizory neblokovany. Pokud dobre nfs4 chapu, tak s timto nastavenim lze namountovat libovolnou cast stromu, ktera neni definovana v /etc/export...