Επιστροφή στο blog

Ρύθμιση προσάρτησης NFS στο Ubuntu 20.04

Ρύθμιση προσάρτησης NFS στο Ubuntu 20.04

Το Network File System (NFS) είναι μια λύση κατανεμημένης αποθήκευσης. Είναι ένα πρωτόκολλο συστήματος αρχείων που επιτρέπει την προσάρτηση απομακρυσμένων καταλόγων στον τοπικό διακομιστή και τη χρήση τους σαν να ήταν τοπικός αποθηκευτικός χώρος. Το NFS επιτρέπει σε πολλούς πελάτες να μοιράζονται απομακρυσμένο αποθηκευτικό χώρο. Είναι κατάλληλο για περιβάλλοντα που απαιτούν τακτικά κοινόχρηστους πόρους. Το NFS βασίζεται στο σύστημα ONC RPC (Open Network Computing Remote Procedure Call). Είναι ένα ανοιχτό πρότυπο που ορίζεται στο RFC (Request for Comments). Αυτό επιτρέπει σε οποιονδήποτε να εφαρμόσει το πρωτόκολλο.

Σε αυτόν τον οδηγό, θα δούμε τα βήματα εγκατάστασης και παραμετροποίησης μιας προσάρτησης NFS στο Ubuntu 20.04.

Προαπαιτούμενα

Όπως υποδηλώνει η περιγραφή του NFS, υπάρχουν δύο μέρη στη διαμόρφωση του NFS:

  • Host: Αποθηκεύει φυσικά τα δεδομένα και μοιράζεται τον αποθηκευτικό χώρο με συστήματα «client».

  • Client: Το σύστημα που συνδέεται στον «host» και χρησιμοποιεί τον απομακρυσμένο αποθηκευτικό χώρο σαν να ήταν τοπικός.

Για την παρουσίασή μας, θα χρησιμοποιήσουμε δύο διακομιστές, και οι δύο ρυθμισμένοι με Ubuntu 20.04. Ορίστε ένας εύκολος οδηγός για το πώς να εγκαταστήσετε τον διακομιστή Ubuntu. Σε όλο τον οδηγό, αυτοί οι διακομιστές θα αναφέρονται ως ο host και ο client. Σημειώστε ότι η ενέργεια για τον client θα είναι η ίδια ακόμα κι αν υπάρχουν περισσότεροι από ένας.

Στους διακομιστές έχουν εκχωρηθεί οι ακόλουθες διευθύνσεις IP. Αυτοί οι διακομιστές φιλοξενούνται από την CloudSigma:

  • host: 31.171.240.79

  • client: 31.171.250.109

Βεβαιωθείτε ότι θα τις αντικαταστήσετε με τις κατάλληλες διευθύνσεις IP.

Εγκατάσταση του NFS

Το NFS είναι άμεσα διαθέσιμο από τα επίσημα αποθετήρια του Ubuntu. Υπάρχουν διαφορετικά πακέτα λογισμικού για τα συστήματα host και client .

  • Εγκατάσταση του NFS στον host

Στον host, χρειαζόμαστε τα στοιχεία που εξοπλίζουν το μηχάνημα ώστε να λειτουργεί ως NFS host. Παρέχεται με τη μορφή του πακέτου nfs-kernel-server. Το Ubuntu χρησιμοποιεί το APT ως διαχειριστή πακέτων. Αρχικά, εκκινήστε το τερματικό και ενημερώστε τη βάση δεδομένων πακέτων APT :

Server Apt Update

Στη συνέχεια, εγκαταστήστε το πακέτο nfs-kernel-server. Εάν είναι απαραίτητο, το APT θα φροντίσει για τυχόν πρόσθετες εξαρτήσεις:

Install nfs kernel server

  • Εγκατάσταση του NFS στον client

Στο σύστημα client, χρειαζόμαστε τη δυνατότητα σύνδεσης στους καταλόγους του host μέσω του δικτύου. Δεν απαιτείται η λειτουργικότητα του διακομιστή NFS. Στο Ubuntu, είναι ενσωματωμένη στο πακέτο nfs-common. Ενημερώστε τη βάση δεδομένων πακέτων APT :

Client apt update

Στη συνέχεια, εγκαταστήστε το πακέτο nfs-common package:

Install nfs common

Κοινόχρηστοι κατάλογοι στον Host

Στη συνέχεια, θα μοιραστούμε δύο ξεχωριστούς καταλόγους, ο καθένας με διαφορετική διαμόρφωση. Θα δείξουμε δύο βασικούς τρόπους με τους οποίους λειτουργούν οι προσαρτήσεις NFS όσον αφορά την πρόσβαση υπερχρήστη (superuser). Από προεπιλογή, οι υπερχρήστες έχουν την εξουσία να εκτελούν οτιδήποτε σε ολόκληρο το σύστημα. Ωστόσο, οι κατάλογοι που έχουν προσαρτηθεί μέσω NFS δεν αποτελούν μέρος του συστήματος στο οποίο είναι προσαρτημένοι. Ο διακομιστής NFS θα αρνηθεί να εκτελέσει οποιαδήποτε λειτουργία απαιτεί προνόμια υπερχρήστη. Αυτός ο περιορισμός σημαίνει ότι οι πελάτες δεν έχουν καμία εξουσία να γράφουν, να εκχωρούν εκ νέου ιδιοκτησίες και να εκτελούν άλλες εργασίες υπερχρήστη στις προσαρτήσεις NFS.

Είναι δυνατό να επιτραπεί σε ορισμένους έμπιστους χρήστες να εκτελούν αυτές τις εργασίες στα προσαρτημένα συστήματα αρχείων. Ωστόσο, αυτό ενέχει κάποιο κίνδυνο, καθώς ένας τέτοιος client μπορεί ενδεχομένως να αποκτήσει πλήρη πρόσβαση στον host. Αυτό μπορεί να μετριαστεί με τη σωστή διαχείριση δικαιωμάτων χρηστών. Στο Linux, το αρχείο sudoers ελέγχει όλα τα προνόμια των χρηστών στο σύστημα. Για περισσότερες πληροφορίες, μπορείτε να ρίξετε μια ματιά στον οδηγό μας για το πώς να διαμορφώσετε το αρχείο sudoers στο Linux.

  • Προσάρτηση γενικής χρήσης

Το πρώτο παράδειγμα θα είναι μια προσάρτηση NFS γενικής χρήσης με τις προεπιλεγμένες συμπεριφορές του NFS. Σε αυτήν την προσέγγιση, είναι εξαιρετικά δύσκολο για τον client να εκτελέσει ενέργειες υπερχρήστη στις προσαρτήσεις. Αυτός ο τύπος προσάρτησης NFS χρησιμοποιείται συνήθως για αποθήκευση αρχείων, μεταφόρτωση με χρήση CMS (Content Management System) ή κοινή χρήση αρχείων έργου κ.λπ.

Τα ακόλουθα βήματα πρέπει να εκτελεστούν στο σύστημα host. Αρχικά, δημιουργήστε έναν κατάλογο για κοινή χρήση με την ετικέτα nfs:

Create nfs general dir

Καθώς ο κατάλογος δημιουργήθηκε με sudo δικαιώματα, ο ιδιοκτήτης θα είναι ο root:

List nfs general

Ως προεπιλεγμένη ρύθμιση, το NFS θα μεταφράσει οποιαδήποτε λειτουργία root από την πλευρά του πελάτη στα nobody:nogroup διαπιστευτήρια για λόγους ασφαλείας. Για συνέπεια, αλλάξτε την ιδιοκτησία του καταλόγου ώστε να ταιριάζει με τα διαπιστευτήρια:

Change owner nogroup

  • Αρχικός κατάλογος

Το δεύτερο παράδειγμα είναι να καταστήσουμε τον αρχικό κατάλογο του χρήστη host διαθέσιμο για τους πελάτες. Οι έμπιστοι διαχειριστές από τους επιλεγμένους πελάτες μπορούν να έχουν πρόσβαση για την εύκολη διαχείριση των χρηστών. Ο /home κατάλογος υπάρχει από προεπιλογή, επομένως δεν χρειάζεται να δημιουργήσετε κάποιον κατάλογο. Όσον αφορά τα δικαιώματα του καταλόγου, δεν χρειάζεται να κάνετε αλλαγές καθώς αυτό θα προκαλέσει περισσότερα προβλήματα παρά οφέλη.

Διαμόρφωση των NFS Exports

Οι κατάλογοι προς κοινή χρήση έχουν πλέον δημιουργηθεί. Στη συνέχεια, το NFS πρέπει να ρυθμιστεί ώστε να τους καταστήσει διαθέσιμους στους πελάτες. Το NFS χρησιμοποιεί ένα αρχείο ρυθμίσεων για να παρακολουθεί ποιους καταλόγους θα μοιραστεί. Ανοίξτε το ακόλουθο αρχείο ρυθμίσεων NFS στο πρόγραμμα επεξεργασίας κειμένου της επιλογής σας:

exports file

Η ενότητα των σχολίων του αρχείου περιγράφει τη γενική δομή σύνταξης της διαμόρφωσης. Εν συντομία, οποιοσδήποτε κατάλογος πρέπει να δηλωθεί στην ακόλουθη μορφή:

Για τους δύο καταλόγους που αποφασίσαμε να μοιραστούμε, η διαμόρφωση θα μοιάζει με αυτό. Και οι δύο κατάλογοι έχουν σχεδόν τις ίδιες επιλογές διαμόρφωσης:

exports file mod

Ακολουθεί μια γρήγορη ανάλυση των επιλογών διαμόρφωσης:

  • rw: Παρέχεται στον πελάτη δικαίωμα ανάγνωσης και εγγραφής στον τόμο.

  • sync: Αναγκάζει το NFS να εγγράψει τις αλλαγές στον δίσκο πριν απαντήσει. Προσφέρει μια πιο σταθερή και συνεπή εμπειρία. Η απάντηση θα αντικατοπτρίζει την πραγματική κατάσταση του απομακρυσμένου τόμου. Ωστόσο, οι λειτουργίες αρχείων θα είναι πιο αργές.

  • no_subtree_check: Αποτρέπει τον έλεγχο υποδέντρου (subtree checking). Εάν δεν απενεργοποιηθεί, οι κεντρικοί υπολογιστές θα αναγκάζονται να ελέγχουν την ύπαρξη του αρχείου στο εξαγόμενο δέντρο για κάθε μεμονωμένο αίτημα από τον πελάτη. Αυτό μπορεί να οδηγήσει σε πολλά προβλήματα, για παράδειγμα, τη μετονομασία ενός αρχείου ενώ ο πελάτης το χρησιμοποιεί. Στις περισσότερες περιπτώσεις, η απενεργοποίηση των ελέγχων υποδέντρου είναι η ενδεδειγμένη λύση.

  • no_root_squash: Όπως αναφέρθηκε προηγουμένως, το NFS θα μεταφράσει οποιοδήποτε αίτημα από τον απομακρυσμένο χρήστη root σε έναν μη προνομιούχο χρήστη. Αυτό είναι ένα επιδιωκόμενο χαρακτηριστικό ασφαλείας για την αποτροπή ανεπιθύμητης πρόσβασης στο σύστημα υποδοχής. Ωστόσο, η χρήση αυτής της επιλογής θα απενεργοποιήσει αυτήν τη συμπεριφορά.

Αποθηκεύστε το αρχείο ρυθμίσεων και βγείτε από το πρόγραμμα επεξεργασίας. Για να τεθούν σε ισχύ οι αλλαγές, επανεκκινήστε τον διακομιστή NFS:

Restart nfs kernel server

Προσαρμογή του Firewall

Για κάθε διακομιστή, η σωστή διαμόρφωση του τείχους προστασίας (firewall) είναι απαραίτητη. Υποθέτοντας ότι έχετε ρυθμίσει ανάλογα τον διακομιστή Ubuntu 20.04, το τείχος προστασίας UFW θα πρέπει να είναι ενεργό. Είναι ένα απλό αλλά ισχυρό τείχος προστασίας με το οποίο συνοδεύονται οι περισσότερες διανομές Linux. Για αρχάριους, εδώ είναι ένας γρήγορος οδηγός explaining UFW, how it works, and common UFW usage with examples.

Από προεπιλογή, το τείχος προστασίας θα αποκλείει κάθε εισερχόμενη και εξερχόμενη κίνηση. Για να διασφαλίσουμε ότι ο διακομιστής NFS μπορεί να συνδεθεί και να ανταλλάξει κίνηση σωστά, πρέπει να προσθέσουμε μια εξαίρεση για το πρωτόκολλο NFS. Αρχικά, ελέγξτε την κατάσταση του τείχους προστασίας. Θα εκτυπώσει επίσης όλους τους τρέχοντες κανόνες:

ufw status

Όπως μπορούμε να δούμε, μόνο η κίνηση SSH επιτρέπεται στο σύστημα. Πρέπει να προσθέσουμε μια εξαίρεση για να επιτρέψουμε την κίνηση NFS.

Στις περισσότερες περιπτώσεις, συνιστάται ανεπιφύλακτα να χρησιμοποιείτε τον πιο περιοριστικό κανόνα που εξακολουθεί να επιτρέπει την απαραίτητη κίνηση. Έτσι, θα επιτρέψουμε μόνο στους επιλεγμένους πελάτες να συνδεθούν στον κεντρικό υπολογιστή:

ufw allow ports

Μετά από αυτό, ελέγξτε ξανά την κατάσταση του τείχους προστασίας:

ufw status after change

Δημιουργία σημείου προσάρτησης

Ο διακομιστής είναι τώρα έτοιμος να επιτρέψει στο σύστημα client να συνδεθεί στο πρωτόκολλο NFS. Στη συνέχεια, πρέπει να προετοιμάσουμε τον client. Για να αποκτήσετε πρόσβαση στον απομακρυσμένο τόμο, πρέπει να προσαρτηθεί τοπικά στον client. Όσον αφορά το σημείο προσάρτησης, συνιστάται η χρήση ενός αποκλειστικού άδειου καταλόγου.

Για τους δύο απομακρυσμένους τόμους, δημιουργήστε δύο ξεχωριστά σημεία προσάρτησης:

Create client nfs general directory

Create client nfs home directory

Τώρα που τα σημεία προσάρτησης είναι έτοιμα, πρέπει να προσαρτήσετε τους απομακρυσμένους τόμους:

Mount general directory on client

Mount home directory on client

Μπορούμε να επαληθεύσουμε εάν οι προσαρτήσεις ήταν επιτυχείς. Ελέγξτε τη λίστα με όλους τους προσαρτημένους τόμους:

Disk free in client

Βουαλά! Οι απομακρυσμένοι τόμοι προσαρτήθηκαν με επιτυχία. Μπορούμε επίσης να ελέγξουμε τη χρήση του χώρου χρησιμοποιώντας την ακόλουθη εντολή:

Disk usage in client home

Δοκιμή πρόσβασης NFS

Μέχρι στιγμής, οι απομακρυσμένοι τόμοι έχουν προσαρτηθεί σωστά. Ωστόσο, δεν θα έχει καμία χρησιμότητα εάν ο πελάτης δεν μπορεί να διαβάσει/γράψει δεδομένα στον απομακρυσμένο τόμο. Για να το επαληθεύσετε, δημιουργήστε ένα εικονικό αρχείο στις προσαρτήσεις NFS. Εδώ, το αρχείο θα δημιουργηθεί με δικαιώματα root για να ελεγχθεί εάν οι ρυθμίσεις που αφορούν το root λειτουργούν σωστά:

Create file in nfs

Στη συνέχεια, ελέγξτε την ιδιοκτησία του αρχείου:

Check ownership of file created

Όπως μπορούμε να δούμε, το NFS μεταφράζει τον ιδιοκτήτη του αρχείου σε nobody:nogroup. Ο κατάλογος /var/nfs/ general ανήκει στο nobody:nogroup, επομένως το NFS μεταφράζει την ιδιοκτησία του αρχείου. Ώρα να δοκιμάσετε την άλλη προσάρτηση NFS:

Create home file

Ελέγξτε την ύπαρξη και την ιδιοκτησία του αρχείου:

Check ownership of home file

Σε αυτήν την περίπτωση, το NFS δεν μετέφρασε την ιδιοκτησία του αρχείου. Αυτός ο πελάτης ρυθμίστηκε ώστε να μπορεί να εκτελεί διοικητικές ενέργειες. Επιπλέον, ο αρχικός κατάλογος host directory /home δεν ανήκει στο nobody:nogroup.

Πρόσθετα κόλπα

  • Προσάρτηση κατά την εκκίνηση

Μέχρι στιγμής, έπρεπε να προσαρτήσουμε χειροκίνητα τον τόμο NFS σε έναν τοπικό κατάλογο. Εάν δεν αποπροσαρτηθούν, οι προσαρτήσεις NFS θα διαρκέσουν μέχρι την επανεκκίνηση του συστήματος. Εάν ο τόμος NFS χρησιμοποιείται τακτικά, τότε η χειροκίνητη προσάρτηση γίνεται εξαιρετικά κουραστική. Στην περίπτωση πολλαπλών προσαρτήσεων NFS, είναι μη πρακτικό να τις προσαρτήσετε χειροκίνητα μία προς μία.

Χρησιμοποιώντας το αρχείο /etc/fstab μπορούμε να αυτοματοποιήσουμε τη διαδικασία. Κατά την εκκίνηση, αυτό το σενάριο θα προσαρτήσει αυτόματα τους τόμους NFS στα επιλεγμένα σημεία προσάρτησης. Ανοίξτε το αρχείο σε έναν επεξεργαστή κειμένου:

fstab file

Προσθέστε τις ακόλουθες γραμμές για να προσαρτήσετε τους απομακρυσμένους τόμους του κεντρικού συστήματος:

fstab file after change

Αποθηκεύστε το σενάριο και κλείστε τον επεξεργαστή κειμένου. Στην επόμενη εκκίνηση, το Linux θα προσαρτήσει αυτόματα τους απομακρυσμένους τόμους. Σημειώστε ότι μπορεί να χρειαστεί λίγος χρόνος για την εκκίνηση του συστήματος καθώς συνδέεται και προσαρτά τους τόμους.

  • Αποπροσάρτηση τόμου NFS

Εάν ο απομακρυσμένος τόμος δεν είναι πλέον απαραίτητος, τότε η αποπροσάρτηση των τόμων θα τους αφαιρέσει από το σύστημα του πελάτη. Πριν από την αποπροσάρτηση, ωστόσο, βεβαιωθείτε ότι καμία εφαρμογή/σενάριο δεν χρησιμοποιεί τον απομακρυσμένο τόμο. Η αποπροσάρτηση των προσαρτήσεων NFS είναι παρόμοια με την αποπροσάρτηση οποιασδήποτε άλλης προσάρτησης. Σε αυτήν την περίπτωση, αποπροσαρτήστε τα /nfs/home και /nfs/general:

Unmount nfs

Στη συνέχεια, επαληθεύστε την ενέργεια:

Disks after unmount

Τελικές σκέψεις

Σε αυτόν τον οδηγό, δημιουργήσαμε έναν διακομιστή NFS και παρουσιάσαμε μερικά από τα βασικά της απομακρυσμένης κοινής χρήσης NFS. Εάν ενδιαφέρεστε να εφαρμόσετε το NFS σε ένα περιβάλλον παραγωγής, τότε έχετε υπόψη σας ότι το πρωτόκολλο NFS δεν είναι κρυπτογραφημένο. Μπορεί να προκαλέσει ορισμένα ζητήματα ασφάλειας, για παράδειγμα, επιθέσεις man-in-the-middle.

Καλή συνέχεια!

author

Pranay Kapgate

Συγγραφέας · CloudSigma

Ο Preslav Dobrev είναι Δημιουργικός Σχεδιαστής στην CloudSigma, με εστίαση στη συνεπή επιχειρηματική ταυτότητα μέσω παραδοσιακών και καινοτόμων καναλιών μάρκετινγκ. Διαθέτει την ικανότητα να συνδυάζει το καλλιτεχνικό όραμα με το στρατηγικό μάρκετινγκ για τη δημιουργία εντυπωσιακών αφηγήσεων επωνυμίας.

Σχόλια

Δεν υπάρχουν σχόλια ακόμα. Γράψτε το πρώτο.