NFS kasutamine Debianiga

Allikas: Kuutõrvaja

Sissejuhatus

NFS (Network File System) failisüsteemi töötas 1984 aastal välja Sun Microsystems ja seda toetavad erineval määral paljud operatsioonisüsteemid sh Linux ja BSD. Protokollist on levinud mitmeid versioone, 2010 aastal valdavalt v3 ja v4, Debian Lenny paketihaldus sisaldab tarkvara NFSv3 ja NFSv4 kasutamiseks. Linuxi NFSv4 http://nfs.sourceforge.net/ on protokolli http://tools.ietf.org/html/rfc3530 implementatsioon.

Tööpõhimõte

NFS (Network File System) võimaldab ühe arvuti failisüsteemi kasutada teisest arvutist. NFS serveri ülesanne on jagada võrgus olevatele NFS klientidele serveri failisüsteemi sealjuures kontrollitakse, millisele osale NFS serveri failisüsteemist millised kliendid ligi pääsevad ja milliste privileegidega.

NFS puhul on oluline asjaolu, et võrku jagatakse olemasolevat failisüsteemi, mis võib iseenesest olla nt ext3 võis xfs kusjuures võrku välja jagatud failisüsteem on serveris külge-monteeritud olekus ning kasutatav.

NFS tarkvara paigaldamine

Üldiselt Debiani kasutajal ei ole vaja NFS tarkvara ise kompileerida, kõik praktiliselt vajalik on paketihaldusest kättesaadav, nt Debian Lenny tuum on seadistatud NFS osas selliselt

 # grep NFS /boot/config-2.6.26-2-amd64
 CONFIG_NFS_FS=m
 CONFIG_NFS_V3=y
 CONFIG_NFS_V3_ACL=y
 CONFIG_NFS_V4=y
 CONFIG_NFSD=m
 CONFIG_NFSD_V2_ACL=y
 CONFIG_NFSD_V3=y
 CONFIG_NFSD_V3_ACL=y
 CONFIG_NFSD_V4=y
 CONFIG_NFS_ACL_SUPPORT=m
 CONFIG_NFS_COMMON=y
 CONFIG_NCPFS_NFS_NS=y

NFS server

NFS serveri tarkvara esineb kahel kujul, nfs-user-server ja nfs-kernel-server, antud juhtumil tutvustatakse nfs-kernel-serveri kasutamist. Serveri tarkvara paigaldamiseks tuleb öelda

 # apt-get install nfs-kernel-server

NFS klient

NFS kliendile vajaliku tarkvara paigaldamiseks tuleb öelda

# apt-get install nfs-common

NFSv3 kasutamine

NFSv3 võimaldab ühe arvuti failisüsteemi kasutada teisest arvutist, kusjuures kliendi autentimine toimub ip aadressi ja kasutaja UID põhiselt.

NFSv3 server

NFS serveri seadistusfailis /etc/exports kirjeldatakse, milliseid katalooge oma failisüsteemist NFS server võrku jagab ja milliste ligipääsupiirangutega. Nt selline rida

 # cat /etc/exports
 /srv/home 192.168.10.0/24(rw,no_root_squash,async,no_subtree_check)

jagab välja selliste omadustega ressursi

  • /srv/home - milline kataloog võrku jagatakse
  • 192.168.10.0/24 - võrgu arvutid saavad kasutada
  • rw - kataloog on kasutajatele loetav ja kirjutatav
  • no_root_squash - nfs kliendi juurkasutajal on nfs ressursi suhtes nö tavalised juurkasutaja privileegid
  • async - nfs failisüsteemi kasutatakse asünkroonselt, st nfs klient ei oota nfs serverilt kinnitust, et muudatused on jõudnud serveri failisüsteemi

NFSv3 klient

Ressursi monteerimiseks sobib öelda

# mount 10.0.9.19:/srv/home /srv/home

või lisada /etc/fstab faili rida

10.0.9.19:/srv/home /srv/home nfs defaults 0 0

NFSv4 kasutamine ilma Kerberoseta

NFSv4 kasutamisel võrrelded varasema versiooniga on iseloomulik

  • kliendi ja serveri poolel peab töötama idmapd deemon
  • väljajagatud ressursi poole pöördumisel kasutatakse nö virtuaalset juurikat, mida seadistusfailis tähistab fsid=0

NFSv4 server

Seadistusfailis /etc/default/nfs-common peab sisalduma rida

NEED_IDMAPD=yes

Seadistusfailis /etc/exports näidatakse, millised ressursid kuidas välja jagatakse, nt

/srv       192.168.10.0/24(rw,fsid=0,insecure,no_subtree_check,async)
/srv/home  192.168.10.0/24(rw,nohide,insecure,no_subtree_check,async)

Muudatuste kehtestamiseks tuleb öelda

# /etc/init.d/nfs-kernel-server restart

NFSv4 klient

Seadistusfailis /etc/default/nfs-common peab sisalduma rida

NEED_IDMAPD=yes

Serveri ressursi monteerimiseks tuleb öelda nt

# mount -t nfs4 nfs-server:/home /home

või kasutada /etc/fstab failis rida

nfs-server:/home /home nfs4 rw 0 0

NFSv4 kasutamine Kerberosega

NFSv4 üks oluline eelis varasemate versioonide ees on võimalus kasutada teda koos Kerberosega ja korraldada nii oluliselt turvalisem andmevahetus.

Eesmärk

Olgu skeemis kolm osalist

  • Kerberose server
  • Failiserver nfs-server.loomaaed
  • Failiserveri klient nfs-klient.loomaaed
     kerberos.loomaaed 
          ___
         |   | krb5kdc - 88/tcp
         |___| kadmind - 749/tcp
           |   /etc/krb5kdc/principal
           |
       ----|----------|-------------------------|---
                      |                         |
                    __|__                     __|__
                   |     | /tmp/krb5cc_1000  |     |  /etc/krb5.keytab
                   |_____|                   |_____|

              nfs-klient.loomaaed        nfs-server.loomaaed

Kerberose ettevalmistamine

Eeldame, et käesoleva teksti kasutajal on üldiselt on Kerberose kasutamisest ettekujutus olemas, nt teksti MIT Kerberose kasutamine Debianiga põhjal, ja Kerberose server on juurutatud.

Lisaks tuleb Kerberose serveri seadistusfaili /etc/krb5.conf sektsiooni [libdefaults] lisada rida

[libdefaults]
  ....
  allow_weak_crypto = true

ja muudatuste kehtestamiseks öelda

# /etc/init.d/krb5-admin-server restart
# /etc/init.d/krb5-kdc restart

NFSv4 server

NFSv4 serverisse tuleb lisaks paigaldada paketid

# apt-get install nfs-kernel-server krb5-config krb5-user libkadm55

ning seadistada /etc/krb5.conf faili sisu nt nii nagu Kerberose serveris. Lisaks tuleb registreerida Kerberose andmebaasis NFS teenusele vastav osapool öeldes NFS serveris

# kadmin -p root/admin -q "addprinc -randkey nfs/nfs-server.loomaaed"

Seejärel tuleb kopeerida NFS serveri failisüsteemi NFS serverile vastav saladus

# kadmin -p root/admin -q "ktadd -e des-cbc-crc:normal -k /etc/krb5.keytab nfs/nfs-server.loomaaed"

NFS serveri seadistusfailis /etc/default/nfs-kernel-server peab sisalduma rida

NEED_SVCGSSD=yes

ja seadistusfailis /etc/default/nfs-common rida

NEED_IDMAPD=yes

NFS tuleb ressurss välja jagada nt selliselt

# cat /etc/fstab
/srv/nfs4        gss/krb5p(rw,sync,fsid=0,insecure,no_subtree_check)
/srv/nfs4/homes  gss/krb5p(rw,nohide,sync,insecure,no_subtree_check)

kusjuures gss/krb5p kohal saab kasutada selliseid väärtusi

  • gss/krb5 - autentimine
  • gss/krb5i - terviklikkus
  • gss/krb5p - privaatsus

Seadistuste kehtestamiseks tuleb restartida nfs-kernel-server öeldes

# /etc/init.d/nfs-kernel-server restart
...
Exporting directories for NFS kernel daemon....
Starting NFS kernel daemon: nfsd svcgssd.

NFSv4 klient

NFSv4 klienti tuleb lisaks paigaldada paketid

# apt-get install nfs-kernel-common krb5-config krb5-user libkadm55

ning seadistada /etc/krb5.conf faili sisu nt nii nagu Kerberose serveris. Lisaks tuleb registreerida Kerberose andmebaasis NFS teenusele vastav osapool öeldes NFS serveris

# kadmin -p root/admin -q "addprinc -randkey nfs/nfs-klient.loomaaed"

Seejärel tuleb kopeerida NFS kliendi failisüsteemi NFS kliendile vastav saladus

# kadmin -p root/admin -q "ktadd -e des-cbc-crc:normal -k /etc/krb5.keytab nfs/nfs-klient.loomaaed"

NFS kliendi seadistusfailis /etc/default/nfs-common peavad sisalduma read

NEED_IDMAPD=yes
NEED_GSSD=yes

Muudatuste kehtestamiseks tuleb uuesti startida nfs-commons öeldes

# /etc/init.d/nfs-common restart
...
Starting NFS common utilities: statd idmapd gssd.

Ressursi kasutamiseks sobib juurkasutajal öelda

# mount -t nfs4 -o sec=krb5p nfs-server.loomaaed:/home /srv/home

või kasutada NFS kliendi /etc/fstab failis rida

nfs-server.loomaaed:/home /srv/home nfs4 rw,sec=krb5p 0 0

Ja seejärel saab kasutaja oma TGT pileti olemasolul pääseda juurde oma nfs andmetele kataloogi /srv/home/priit

Alternatiiviks on, et kasutaja ise ühendab oma ressurssi külge nfs serverist

$ mount -t nfs4 -o sec=krb5p,users nfs-server.loomaaed:/home/priit /home/priit/nfs

Märkused

  • Probleemide jälitamiseks sobib kasutada failis /etc/default/nfs-common rida
RPCGSSDOPTS="-vvv"

ning failis /etc/default/nfs-kernel-server rida

RPCSVCGSSDOPTS="-vvv"
  • Kui on ebaselge, miks /etc/fstab failis kirjeldatud ressursse ei ühendata külge, maksab vaadata, kas konsoolile ei kirjutata
if-up.d/mountnfs[eth0]: lock /var/run/network/mountnfs exist, not mounting ... failed!

ning tuleks eemaldada mainitud kataloog, mis tõenäoliselt jäi süsteemi krahhist vms sündmusest.

  • Tundub, et üldiselt saab NFS klient aru, kui NFS serverist välja jagatud ressurssi online'is suurendatakse. Põhjusel, et NFS klient kasutab NFS serveri teenust nö objektipõhiselt, mitte plokkseadme või failisüsteemi kui tervikuna.

Kasulikud lisamaterjalid