Wat is NFS? Netwerkbestandssysteem. Netwerktoegangsprotocol voor bestandssystemen. NFS-serverinstallatie

Het Network File Server (NFS)-protocol is een open standaard voor het bieden van externe gebruikerstoegang tot bestandssystemen. De gecentraliseerde bestandssystemen die erop zijn gebouwd, maken dagelijkse taken zoals back-ups of virusscans eenvoudiger, en geconsolideerde schijfpartities zijn gemakkelijker te onderhouden dan veel kleinere, gedistribueerde partities.

Naast het bieden van gecentraliseerde opslag, heeft NFS bewezen zeer nuttig te zijn voor andere toepassingen, waaronder schijfloze en thin clients, netwerkclustering en middleware-samenwerking.

Een beter begrip van zowel het protocol zelf als de details van de implementatie ervan zal het gemakkelijker maken om met praktische problemen om te gaan. Dit artikel is gewijd aan NFS en bestaat uit twee logische delen: ten eerste beschrijft het het protocol zelf en de doelen die tijdens de ontwikkeling ervan zijn gesteld, en vervolgens de implementatie van NFS in Solaris en UNIX.

WAAR HET ALLEMAAL BEGON...

Het NFS-protocol is ontwikkeld door Sun Microsystems en verscheen in 1989 op internet als RFC 1094 onder de volgende titel: Network File System Protocol Specification (NFS). Het is interessant om op te merken dat de strategie van Novell destijds gericht was op het verder verbeteren van de bestandsservices. Tot voor kort, voordat de open source-beweging een vlucht nam, was Sun terughoudend om de geheimen van zijn netwerkoplossingen prijs te geven, maar zelfs toen begreep het bedrijf het belang van interoperabiliteit met andere systemen.

RFC 1094 bevatte twee originele specificaties. Op het moment van publicatie was Sun al bezig met de ontwikkeling van de volgende, derde versie van de specificatie, die is vastgelegd in RFC 1813 “NFS Version 3 Protocol Specification”. Versie 4 van dit protocol is gedefinieerd in RFC 3010, NFS Versie 4 Protocol.

NFS wordt veel gebruikt op alle typen UNIX-hosts, op Microsoft- en Novell-netwerken en op IBM-oplossingen zoals de AS400 en OS/390. Hoewel onbekend buiten het netwerkkoninkrijk, is NFS misschien wel het meest wijdverspreide platformonafhankelijke netwerkbestandssysteem.

UNIX WAS DE GENESIS

Hoewel NFS een platformonafhankelijk systeem is, is de voorloper ervan UNIX. Met andere woorden, de hiërarchische architectuur van de architectuur en de methoden voor bestandstoegang, inclusief de bestandssysteemstructuur, manieren om gebruikers en groepen te identificeren en technieken voor bestandsverwerking, lijken allemaal sterk op het UNIX-bestandssysteem. Het NFS-bestandssysteem, dat structureel identiek is aan het UNIX-bestandssysteem, wordt er bijvoorbeeld rechtstreeks op aangekoppeld. Bij het werken met NFS op andere besturingssystemen zijn gen bestandstoegangsrechten onderworpen aan mapping.

NFS

NFS is ontworpen voor gebruik in een client-server-architectuur. De client heeft toegang tot het bestandssysteem dat door de NFS-server is geëxporteerd via een koppelpunt op de client. Deze toegang is doorgaans transparant voor de clienttoepassing.

In tegenstelling tot veel client-serversystemen gebruikt NFS Remote Procedure Calls (RPC) om informatie uit te wisselen. Normaal gesproken brengt de client een verbinding tot stand met een bekende poort en verzendt vervolgens, in overeenstemming met het protocol, een verzoek om een ​​specifieke actie uit te voeren. In het geval van externe procedureaanroepen maakt de client een procedureaanroep en stuurt deze vervolgens ter uitvoering naar de server. Een gedetailleerde beschrijving van NFS zal hieronder worden gegeven.

Stel bijvoorbeeld dat een client de map usr2 op het lokale rootbestandssysteem heeft aangekoppeld:

/root/usr2/ -> extern:/root/usr/

Als een clienttoepassing bronnen uit deze map nodig heeft, stuurt deze eenvoudigweg een verzoek naar het besturingssysteem en de bestandsnaam, die toegang verleent via de NFS-client. Neem als voorbeeld het eenvoudige UNIX cd-commando, dat “niets weet” van netwerkprotocollen. Team

Cd /root/usr2/

zal de werkmap op een extern bestandssysteem plaatsen, “zonder zelfs maar te beseffen” (de gebruiker heeft hier ook geen behoefte aan) dat het bestandssysteem extern is.

Na ontvangst van het verzoek zal de NFS-server controleren of de gebruiker het recht heeft de gevraagde actie uit te voeren en bij positief antwoord deze uitvoeren.

Laten we beter leren kennen

Vanuit het oogpunt van de klant bestaat het proces van het lokaal koppelen van een extern bestandssysteem met behulp van NFS uit verschillende stappen. Zoals gezegd zal de NFS-client een externe procedureaanroep uitvoeren om deze op de server uit te voeren. Merk op dat in UNIX de client één enkel programma is (het mount-commando), terwijl de server feitelijk is geïmplementeerd als verschillende programma's met de volgende minimumset: een port mapper-service, een mount-daemon en een NFS-server.

Het client mount-commando communiceert eerst met de poortvertaalservice van de server, die luistert naar verzoeken op poort 111. De meeste implementaties van het client mount-commando ondersteunen meerdere versies van NFS, wat de kans vergroot dat er een gemeenschappelijke protocolversie voor de client en server wordt gevonden. De zoekopdracht wordt uitgevoerd beginnend met de hoogste versie, dus als er een algemene versie wordt gevonden, wordt deze automatisch de nieuwste versie die door de client en server wordt ondersteund.

(Het gepresenteerde materiaal is gericht op de derde versie van NFS, aangezien deze op dit moment de meest verspreide is. De vierde versie wordt nog niet door de meeste implementaties ondersteund.)

De poortvertaalservice van de server reageert op verzoeken op basis van het ondersteunde protocol en de poort waarop de mount-daemon draait. Het mount-clientprogramma brengt eerst een verbinding tot stand met de mount-daemon van de server en geeft er vervolgens via RPC het mount-commando aan. Als deze procedure succesvol is, maakt de clienttoepassing verbinding met de NFS-server (poort 2049) en krijgt via een van de 20 externe procedures die zijn gedefinieerd in RFC 1813 en vermeld in Tabel 1 toegang tot het externe bestandssysteem.

De betekenis van de meeste opdrachten is intuïtief en veroorzaakt geen problemen voor systeembeheerders. De volgende lijst, verkregen met behulp van tcdump, illustreert de leesopdracht geproduceerd door de UNIX cat-opdracht om een ​​bestand met de naam test-file te lezen:

10:30:16.012010 eth0 > 192.168.1.254.

3476097947 > 192.168.1.252.2049: 144 opzoeken fh 32.0/ 224145 "testbestand" 10:30:16.012010 eth0 > 192.168.1.254.

3476097947 > 192.168.1.252.2049: 144 opzoeken fh 32.0/ 224145 "testbestand" 10:30:16.012729 eth0 192.168.1.254.3476097947: antwoord ok 128 opzoeken fh 32.0/224 307 (DF) 10:30: 16.012729 eth0 192.168 .1.254.3476097947: antwoord ok 128 opzoeken fh 32.0/224307 (DF) 10:30:16.013124 eth0 > 192.168.1.254. 3492875163 > 192.168.1.252.2049: 140 gelezen fh 32.0/ 224307 4096 bytes @ 0 10:30:16.013124 eth0 > 192.168.1.254. 3492875163 > 192.168.1.252.2049: 140 lezen fh 32.0/ 224307 4096 bytes @ 0 10:30:16.013650 eth0 192.168.1.254.3492875163: antwoord ok 108 lezen (DF 10:3) 0:16.013650 eth0 192.168.1.254.3492875163 : antwoord ok 108 gelezen (DF)

NFS wordt traditioneel via UDP geïmplementeerd. Sommige versies van NFS ondersteunen echter TCP (TCP-ondersteuning wordt gedefinieerd in de protocolspecificatie). Het belangrijkste voordeel van TCP is een efficiënter mechanisme voor hertransmissie in onbetrouwbare netwerken. (Als er bij UDP een fout optreedt, wordt het volledige RPC-bericht, bestaande uit verschillende UDP-pakketten, opnieuw verzonden. Bij TCP wordt alleen het kapotte fragment opnieuw verzonden.)

NFS-TOEGANG

NFS-implementaties ondersteunen doorgaans vier manieren om toegangsrechten te verlenen: via gebruikers-/bestandskenmerken, op het niveau van gedeelde bronnen, op het niveau van het hoofdknooppunt, en als een combinatie van andere toegangsmethoden.

Met masterknooppunttoegang kunt u een bestandssysteem alleen op specifieke knooppunten aankoppelen, wat over het algemeen een goed idee is, aangezien bestandssystemen eenvoudig kunnen worden aangemaakt op alle NFS-compatibele knooppunten.

Gecombineerde toegang combineert eenvoudigweg de bovenstaande typen (bijvoorbeeld toegang op gedeeld niveau met toegang verleend aan een specifieke gebruiker) of geeft gebruikers alleen toegang tot NFS vanaf een specifiek knooppunt.

NFS IN DE PINGUÏNENSTIJL

Linux-gerelateerd materiaal is gebaseerd op Red Hat 6.2 met kernelversie 2.4.9, die wordt geleverd met nfs-utils versie 0.1.6. Er zijn ook nieuwere versies: op het moment van schrijven is de meest recente update van het nfs-utils-pakket 0.3.1. Het kan worden gedownload van: .

Het nfs-utils-pakket bevat de volgende uitvoerbare bestanden: exportfs, lockd, mountd, nfsd, nfsstat, nhfsstone, rquotad, showmount en statd.

Helaas is NFS-ondersteuning soms een bron van verwarring voor Linux-beheerders, omdat de beschikbaarheid van een bepaalde functie direct afhankelijk is van de versienummers van zowel de kernel als het nfs-utils-pakket. Gelukkig gaan de zaken op dit gebied vooruit, met de nieuwste distributies inclusief de nieuwste versies van beide. Voor eerdere releases biedt Paragraaf 2.4 van de NFS-HOWTO een complete lijst met systeemfunctionaliteit die beschikbaar is voor elke combinatie van kernel en nfs-utils-pakketten. De ontwikkelaars handhaven achterwaartse compatibiliteit van het pakket met eerdere versies, waarbij ze veel aandacht besteden aan het waarborgen van de veiligheid en het elimineren van softwarefouten.

NFS-ondersteuning moet worden gestart tijdens het compileren van de kernel. Indien nodig moet de mogelijkheid om met NFS versie 3 te werken aan de kernel worden toegevoegd.

Voor distributies die linuxconf ondersteunen, is het eenvoudig om NFS-services voor zowel clients als servers te configureren. De snelle manier om NFS te installeren met behulp van linuxconf geeft echter geen informatie over welke bestanden zijn gemaakt of bewerkt, wat erg belangrijk is voor de beheerder om de situatie te kennen in het geval van een systeemfout. De NFS-architectuur op Linux is losjes gekoppeld aan de BSD-versie, zodat de benodigde ondersteunende bestanden en programma's gemakkelijk te vinden zijn voor beheerders die BSD, Sun OS 2.5 of eerdere versies van NFS gebruiken.

Het bestand /etc/exports definieert, net als in eerdere versies van BSD, de bestandssystemen waartoe NFS-clients toegang mogen krijgen. Daarnaast bevat het een aantal extra functies met betrekking tot beheer- en beveiligingskwesties, waardoor de beheerder de mogelijkheid heeft om dit te verfijnen. Dit is een tekstbestand dat bestaat uit vermeldingen, lege regels of regels met commentaar (commentaar begint met het #-symbool).

Laten we zeggen dat we clients alleen-lezen toegang willen geven tot de map /home op het Lefty-knooppunt. Dit zou overeenkomen met de volgende vermelding in /etc/exports:

/home (ro)

Hier moeten we het systeem vertellen welke mappen we toegankelijk gaan maken met behulp van de rpc.mountd mount daemon:

# exportfs -r exportfs: Er is geen hostnaam opgegeven in /home (ro), voer *(ro) in om de waarschuwing te vermijden #

Wanneer het commando exportfs wordt uitgevoerd, geeft het een waarschuwing dat /etc/exports de toegang tot een bepaald knooppunt niet beperkt, en creëert het een corresponderend item in /var/lib/nfs/etab uit /etc/exports waarin wordt aangegeven welke bronnen kunnen worden bekeken met cat :

# cat /var/lib/nfs/etab /home (ro,async,wdelay,hide,secure,root_squash, no_all_squash,subtree_check, secure_locks, mapping=identity,anonuid= -2,anongid=-2)

Andere opties die in etab worden vermeld, zijn onder meer de standaardwaarden die door NFS worden gebruikt. De details zullen hieronder worden beschreven. Om toegang te krijgen tot de map /home, moet u de juiste NFS-services starten:

# portmap # rpc.mountd # rpc.nfsd # rpc.statd # rpc.rquotad

Op elk moment na het starten van de mount-daemon (rpc.mountd) kunt u de individuele bestanden bekijken die beschikbaar zijn voor uitvoer door de inhoud van het bestand /proc/fs/nfs/exports te bekijken:

# cat /proc/fs/nfs/exports # Versie 1.0 # Path Client (Flags) # IP's /home 192.168.1.252(ro,root_squash,async, wdelay) # 192.168.1.252 #

Hetzelfde kan worden bekeken met behulp van de opdracht showmount met de parameter -e:

# showmount -e Exportlijst voor lefty: /home (iedereen) #

Even vooruit: het showmount commando kan ook worden gebruikt om alle aangekoppelde bestandssystemen te bepalen, of met andere woorden, om uit te vinden welke knooppunten NFS-clients zijn voor het systeem dat het showmount commando uitvoert. Het showmount -a commando toont alle client-aankoppelpunten:

# showmount -a Alle mount-punten op lefty: 192.168.1.252:/home #

Zoals hierboven vermeld ondersteunen de meeste NFS-implementaties verschillende versies van dit protocol. Met de Linux-implementatie kunt u de lijst met NFS-versies die kunnen worden gestart beperken door de schakeloptie -N voor de mount-daemon op te geven. Om bijvoorbeeld NFS versie 3 uit te voeren, en alleen versie 3, voert u de volgende opdracht in:

# rpc.gemonteerd -N 1 -N 2

Frequente gebruikers kunnen het ongemakkelijk vinden dat Linux's NFS-daemon (rpc.nfsd) wacht op versie 1- en versie 2-pakketten, hoewel dit het gewenste effect heeft dat het het overeenkomstige protocol niet ondersteunt. Laten we hopen dat de ontwikkelaars van toekomstige versies de nodige correcties zullen aanbrengen en een grotere consistentie zullen kunnen bereiken tussen de componenten van het pakket in relatie tot verschillende versies van het protocol.

"ZWEM MET PINGUÏNEN"

Toegang tot de hierboven geconfigureerde Lefty, een op Linux gebaseerd NFS-exporteerbaar bestandssysteem, is afhankelijk van het clientbesturingssysteem. De installatiestijl voor de meeste besturingssystemen uit de UNIX-familie is dezelfde als die van de originele Sun OS- en BSD-systemen of de nieuwere Solaris. Omdat dit artikel over zowel Linux als Solaris gaat, laten we de Solaris 2.6-clientconfiguratie bekijken vanuit het oogpunt van het tot stand brengen van een verbinding met de Linux-versie van NFS die we hierboven hebben beschreven.

Dankzij functies die zijn overgenomen van Solaris 2.6, kan het eenvoudig worden geconfigureerd om als NFS-client te fungeren. Hiervoor is slechts één commando nodig:

# mount -F nfs 192.168.1.254:/home /tmp/tmp2

Ervan uitgaande dat het vorige mount-commando succesvol was, zal het mount-commando zonder parameters het volgende opleveren:

# mount / on /dev/dsk/c0t0d0s0 read/write/setuid/ largefiles op ma 3 september 10:17:56 2001 ... ... /tmp/tmp2 op 192.168.1.254:/home read/write/remote on ma 3 september 23:19:25 2001

Laten we de tcpdump-uitvoer analyseren die wordt ontvangen op het Lefty-knooppunt nadat de gebruiker de opdracht ls /tmp/tmp2 op het Sunny-knooppunt heeft gegeven:

# tcpdump host lefty en host zonnig -s512 06:07:43.490583 zonnig.2191983953 > lefty.mcwrite.n.nfs: 128 getattr fh Onbekend/1 (DF) 06:07:43.490678 lefty.mcwrite.n.nfs > zonnig. 2191983953: antwoord ok 112 getattr DIR 40755 ids 0/0 sz 0x000001000 (DF) 06:07:43.491397 zonnig.2191983954 > lefty.mcwrite.n.nfs: 132 toegang fh Unknown/10001 (DF) 06:07: 43. 491463 linkshandig. mcwrite.n.nfs > zonnig.2191983954: antwoord ok 120 toegang c0001 (DF) 06:07:43.492296 zonnig.2191983955 > lefty.mcwrite.n.nfs: 152 readdirplus fh 0.1/16777984 1048 bytes @ 0x0000 (DF) 06 :07:43.492417 lefty.mcwrite.n.nfs > zonnig.2191983955: antwoord ok 1000 readdirplus (DF)

We zien dat knooppunt Sunny een bestandshandle (fh) voor ls opvraagt, waarop knooppunt Lefty met OK antwoordt en de directorystructuur teruggeeft. Sunny controleert vervolgens de toestemming om toegang te krijgen tot de inhoud van de map (132 toegang fh) en ontvangt een toestemmingsantwoord van Lefty. De Sunny node leest vervolgens de volledige inhoud van de directory met behulp van de readdirplus-routine. Externe procedureaanroepen worden beschreven in RFC 1813 en worden aan het begin van dit artikel vermeld.

Hoewel de opdrachtenreeks voor toegang tot externe bestandssystemen heel eenvoudig is, kunnen een aantal omstandigheden ertoe leiden dat het systeem niet correct wordt aangekoppeld. Voordat een directory wordt gemount, moet het mountpunt al bestaan, anders moet het worden gemaakt met de opdracht mkdir. Meestal is de enige oorzaak van fouten aan de clientzijde het ontbreken van een lokale mount-directory. De meeste problemen die verband houden met NFS zijn te wijten aan een mismatch tussen de client en de server of een onjuiste serverconfiguratie.

De eenvoudigste manier om problemen op een server op te lossen is vanaf het knooppunt waarop de server draait. Wanneer iemand anders de server voor u beheert, is dit echter niet altijd mogelijk. Een snelle manier om ervoor te zorgen dat de juiste serverservices correct worden geconfigureerd, is door de opdracht rpcinfo te gebruiken met de optie -p. Vanaf de Solaris Sunny-host kunt u bepalen welke RPC-processen op de Linux-host zijn geregistreerd:

# rpcinfo -p 192.168.1.254 programma versus proto port service 100000 2 tcp 111 rpcbind 100000 2 udp 111 rpcbind 100024 1 udp 692 status 100024 1 tcp 694 status 100005 3 udp 1024 mount d /100 005 3 tcp 1024 gemonteerd 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100021 1 udp 1026 nlockmgr 100021 3 udp 1026 nlockmgr 100021 4 udp 1026 nlockmgr #

Merk op dat hier ook versie-informatie wordt gegeven, wat erg handig is als het systeem ondersteuning nodig heeft voor verschillende NFS-protocollen. Als een service niet op de server draait, moet deze situatie worden gecorrigeerd. Als de mount mislukt, helpt de volgende rpcinfo -p opdracht u vast te stellen dat de mountd-service op de server niet actief is:

# rpcinfo -p 192.168.1.254 programma versus proto port service 100000 2 tcp 111 rpcbind ... ... 100021 4 udp 1026 nlockmgr #

Het rpcinfo-commando is erg handig om erachter te komen of een bepaald extern proces actief is. De parameter -p is de belangrijkste van de schakelaars. Om alle functies van rpcinfo te zien, zie de manpagina.

Een ander handig hulpmiddel is de opdracht nfsstat. Met zijn hulp kunt u nagaan of clients daadwerkelijk toegang hebben tot het geëxporteerde bestandssysteem, en ook statistische informatie weergeven in overeenstemming met de protocolversie.

Tenslotte is tcpdump een ander heel handig hulpmiddel om de oorzaken van systeemfouten te bepalen:

# tcpdump host lefty en host Sunny -s512 tcpdump: luisteren op eth0 06:29:51.773646 Sunny.2191984020 > lefty.mcwrite.n.nfs: 140 lookup fh Unknown/1"test.c" (DF) 06:29:51.773819 lefty.mcwrite.n.nfs > zonnig.2191984020: antwoord ok 116 opzoeken FOUT: Bestand of map bestaat niet (DF) 06:29:51.774593 zonnig.2191984021 > lefty.mcwrite.n.nfs: 128 getattr fh Onbekend/1 ( DF) 06:29:51.774670 lefty.mcwrite.n.nfs > zonnig.2191984021: antwoord ok 112 getattr DIR 40755 ids 0/0 sz 0x000001000 (DF) 06:29:51.775289 zonnig.2191984022 > mcwriten. nfs : 140 opzoeken fh Onbekend/1"test.c" (DF) 06:29:51.775357 lefty.mcwrite.n.nfs > zonnig.2191984022: antwoord ok 116 opzoeken FOUT: Bestand of map bestaat niet (DF) 06:29: 51.776029 Sunny.2191984023 > lefty.mcwrite.n.nfs: 184 create fh Unknown/1 "test.c" (DF) 06:29:51.776169 lefty.mcwrite.n.nfs > Sunny.2191984023: antwoord ok 120 create FOUT: Toestemming geweigerd (DF)

De bovenstaande lijst, geproduceerd door het uitvoeren van de touch test.c-instructie, toont de volgende reeks acties: eerst probeert het touch-commando toegang te krijgen tot een bestand met de naam test.c, vervolgens zoekt het naar een map met dezelfde naam, en na mislukte pogingen het probeert een bestand test.c aan te maken, wat ook niet tot succes leidt.

Als het bestandssysteem is aangekoppeld, hebben de meest voorkomende fouten betrekking op normale UNIX-machtigingen. Het gebruik van een uid of NIS+ op Sun helpt voorkomen dat machtigingen globaal op alle bestandssystemen worden ingesteld. Sommige beheerders hanteren 'open' mappen, waar leestoegang wordt gegeven aan 'de hele wereld'. Om veiligheidsredenen moet dit echter vermeden worden. Afgezien van de veiligheidsproblemen is deze aanpak nog steeds een slechte praktijk, omdat gebruikers zelden gegevens creëren met de bedoeling deze voor iedereen leesbaar te maken.

Toegang door een bevoorrechte gebruiker (root) tot aangekoppelde NFS-bestandssystemen wordt anders behandeld. Om te voorkomen dat een bevoorrechte gebruiker onbeperkte toegang krijgt, worden verzoeken van de bevoorrechte gebruiker behandeld alsof ze van de gebruiker niemand afkomstig zijn. Dit krachtige mechanisme beperkt de toegang van bevoorrechte gebruikers tot wereldwijd leesbare en beschrijfbare bestanden.

NFS-SERVER SOLARIS-VERSIE

Het configureren van Solaris om als NFS-server te fungeren is net zo eenvoudig als bij Linux. De opdrachten en bestandslocaties zijn echter enigszins verschillend. Wanneer Solaris opstart, worden bij het bereiken van runlevel 3 automatisch NFS-services gestart en worden alle bestandssystemen geëxporteerd. Om deze processen handmatig te starten, voert u de opdracht in:

#/usr/lib/nfs/mountd

Om de mount-daemon en NFS-server te starten, voert u het volgende in:

#/usr/lib/nfs/nfsd

Vanaf versie 2.6 gebruikt Solaris niet langer een exportbestand om op te geven welke bestandssystemen moeten worden geëxporteerd. De bestanden worden nu geëxporteerd met behulp van de opdracht delen. Laten we zeggen dat we externe hosts willen toestaan ​​/export/home te mounten. Om dit te doen, voert u de volgende opdracht in:

Deel -F nfs /export/home

Beveiligingsmaatregelen

VEILIGHEID IN LINUX

Sommige op Linux gebaseerde NFS-systeemservices hebben een aanvullend mechanisme voor toegangsbeperking via controlelijsten of tabellen. Op intern niveau wordt dit mechanisme geïmplementeerd met behulp van de tcp_wrapper bibliotheek, die twee bestanden gebruikt om toegangscontrolelijsten te genereren: /etc/hosts.allow en /etc/hosts/deny. Een uitputtend overzicht van de regels voor het werken met tcp_wrapper valt buiten het bestek van dit artikel, maar het basisprincipe is als volgt: de vergelijking wordt eerst gemaakt met etc/hosts.allow en vervolgens met /etc/hosts. ontkennen. Als de regel niet wordt gevonden, wordt de gevraagde systeemservice niet gepresenteerd. Om deze laatste vereiste te omzeilen en een zeer hoog beveiligingsniveau te bieden, kunt u de volgende regel aan het einde van /etc/hosts.deny toevoegen:

ALLEN: Allemaal

Hierna kunt u /etc/hosts.allow gebruiken om een ​​of andere bedieningsmodus in te stellen. Het bestand /etc/hosts. allow, dat ik gebruikte bij het schrijven van dit artikel, bevatte de volgende regels:

Vergrendeld:192.168.1.0/255.255.255.0 gekoppeld:192.168.1.0/255.255.255.0 poortkaart:192.168.1.0/255.255.255.0 rquotad:192.168.1.0/255.255.255.0 statd:192.1 68.1.0/255.255.255.0

Hierdoor is een specifiek type toegang tot hosts mogelijk voordat toegang op applicatieniveau wordt verleend. Op Linux wordt de toegang op applicatieniveau beheerd door het bestand /etc/exports. Het bestaat uit vermeldingen in het volgende formaat:

Exportmap (spatie) host|netwerk(opties)

Een "exportmap" is een map waarvoor de nfsd-daemon verzoeken mag verwerken. Een "node|network" is het knooppunt of netwerk dat toegang heeft tot het geëxporteerde bestandssysteem, en de "opties" definiëren de beperkingen die de nfsd-daemon oplegt aan het gebruik van deze gedeelde bron: alleen-lezen toegang of toewijzing van gebruikers-ID's. .

Het volgende voorbeeld geeft het gehele mcwrite.net-domein alleen-lezen toegang tot /home/mcwrite.net:

/home/mcwrite.net *.mcwrite.net(ro)

Meer voorbeelden zijn te vinden op de exportmanpagina.

NFS-BEVEILIGING IN SOLARIS

In Solaris is de mogelijkheid om toegang te verlenen tot NFS vergelijkbaar met die van Linux, maar in dit geval worden beperkingen ingesteld met behulp van bepaalde parameters in het share-commando met de schakeloptie -o. Het volgende voorbeeld laat zien hoe u de alleen-lezen-mount van /export/mcwrite.net op elke host in het mcwrite.net-domein kunt inschakelen:

#share -F nfs -o ro=.mcwrite.net/export/mcwrite.net

De manpagina voor share_nfs-details die toegang verlenen met behulp van controlelijsten op Solaris.

Internetbronnen

NFS en RPC zijn niet zonder gaten. Over het algemeen mag NFS niet worden gebruikt tijdens het surfen op internet. Je kunt geen gaten in firewalls prikken om enige vorm van toegang via NFS toe te staan. Het is belangrijk om eventuele nieuwe RPC- en NFS-patches nauwlettend in de gaten te houden, en talloze bronnen van beveiligingsinformatie kunnen daarbij helpen. De twee meest populaire bronnen zijn Bugtraq en CERT:

De eerste kunt u regelmatig bekijken op zoek naar de benodigde informatie of door u te abonneren op periodieke nieuwsbrieven. De tweede biedt misschien niet zo snel informatie als andere, maar in een redelijk compleet volume en zonder de schaduw van sensatiezucht die kenmerkend is voor sommige sites die zich bezighouden met informatiebeveiliging.

Voor het distribueren van bestanden binnen een lokaal netwerk kunnen de volgende technologieën worden onderscheiden (er wordt gedacht aan Linux-gebaseerde systemen):

  • Network File System (NFS) - netwerktoegangsprotocol voor bestandssystemen;
  • Bestanden overgedragen via het Shell-protocol (FISH) is een netwerkprotocol dat gebruikmaakt van of RSH om bestanden over te dragen tussen computers;
  • Secure SHell FileSystem (SSHFS) - een bestandssysteemclient voor het koppelen van schijfapparaten op externe systemen, gebruikt om te communiceren met het externe systeem SFTP;
  • Samba is een softwarepakket waarmee u via het SMB/CIFS-protocol toegang krijgt tot netwerkschijven en printers op verschillende besturingssystemen;

In deze notitie zullen we het hebben over NFS.

NFS (netwerkbestandssysteem) handig wanneer u bestanden/mappen moet distribueren naar iedereen op het netwerk. Krijg toegang tot transparantie met NFS stelt clients in staat een extern bestandssysteem als een lokale map te koppelen, en de bestandssystemen kunnen van verschillende typen zijn. Dit betekent dat elke clienttoepassing die met een lokaal bestand kan werken, net zo gemakkelijk kan werken met een bestand dat is aangesloten via NFS, zonder enige wijziging aan het programma zelf.

Naar de voordelen NFS kan worden toegeschreven:

  • het verminderen van de belasting van de processor;
  • gedeelde bronnen weergeven als gewone mappen in het systeem;
  • Momenteel beschikbaar NFS v4.1, waarmee een nieuwe functie werd geïntroduceerd pNFS waardoor u de implementatie van het delen van bestanden kunt parallelliseren. Er is ook een uitbreiding voor NFS 2 en 3 - WebNFS, die een eenvoudigere integratie in webbrowsers en de mogelijkheid om via een firewall te werken mogelijk maken.

    Bedieningsschema NFS protocol.

    NFS-server installeren en configureren onder Linux

    Laten we controleren of het systeem NFS ondersteunt

    Cat /proc/bestandssystemen | grep nfs

    Onder Boog Linux server en client bevinden zich in hetzelfde pakket

    Yaourt -S nfs-utils

    Om de server te installeren ( nfs-kernel-server) en klant ( nfs-gemeenschappelijk) onder Ubuntu pakketten nodig

    Sudo apt-get install nfs-kernel-server nfs-common portmap

    Verderop in deze opmerking wordt IP gebruikt voor de server 192.168.1.100 . Om ervoor te zorgen dat altijd hetzelfde IP-adres aan de server wordt toegewezen, is het noodzakelijk om in de DHCP-server (meestal een router) de distributie van een specifiek IP-adres naar een specifiek MAC-adres te specificeren. Of verhoog uw lokale DNS-server. Bijvoorbeeld of.

    Het MAC-adres kunt u vinden met ifconfig (field ether V Boog Linux).

    NFSv4 gaat ervan uit dat er een hoofdmap is, waarin zich al bestanden voor distributie bevinden. Bijvoorbeeld, /srv/nfs- wortel, /srv/nfs/audio- directory voor het distribueren van muziek. Als u deze nieuwe richtlijnen in de versie niet volgt 4 , dan krijgt u mogelijk een foutmelding wanneer u verbinding maakt via de client:

    Mount.nfs: toegang geweigerd door server tijdens het mounten van 192.168.1.100:/home/proft/torrents

    Als u de aanpak toch op de server wilt gebruiken zonder een hoofdmap voor NFS, dan moet u bij montage door de client expliciet de versie opgeven 3

    # voor het mount-commando mount -o "vers=3" 192.168.1.100:/home/proft/torrents /home/proft/nfs/torrents # voor fstab 192.168.1.100:/home/proft/torrents /home/proft/nfs / torrents nfs zacht,nfsvers=3 0 0

    Ik zal gebruiken NFSv4 met hoofdmap erin /srv/nfs/ en het mounten van submappen met behulp van mount --bind .

    Stel dat we dat willen

    • map distribueren ~/torrents Met rw toegang voor iedereen binnen het lokale netwerk;
    • map distribueren ~/foto's Met ro toegang voor host met IP 192.168.1.101 ;

    Laten we eerst een hoofdmap en de benodigde submappen maken.

    Sudo mkdir -p /srv/nfs/(torrents, foto's)

    Mount bestaande mappen torrents, foto's V /srv/nfs.

    # sudo vim /etc/fstab /home/proft/torrents /srv/nfs/torrents geen binding 0 0 /home/proft/photos /srv/nfs/photos geen binding 0 0

    Laten we bewerken /etc/exporten, waarin alle gedeelde mappen worden beschreven

    # sudo vim /etc/exports # bestandsformaat: map toegestane hosts (opties) /srv/nfs/torrents 192.168.1.1/24(rw,async) /srv/nfs/photos 192.168.1.101(ro,async)

    Let op: er zit geen spatie tussen toegestane hosts En (opties). De aanwezigheid van een ruimte introduceert een andere interpretatie van de regels.

    Beschikbare opties:

    • ro (rw) - alleen-lezen toegang toestaan ​​(lezen/schrijven);
    • subtree_check (no_subtree_check) - in sommige gevallen is het nodig om niet de hele sectie te exporteren, maar slechts een deel ervan. In dit geval de server NFS moeten extra controles uitvoeren op clientverzoeken om ervoor te zorgen dat ze alleen toegang proberen te krijgen tot bestanden in de juiste submappen. Dit subboombesturingselement ( subboomcontroles) vertraagt ​​de interactie met klanten enigszins, maar als u dit weigert, kan dit problemen met de systeembeveiliging veroorzaken. U kunt de controle over een subboom annuleren met behulp van de optie no_subtree_check. Optie subboom_check, die een dergelijke controle omvat, wordt standaard aangenomen. Controle van de substructuur kan worden weggelaten als de geëxporteerde map hetzelfde is als een schijfpartitie;
    • sync (async) - specificeert dat de server alleen op verzoeken mag reageren nadat de wijzigingen die door die verzoeken zijn aangebracht naar schijf zijn geschreven. Optie asynchroon vertelt de server niet te wachten tot er informatie naar de schijf is geschreven, wat de prestaties verbetert maar de betrouwbaarheid vermindert bij een verbindings- of apparatuurstoring kan er dataverlies optreden;
    • noaccess - weigert toegang tot de opgegeven map. Dit kan handig zijn als u eerder de toegang voor alle netwerkgebruikers tot een bepaalde map hebt ingesteld, en nu de toegang tot de submap wilt beperken tot slechts enkele gebruikers;
    • no_root_squash – standaardgebruiker wortel op de clientcomputer hebben niet dezelfde rechten op de map op de server. Deze optie heft deze beperking op;
    • niemand verbergen- NFS toont niet automatisch niet-lokale bronnen (bijvoorbeeld aangekoppeld met mount --bind), deze optie maakt de weergave van dergelijke bronnen mogelijk;
    • onveilig - gebruik van onbevoorrechte poorten (> 1024);

    Het starten van de NFS-server

    # onder archlinux sudo systemctl start rpc-idmapd.service rpc-mountd.service # onder ubuntu sudo /etc/init.d/nfs-kernel-server start

    Wanneer u het configuratiebestand in de toekomst wijzigt, leest u het gewoon opnieuw met de opdracht:

    Sudo exportfs -rav

    Commando rpcinfo -p | Met grep nfs kunt u controleren of de server succesvol is gestart.

    Linux-client

    Installatie

    # onder archlinux yaourt -S nfs-utils # onder ubuntu sudo apt-get install portmap nfs-common

    Laten we mappen maken voor het koppelen van netwerkbronnen torrents En foto's

    Mkdir -p ~/nfs/(torrents, foto's)

    Voor handmatige montage zullen we het doen

    Sudo mount -t nfs -o rw,soft 192.168.1.100:/srv/nfs/torrents /home/proft/nfs/torrents sudo mount -t nfs -o rw,soft 192.168.1.100:/srv/nfs/photos /home /proft/nfs/foto's

    Optie zacht geeft aan dat pogingen om verbinding te maken met de share stilzwijgend worden geannuleerd na een bepaalde tijd (de tijd wordt gespecificeerd door de optie opnieuw vertaald). Meer details binnen man nfs.

    Deze methode is niet erg handig, omdat je elke keer na een herstart deze opdrachten moet uitvoeren. Laten we de installatie automatisch maken.

    Bewerk het bestand om automatisch te mounten /etc/fstab

    # sudo vim /etc/fstab 192.168.1.100:/srv/nfs/torrents /home/proft/net/torrents nfs rw,soft 0 0 192.168.1.100:/srv/nfs/photos /home/proft/net/photos nfs ro,zacht 0 0

    Maar deze methode heeft ook zijn nadelen: als de server niet beschikbaar is, kan het laden van de client bijvoorbeeld vastlopen als gevolg van pogingen om verbinding te maken met de NFS-server. Om dit op te lossen, zie hieronder over AutoFS.

    AutoFS - automatische verbinding van netwerkbronnen

    Het is mogelijk om een ​​externe bron te koppelen met behulp van AutoFS bij de eerste toegang en automatisch ontkoppelen als er geen activiteit is.

    AutoFS maakt gebruik van sjablonen in /etc/autofs. Het hoofdsjabloon wordt aangeroepen auto.master, kan het verwijzen naar een of meer andere patronen voor specifieke mediatypen.

    Installatie

    # onder archlinux yaourt -S autofs # onder ubuntu sudo apt-get install autofs

    Er zijn verschillende manieren om automount-methoden op te geven. Ik gebruik deze: in /home/proft/nfs Er wordt automatisch een map aangemaakt met de naam van de NFS-server, waarin automatisch toegankelijke mappen op de server worden aangemaakt.

    # sudo vim /etc/autofs/auto.master /home/proft/nfs /etc/autofs/auto.nfs --timeout=60

    Aanvullende parameter time-out stelt het aantal seconden in waarna het apparaat wordt ontkoppeld. Parameter spook specificeert dat geconfigureerde bronnen altijd worden weergegeven, en niet alleen wanneer ze beschikbaar zijn (deze optie is standaard ingeschakeld in AutoFS 5)

    Wij zullen beschrijven in /etc/autofs/auto.nfs NFS-server en hoofdmap.

    # sudo vim /etc/autofs/auto.nfs nfsserver 192.168.1.100:/srv/nfs

    Nu bij de eerste oproep /home/proft/nfs/torrents De NFS-bron wordt automatisch aangekoppeld.

    Laten we de autofs-service opnieuw starten:

    # onder archlinux sudo systemctl restart autofs # onder ubuntu sudo /etc/init.d/autofs restart

    U kunt ook de wachttijd opgeven voordat een NFS-bron beschikbaar komt. Om dit te doen, moet u de waarden wijzigen MOUNT_WAIT.

    # onder archlinux # sudo vim /etc/conf.d/autofs MOUNT_WAIT=5 # onder ubuntu sudo /etc/default/autofs MOUNT_WAIT=5

    Het forceren van het gebruik van NFS v3

    In sommige gevallen NFSv4 kan langzaam werken. Om dit op te lossen, kunt u het apparaat dwingen de derde versie te gebruiken.

    "en je hebt al een idee over het 'netwerkbestandssysteem', de mogelijkheden en de mate van beveiliging ervan. In dit artikel werd alles echter vooral vanuit het standpunt van de klant begrepen... maar wat moet je doen als je je eigen NFS-server wilt hebben? (let op: “fuck” betekent niet “breken”, maar betekent “installeren en configureren”).

    Welnu, als je zo'n verlangen hebt, dan is de eerste vraag die je jezelf moet stellen: "Waar heeft een geit een accordeon voor nodig?" Voor het installeren van een NFS-server thuis
    nogal zinloos - niemand zal het op prijs stellen, maar als je het geluk hebt beheerder te zijn op het kantoor van de "mannen in het zwart", of in het nieuwerwetse "HOME Network" - dan is het een heel andere zaak...

    Het starten van de server zelf is een vrij eenvoudige zaak; als je het vorige artikel leest, kun je er prima mee omgaan. Je hebt dus de volgende daemons nodig:

    • nfsd - direct protocolonderhoud
      NFS;
    • mountd - onderhoud van mount-operaties;
    • rpc.portmap - RPC-poorten-daemon; nodig omdat verzoeken aan de NFS-server in de vorm van pakketten worden verzonden
      RPC;

    Hoe dit te doen? Het is heel eenvoudig: ga naar het bestand “/etc/rc.d/rc.inet2” en verwijder de commentaren op de overeenkomstige regels. Er kan van worden uitgegaan dat de eerste lancering is voltooid; het zal iets moeilijker zijn om alles op te zetten...
    Het eerste dat moet worden besloten, is wie welke rechten heeft met betrekking tot deze of gene informatie. Dit wordt geconfigureerd via het bestand /etc/exports. Er zijn ‘lees’- en ‘lees-schrijf’-rechten. Hoe je dit instelt, staat beschreven in de "Basisprincipes"
    NFS".

    De tweede is natuurlijk de belasting van de server, d.w.z. aantal actieve gebruikers en hun geschatte verzoeken. Verzoeken aan een NFS-server worden doorgaans in twee typen verdeeld: de eerste is wanneer de client met attributen werkt, de tweede is wanneer de client de gegevens rechtstreeks opvraagt. Verzoeken van het eerste type zijn het zoeken naar een bestand, het lezen van een lijst met machtigingen, enz. U begrijpt natuurlijk dat ze het netwerk licht belasten. Verzoeken van het tweede type zijn de overdracht en ontvangst van bestandsinhoud rechtstreeks van de klant; en dit is waar de vraag rijst: “wat zal worden uitgezonden en hoe vaak?” Dit is vooral relevant als je een 10 Mbit/s-netwerk hebt (om het simpel te zeggen: een standaard Russisch netwerk). Als je het weet, dan is 10 Mbit/s iets meer dan 1 MB per seconde; Als er voortdurend bestanden van tientallen megabytes groot worden overgedragen, zal het netwerk uiteraard eenvoudigweg uitvallen. Als dit uw situatie is, moet u datacaching op de clientcomputer installeren (biod-daemon). Vervolgens zal de client, nadat hij eenmaal een bestand heeft opgevraagd en er opnieuw toegang toe heeft gehad, het niet opnieuw van de server "downloaden", maar het uit de cache halen; tegelijkertijd wordt regelmatig gecontroleerd of het bestand op de server is gewijzigd en als er een wijziging wordt gedetecteerd, wordt het bestand in de cache vervangen door een “nieuwe versie”
    (zoals u begrijpt is het controleren van “is een bestand gewijzigd” een zoekopdracht “op basis van attributen”, die vaak honderden keren kleiner is dan het bestand zelf).

    Welnu: we hebben de NFS-server gelanceerd, de toegangsrechten bepaald, de belasting afgehandeld... Nu hoeft u alleen nog maar de schroef te vullen met de nodige informatie en deze te gebruiken
    NFS-mogelijkheden ten volle...

    In plaats van een conclusie:

    Als u wordt geconfronteerd met de kwestie van het organiseren van gegevensuitwisseling op een netwerk, aarzel dan niet om voor NFS te kiezen - NFS is drie hoofden hoger dan
    FTP steekt met kop en schouders uit boven de “ballonnen” van Windows, en het is niet zo moeilijk om in te stellen...

    Ik geef instructies voor het installeren en configureren van NFS (Network File System). NFS is een netwerkbestandssysteem waarmee u toegang krijgt tot bestanden en mappen op een externe computer (server) alsof deze bestanden en mappen lokaal zijn. Het belangrijkste voordeel van een dergelijk systeem is dat individuele werkstations minder eigen schijfruimte kunnen gebruiken, omdat de gedeelde gegevens op een aparte machine (het datawarehouse) worden opgeslagen en beschikbaar zijn voor andere machines op het netwerk. NFS is een client-servertoepassing waarbij de opslagrol aan de server wordt toegewezen. Elke netwerkdeelnemer is een NFS-client die de netwerkschijf van de server in zijn bestandssysteem koppelt.

    Laten we Ubuntu 12.04 als server nemen.
    We zullen Centos en Winows 7 als clients gebruiken en testen.

    Hoofdserver: 192.168.2.213 (Ubuntu)

    Klanten: 192.168.2.72 (Centos), 192.168.2.180 (Windows)

    Serverconfiguratie

    Eerst moet u de server configureren. Omdat we Ubuntu als server gaan gebruiken, moeten we het juiste pakket installeren

    Root@ubuntu:~# apt-get install nfs-kernel-server

    Na het installeren van de vereiste pakketten hebben we twee configuratiebestanden gemaakt. Uit het installatielogboek:

    ... Configuratiebestand /etc/idmapd.conf maken met nieuwe versie Configuratiebestand /etc/default/nfs-common maken met nieuwe versie ...

    Het eerste bestand beschrijft de gebruiker (aangemaakt tijdens de installatie van het pakket) en de groep die moet deelnemen aan de mapping (gebruikersidentificatie).

    Root@ubuntu:~# cat /etc/idmapd.conf Uitgebreidheid = 0 Pipefs-Directory = /run/rpc_pipefs # stel hier uw eigen domein in, als id verschilt van FQDN minus hostnaam # Domein = localdomain Nobody-User = niemand Nobody-Group = geen groep

    Zoals we weten, behoort elk bestand in Linux toe aan een specifieke gebruiker, die zijn eigen (UID, GID) heeft, maar op Windows-systemen is het schema enigszins anders. En in dit opzicht werd een mappingmechanisme uitgevonden, dat verschillende gebruikers van verschillende besturingssystemen vertaalt naar een vorm die begrijpelijk is voor het Linux-bestandssysteem.
    Het tweede bestand is nodig om Kerberos-authenticatie te configureren en een niet-standaard poort te configureren waarop de daemon zal luisteren. Wij hebben hem nog niet nodig. Het instellen van Kerberos wordt in het volgende artikel besproken.

    Root@ubuntu:~# cat /etc/default/nfs-common # Als u geen waarden instelt voor de NEED_-opties, wordt geprobeerd # automatisch gedetecteerd; dit zou voor de meeste mensen voldoende moeten zijn. Geldige alternatieven # voor de NEED_ opties zijn "ja" en "nee". # Wil je de statd-daemon starten? Voor NFSv4 is dit niet nodig. NEED_STATD= # Opties voor rpc.statd. # Moet rpc.statd op een specifieke poort luisteren? Dit is vooral handig # als u een poortgebaseerde firewall heeft. Om een ​​vaste poort te gebruiken, stelt u deze variabele # in op een statd-argument zoals: "--poort 4000 --uitgaande-poort 4001". # Voor meer informatie, zie rpc.statd(8) of http://wiki.debian.org/SecuringNFS STATDOPTS= # Wilt u de gssd-daemon starten? Het is vereist voor Kerberos-mounts. NEED_GSSD=

    Laten we nu verder gaan met de installatie.
    Alle mappen om te delen moeten geregistreerd zijn in het bestand /etc/exports. Laten we eerst twee mappen in de thuismap maken en de bestanden daarin neerzetten. Boomstructuur van mappen en bestanden voor export:

    Root@ubuntu:~# boom /home/alex/ /home/alex/ ├── nfs_dir1 │ ├── bestand1_dir1 │ ├── bestand2_dir1 │ └── bestand3_dir1 ├── nfs_dir2 ├ ─ ─ bestand1_dir2 ├── bestand2_dir2 └─ ─ bestand3_dir2

    Nu moet u een gebruiker en groep voor deze mappen toewijzen (haal deze uit het bestand /etc/idmapd.conf).

    Root@ubuntu:~# chown –R niemand:nogroup nfs_dir1/ root@ubuntu:~# chown –R niemand:nogroup nfs_dir2/

    Laten we eerst de map nfs_dir1 voor een specifiek IP-adres exporteren. Bewerk het bestand /etc/exprots.

    Root@ubuntu:~# vim /etc/exports # Voor een specifieke host (Windows) /home/alex/nfs_dir1 192.168.2.180(rw,sync,all_squash,no_subtree_check,insecure) # Voor elke host op het subnet /home/alex /nfs_dir2 192.168 .2.0/24(rw,no_root_squash,sync,no_subtree_check)

    Hier vindt u een minimale set opties om de opslag correct te laten werken met Windows OS.

    • /home/alex/nfs_dir1– pad naar de map waarvoor toegang wordt verleend;
    • 192.168.2.180 – IP-adres dat toegang krijgt tot de map (u kunt het hele netwerk opgeven, dan ziet de invoer eruit als 192.168.2.0/24)
    • (rw,sync,all_squash,no_subtree_check)– een reeks opties.

    Populaire opties:

    • rw–lezen/schrijven (kan de waarde ro aannemen - alleen lezen);
    • geen_root_squash– standaard heeft de rootgebruiker op de clientcomputer geen toegang tot de gedeelde map van de server. Met deze optie verwijderen we deze beperking. Uit veiligheidsoverwegingen is het beter om dit niet te doen;
    • synchroniseren– synchrone toegangsmodus (kan de tegenovergestelde waarde aannemen - asynchroon);
    • geen toegang– weigert de toegang tot de opgegeven map. Dit kan handig zijn als u eerder de toegang voor alle netwerkgebruikers tot een bepaalde directory hebt ingesteld, en u nu de toegang tot de subdirectory wilt beperken tot slechts enkele gebruikers.
    • alle_squash– impliceert dat alle verbindingen worden gemaakt vanaf een anonieme gebruiker (nodig voor een Windows-client)
    • anonuid= 1000 – koppelt een anonieme gebruiker aan een “lokale” gebruiker;
    • anongide= 1000 – bindt de anonieme gebruiker aan de “lokale” gebruikersgroep.
    • no_subtree_check(subboom_check)–Als een submap van een bestandssysteem wordt geëxporteerd, maar niet het gehele bestandssysteem, controleert de server of het opgevraagde bestand zich in de geëxporteerde submap bevindt. Het uitschakelen van verificatie vermindert de beveiliging, maar verhoogt de snelheid van de gegevensoverdracht.
    • Normaal gesproken reserveren Linux (en andere Unix-achtige besturingssystemen) TCP- en UDP-poorten van 1-1023 (beveiligde poorten genoemd) voor gebruik door rootgebruikersprocessen. Om ervoor te zorgen dat root de externe NFS-verbinding heeft geïnitieerd, vereist de NFS-server doorgaans dat externe clients beveiligde poorten gebruiken. Deze conventie wordt echter door sommige besturingssystemen (bijvoorbeeld Windows) niet gerespecteerd. In dergelijke gevallen is de optie onzeker Hiermee kan de NFS-client elke TCP/UDP-poort gebruiken. Dit is meestal vereist bij het onderhouden van Windows-clients.

    Alle beschikbare opties en syntaxis voor het schrijven van hosts, hostgroepen, enz. je kunt het in de handleiding lezen

    Root@ubuntu:~# exportfs –a

    Laten we nu eens kijken wat we hebben geëxporteerd.

    Root@ubuntu:~# exportfs -v /home/alex/nfs_dir1 192.168.2.180(rw,wdelay,all_squash,no_subtree_check,insecure) /home/alex/nfs_dir2 192.168.2.0/24(rw,wdelay,no_root_squash,no_subtree_check)

    De server is geconfigureerd.

    Klanten instellen

    Een Windows-client instellen

    Als er geen foutmeldingen waren. U kunt beginnen met de montage aan de clientzijde.
    Eerst moet u een NFS-service (clientservice) toevoegen. Ga hiervoor naar Start -> Configuratiescherm -> Programma's en onderdelen en klik op het menu-item aan de linkerkant Schakel Windows-functies in of uit. Selecteer in het venster dat verschijnt Client voor NFS en klik OK(Afb. 1).


    Figuur 1

    Vervolgens moet je de schijf mounten. Om dit te doen, kunt u de opdrachtregel gebruiken of eenvoudigweg klikken klik met de rechtermuisknop op Deze computer en selecteer Netwerkverbinding maken. EN voer de regel \\192.168.2.213\home\alex\nfs_dir1 in. Dit is het server-IP en het pad naar de map (Fig. 2).


    Figuur 2

    Als alles in orde is, zullen we de schijf zien (Fig. 3).


    Figuur 3

    Hetzelfde kan worden gedaan via de opdrachtregel (Fig. 4).


    Figuur 4

    Mogelijke fouten:

    U kunt geen NFS-netwerkstation verbinden met Windows OS (Afb. 5).
    1. NFS-client is niet geïnstalleerd
    2. Firewall ingeschakeld (niet geconfigureerd)
    3. Geen netwerktoegang tot de server
    4. Verkeerde montageparameters ingevoerd
    5. Export is niet geconfigureerd (de instellingen worden niet toegepast) op de server.
    6. Voeg een onveilige optie toe in de exportinstellingen


    Figuur 5 – Fout bij het verbinden van een NFS-netwerkstation

    U kunt geen bestand toevoegen aan een aangekoppeld bestandssysteem (Afbeelding 6) als:
    1. De maprechten zijn niet ingesteld op de server (niemand:geengroep)
    2. De optie all_squash is niet ingesteld in de exportinstellingen
    3. De rw-optie is niet ingesteld in de exportinstellingen


    Figuur 6 – Fout bij het toevoegen van een bestand aan een NFS-schijf

    Een Centos-client opzetten

    Het opzetten van Linux-systemen is vrij eenvoudig en pijnloos. U hoeft alleen maar de benodigde pakketten te installeren en de schijf te mounten. Centos heeft de volgende pakketten nodig

    # yum installeer nfs-utils nfs-utils-lib

    # mkdir -p /mnt/nfs # mount 192.168.2.213:/home/alex/nfs_dir1 /mnt/nfs # mount /dev/mapper/vg_slave-lv_root aan / type ext4 (rw) proc aan /proc type proc (rw) sysfs op /sys type sysfs (rw) devpts op /dev/pts type devpts (rw,gid=5,mode=620) tmpfs op /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0" ) /dev/sda1 op /boot type ext4 (rw) geen op /proc/sys/fs/binfmt_misc type binfmt_misc (rw) sunrpc op /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) 192.168.2.213:/home/ alex/nfs_dir1 op /mnt/nfs type nfs (rw,vers=4,addr=192.168.2.213,clientaddr=192.168.2.72)

    In dit geval kunnen we elk bestand en elke map toevoegen aan de aangekoppelde map nfs_dir1 namens elke gebruiker op het systeem ( alle_squash). Maar als we de tweede map nfs_dir2 mounten, kan ALLEEN root ernaar schrijven, omdat daar een optie is geen_root_squash. Laten we het controleren.

    # mkdir /mnt/dir1 # mkdir /mnt/dir2 # mount 192.168.2.213:/home/alex/nfs_dir1 /mnt/dir1 # mount 192.168.2.213:/home/alex/nfs_dir2 /mnt/dir2 of # mount -t nfs4 -o rw,hard,intr,bg 192.168.2.213:/home/alex/nfs_dir2 /mnt/dir2 # echo "Hallo" > /mnt/dir1/file1 # echo "Hallo" > /mnt/dir2/file1 # su alex $ echo "Hallo" > /mnt/dir1/file1 $ echo "Hallo" > /mnt/dir2/file1 bash: /mnt/dir2/file1: Toestemming geweigerd

    Mogelijke montagevlaggen.

    Vlag Beschrijving
    rw Mount het bestandssysteem voor lezen/schrijven (het moet door de server worden geëxporteerd in lees-/schrijfmodus)
    e Een alleen-lezen bestandssysteem koppelen
    bg Als het bestandssysteem niet kan worden aangekoppeld (de server reageert niet), moet u de bewerking naar de achtergrond verplaatsen en doorgaan met het verwerken van andere koppelingsverzoeken
    moeilijk Als de server uitvalt, worden bewerkingen die proberen toegang te krijgen, geblokkeerd totdat de server weer online komt
    zacht Als de server uitvalt, mislukken bewerkingen die proberen toegang te krijgen tot de server, met een foutmelding. Deze vlag is handig om in te stellen om te voorkomen dat processen vastlopen in het geval van een mislukte aankoppeling van onbelangrijke bestandssystemen
    intr Hiermee kunt u geblokkeerde bewerkingen vanaf het toetsenbord onderbreken (foutmeldingen worden weergegeven)
    niettr Hiermee kunt u geblokkeerde bewerkingen vanaf het toetsenbord niet onderbreken
    retrans=n Specificeert hoe vaak het verzoek moet worden herhaald voordat er een foutmelding wordt geretourneerd (voor bestandssystemen die zijn aangekoppeld met de zachte vlag)
    tijdo=n Stelt het time-outinterval voor verzoeken in (in tienden van een seconde)
    rgrootte=n Stelt de leesbuffergrootte in op n bytes
    wgrootte=fl Stelt de schrijfbuffergrootte in op n bytes
    sec=modus Stelt de beveiligingsmodus in
    vers=n Stelt de NFS-protocolversie in
    proto = protocol Selecteert het transportprotocol; het zou het TCP-protocol moeten zijn voor NVS versie 4

    U kunt ook vanaf de console controleren of de server het bestandssysteem correct heeft geëxporteerd.

    Root@centos ~# showmount -e 192.168.2.213 Exportlijst voor 192.168.2.213: /home/alex/nfs_dir2 192.168.2.0/24 /home/alex/nfs_dir1 192.168.2.180

    Een mount toevoegen aan het opstarten

    # cat /etc/fstab ... 192.168.2.213:/home/alex/nfs_dir2 /mnt/dir2 nfs4 rw,bg,intr,hard,nodev,nosuid 0 0

    Root@centos ~# mount -a -t nfs4

    Mogelijke fouten.

    Root@centos ~# mount -a -t nfs4 mount.nfs4: mountpunt /mnt/dir2 bestaat niet root@centos ~# mount -a -t nfs4 mount.nfs4: externe share niet in "host:dir"-formaat

    In het eerste geval moet u een map maken. De tweede bevat syntaxisfouten in fstab.
    Als u fouten tegenkomt bij het koppelen van NFS-partities, doorloop dan de lijst Mogelijke fouten uit het vorige gedeelte.
    U kunt autofs ook gebruiken om NFS-partities te mounten. Wat wordt er besproken in .

    NFS, of Network File System, is een populair netwerkbestandssysteemprotocol waarmee gebruikers externe netwerkmappen op hun machine kunnen koppelen en bestanden tussen servers kunnen overbrengen. U kunt de schijfruimte op een andere machine gebruiken voor uw bestanden en werken met bestanden die zich op andere servers bevinden. In wezen is dit een alternatief voor het delen van Windows voor Linux. In tegenstelling tot Samba wordt het op kernelniveau geïmplementeerd en werkt het stabieler.

    Dit artikel gaat over het installeren van nfs op Ubuntu 16.04. We zullen kijken naar het installeren van alle benodigde componenten, het opzetten van een gedeelde map en het verbinden van netwerkmappen.

    Zoals reeds vermeld is NFS een netwerkbestandssysteem. Om te kunnen werken hebt u een server nodig die de gedeelde map host, en clients die de netwerkmap als gewone schijf in het systeem kunnen koppelen. In tegenstelling tot andere protocollen biedt NFS transparante toegang tot externe bestanden. Programma's zullen bestanden zien zoals in een gewoon bestandssysteem en ermee werken zoals met lokale bestanden, nfs retourneert alleen het gevraagde deel van het bestand, in plaats van het hele bestand, dus dit bestandssysteem zal perfect werken op systemen met snel internet of op een lokaal netwerk.

    NFS-componenten installeren

    Voordat we met NFS kunnen werken, zullen we verschillende programma's moeten installeren. Op de machine die de server zal zijn, moet je het nfs-kernel-server-pakket installeren, dat zal worden gebruikt om nfs-shares te openen in ubuntu 16.04. Voer hiervoor het volgende uit:

    sudo apt installeer nfs-kernel-server

    Laten we nu controleren of de server correct is geïnstalleerd. De NFS-service luistert naar verbindingen voor zowel TCP als UDP op poort 2049. Met het commando kun je zien of deze poorten daadwerkelijk in gebruik zijn:

    rpcinfo -p | grep nfs

    Het is ook belangrijk om te controleren of NFS op kernelniveau wordt ondersteund:

    cat /proc/bestandssystemen | grep nfs

    We zien dat het werkt, maar als dat niet het geval is, moet je de nfs-kernelmodule handmatig laden:

    Laten we ook nfs toevoegen aan het opstarten:

    sudo systemctl schakel nfs in

    U moet het nfs-common pakket op de clientcomputer installeren om met dit bestandssysteem te kunnen werken. U hoeft de servercomponenten niet te installeren, alleen dit pakket is voldoende:

    sudo apt installeer nfs-common

    Een NFS-server opzetten op Ubuntu

    We kunnen NFS-toegang tot elke map openen, maar laten we voor dit doel een nieuwe maken:

    clientmap_adres (opties)

    Het mapadres is de map die via het netwerk toegankelijk moet worden gemaakt. Client - IP-adres of netwerkadres van waaruit deze map toegankelijk is. Maar met opties is het iets ingewikkelder. Laten we er een paar bekijken:

    • rw- laat lezen en schrijven in deze map toe
    • ro- alleen-lezen toestaan
    • synchroniseren- reageer alleen op volgende verzoeken als de gegevens op schijf zijn opgeslagen (standaard)
    • asynchroon- blokkeer geen verbindingen terwijl gegevens naar schijf worden geschreven
    • zeker- gebruik alleen poorten onder 1024 voor verbinding
    • onzeker- gebruik alle poorten
    • niet verbergen- verberg submappen niet bij het openen van toegang tot meerdere mappen
    • wortel_pompoen- vervang verzoeken van root door anonieme verzoeken
    • alle_squash- maak alle verzoeken anoniem
    • anoniem En anongide- specificeert de uid en gid voor de anonieme gebruiker.

    Voor onze map kan deze regel er bijvoorbeeld als volgt uitzien:

    /var/nfs 127.0.0.1(rw,sync,no_subtree_check)

    Nadat alles was geconfigureerd, hoefde er alleen nog maar de NFS-exporttabel te worden bijgewerkt:

    sudo exportfs -a

    Dat is alles, het openen van nfs-aandelen in ubuntu 16.04 is voltooid. Laten we nu proberen de client te configureren en te mounten.

    NFS-verbinding

    We zullen in het artikel van vandaag niet in detail op deze kwestie ingaan. Dit is een vrij groot onderwerp dat een eigen artikel verdient. Maar ik zal toch nog een paar woorden zeggen.

    Om een ​​netwerkmap te mounten, heb je geen Ubuntu nfs-client nodig, gebruik gewoon de mount-opdracht:

    sudo mount 127.0.0.1:/var/nfs/ /mnt/

    Nu kunt u proberen een bestand aan te maken in de verbonden map:

    We zullen ook kijken naar de aangekoppelde bestandssystemen met behulp van df:

    127.0.0.1:/var/nfs 30G 6.7G 22G 24% /mnt

    Om dit bestandssysteem uit te schakelen, gebruikt u gewoon de standaard umount:

    sudo umount /mnt/

    Conclusies

    In dit artikel werd het instellen van nfs ubuntu 16.04 besproken, zoals je kunt zien, gebeurt alles heel eenvoudig en transparant. Het verbinden van NFS-shares gebeurt met een paar klikken met behulp van standaardopdrachten, en het openen van nfs-shares in ubuntu 16.04 is niet veel ingewikkelder dan verbinden. Als je vragen hebt, schrijf dan in de reacties!

    Gerelateerde berichten: