Το NFS (Network File System) της Sun Microsystems είναι μια δομή κατανεμημένου συστήματος αρχείων που βασίζεται σε RPC που επιτρέπει στις δικτυωμένες συσκευές να χρησιμοποιούν διακομιστές που εκτελούν NFS μέσω δικτύου ως τοπικές μονάδες δίσκου.
Ακολουθεί ένας βήμα προς βήμα οδηγός για τη ρύθμιση και τη διαμόρφωση ενός διακομιστή NFS σε μια μηχανή Linux.
Τι είναι το σύστημα αρχείων δικτύου;
Το σύστημα αρχείων NFS έχει τέσσερα πρωτόκολλα. Όταν ο διακομιστής είναι έτοιμος, ειδοποιεί το portmap (τον διακομιστή που μετατρέπει τους αριθμούς πρωτοκόλλου σε αριθμούς θύρας) της θύρας που θα χρησιμοποιηθεί και παρέχει τον ελεγχόμενο αριθμό προγράμματος RPC.
Όταν χρησιμοποιείτε ένα ενσωματωμένο σύστημα Linux, είναι πολύ βολικό να εκκινήσετε τη συσκευή σας μέσω ενός κοινόχρηστου αρχείου NFS μέσω του δικτύου αντί να το εκκινήσετε απευθείας από τη συσκευή αποθήκευσης (NAND flash, eMMC, MMC, και τα λοιπά.).
Αν και πιο σπάνιο, μπορεί επίσης να θέλετε να προσαρτήσετε ένα κοινόχρηστο στοιχείο NFS και να εκτελέσετε κοινή χρήση αρχείων χρησιμοποιώντας το μετά την εκκίνηση του συστήματος, ακόμα κι αν δεν εκκινήσετε το σύστημά σας απευθείας από το κοινόχρηστο στοιχείο NFS. Για να λειτουργήσουν και τα δύο σενάρια, πρέπει πρώτα να εγκαταστήσετε έναν διακομιστή NFS στον υπολογιστή στον οποίο αναπτύσσετε.
Πώς να εγκαταστήσετε το NFS σε Linux
Εάν χρησιμοποιείτε α Σύστημα που βασίζεται στο Debian όπως το Ubuntu ή το Linux Mint, θα πρέπει να εγκαταστήσετε το nfs-kernel-server πακέτο ως εξής:
sudo apt εγκαθιστώ nfs-kernel-υπηρέτης
Στο Arch Linux:
sudo pacman -S nfs-utils
Σε Fedora, CentOS και RHEL:
sudo dnf -y εγκαθιστώ nfs-utils
Στο τέλος της διαδικασίας, ο διακομιστής NFS σας θα εκτελεστεί αυτόματα. Ωστόσο, σε αυτό το σημείο, δεν γνωρίζει ακόμη ποιους καταλόγους στον υπολογιστή σας θέλετε να μοιραστείτε μέσω του δικτύου. Επομένως, δεν παρέχει καμία κοινή χρήση από προεπιλογή.
Μπορείτε να ανοίξετε πολλούς καταλόγους στον ίδιο διακομιστή για να επιτρέψετε την κοινή χρήση δικτύου με διαφορετικές εξουσιοδοτήσεις και περιορισμούς.
Διαμόρφωση του διακομιστή NFS σε Linux
Για κοινή χρήση οποιουδήποτε καταλόγου μέσω του διακομιστή NFS, είναι απαραίτητο να διαμορφώσετε μια ρύθμιση που σχετίζεται με τον κατάλογο στο /etc/exports αρχείο. Ανοίξτε το αρχείο με οποιοδήποτε πρόγραμμα επεξεργασίας κειμένου της επιλογής σας. Βεβαιωθείτε ότι έχετε προσθέσει το πρόθεμα sudo στην εντολή.
sudo vim /etc/εξαγωγές
Ίσως αναρωτιέστε τι σημαίνουν οι επιλογές χαρτογράφησης που βλέπετε εδώ:
- root_squash: Επισημαίνει τους εξουσιοδοτημένους χρήστες-πελάτες sudo ως κανέναν χρήστη και ομάδα στο NFS
- no_root_squash: Απενεργοποιεί τη σύνθλιψη ριζών
- all_squash: Σε αντίθεση με το root_squash, επιτρέπει σε όλους τους χρήστες να αντιστοιχίζονται ως χρήστης και ομάδα nobody. Γενικά χρησιμοποιείται για δημόσια πρόσβαση.
- no_all_squash: Το αντίθετο του all_squash? αυτή η επιλογή είναι η προεπιλογή
Όταν ένα σύστημα εκτός των περιοχών IP που επιτρέπετε στο αρχείο /etc/exports στον διακομιστή NFS προσπαθεί να αποκτήσει πρόσβαση στον σχετικό πόρο, ο διακομιστής NFS θα απορρίψει το αίτημα.
Ενδέχεται να λάβετε μηνύματα "δεν επιτρέπεται η πρόσβαση από τον διακομιστή" κατά την προσάρτηση στο ενσωματωμένο σύστημά σας. Μηνύματα σφάλματος παρόμοια με τα παρακάτω θα εμφανιστούν στο τέλος του /var/log/syslog αρχείο στον υπολογιστή όπου εκτελείται ο διακομιστής NFS:
rpc.mountd[1041]: απορρίφθηκε αίτημα προσάρτησης από192.168.2.2Για /home/example/casper/target (/home/παράδειγμα/casper/target): απαράμιλλος κεντρικός υπολογιστής
Όταν βλέπετε ένα μη αντιστοιχισμένο μήνυμα αρχείου καταγραφής κεντρικού υπολογιστή όπως το παραπάνω, θα πρέπει να αναπτύξετε την ενότητα IP/Netmask του σχετικού κανόνα στο αρχείο /etc/exports ή να χρησιμοποιήσετε το αστερίσκος (*) ειδικό χαρακτήρα εάν θέλετε να παραχωρήσετε πρόσβαση σε όλες τις διευθύνσεις IP.
Πρέπει να επανεκκινήσετε την υπηρεσία NFS αφού κάνετε τροποποιήσεις στην υπηρεσία /etc/exports αρχείο:
επανεκκίνηση της υπηρεσίας sudo nfs-kernel-server
Ή, εάν η διανομή σας αποστέλλεται με systemctl, εκτελέστε την ακόλουθη εντολή:
sudosystemctlεπανεκκίνησηnfs-server.υπηρεσία
Μπορείτε επίσης να δώσετε το -r παράμετρος στο εξαγωγές εντολή έτσι ώστε να μοιράζεται εκ νέου καταλόγους που έχουν αλλάξει τυχόν ρυθμίσεις που σχετίζονται με το κοινόχρηστο στοιχείο:
sudo exportfs -r
Διόρθωση του προβλήματος λανθάνοντος χρόνου τοποθέτησης
Όταν χρησιμοποιείτε το πρωτόκολλο NFS έκδοση 4 και νεότερη στον διακομιστή σας, ενδέχεται να υπάρχουν καθυστερήσεις έως και 15 δευτερολέπτων κατά τη διάρκεια η διαδικασία προσάρτησης από την πλευρά του πελάτη σε παραδοσιακά σενάρια λειτουργίας με τις προεπιλεγμένες διαμορφώσεις του NFS υπηρέτης. Αυτό το ζήτημα μπορεί να εμφανιστεί σε ορισμένες εκδόσεις του Debian, του Fedora και του Ubuntu.
Εάν αντιμετωπίζετε παρόμοια καθυστέρηση προσάρτησης, μπορείτε ελέγξτε τα αρχεία καταγραφής από την πλευρά του διακομιστή (/var/log/syslog, /var/log/messages) για ένα μήνυμα καταγραφής παρόμοιο με το ακόλουθο:
... RPC: AUTH_GSS upcall έληξε
Αυτό το μήνυμα υποδεικνύει ότι ο έλεγχος ταυτότητας Kerberos απέτυχε και έληξε. Πιθανότατα δεν θα χρειαστείτε το πρωτόκολλο Kerberos για έλεγχο ταυτότητας ασφαλείας στο δίκτυο στο περιβάλλον σας. Ακόμα κι αν βρίσκεστε σε ένα δίκτυο που έχει ρυθμιστεί με αυτόν τον τρόπο, τουλάχιστον με τα ενσωματωμένα συστήματα Linux, δεν θα χρειαστεί να ενεργοποιήσετε τον έλεγχο ταυτότητας Kerberos.
Αν και έχουν προσφερθεί εναλλακτικές λύσεις για την εκτέλεση της υπηρεσίας GSSD με NFS για την επίλυση του προβλήματος, αυτές οι προσεγγίσεις δεν έχουν τον ίδιο αντίκτυπο σε όλες τις διανομές και τις εκδόσεις πακέτων, και επομένως, είναι πιο λογικό να αντιμετωπιστεί αυτό το πρόβλημα από το ρίζα.
Πρέπει να αποκλείσετε (ή στη μαύρη λίστα) το rpcsec_gss_krb5 μονάδα πυρήνα από τη φόρτωση στο σύστημα Linux όπου εκτελείται ο διακομιστής NFS.
Για να ισχύει αυτή η επιλογή κάθε φορά που κάνετε επανεκκίνηση του υπολογιστή σας, δημιουργήστε ένα νέο αρχείο που ονομάζεται /etc/modprobe.d/nfs-gss-blacklist.conf και προσθέστε τις ακόλουθες γραμμές σε αυτό:
μαύρη λίστα rpcsec_gss_krb5
Μόλις αποθηκεύσετε το αρχείο και επανεκκινήσετε το σύστημα, το πρόβλημα με την καθυστέρηση προσάρτησης θα εξαφανιστεί.
Γιατί να χρησιμοποιήσετε έναν διακομιστή NFS;
Το NFS είναι απλό και προσιτό στη ρύθμιση. Επιτρέπει την κεντρική διαχείριση, η οποία μειώνει την απαίτηση για επιπλέον λογισμικό και χώρο αποθήκευσης στον υπολογιστή ενός μεμονωμένου χρήστη. Σε ένα μόνο μηχάνημα, πολλοί χρήστες μπορούν να μοιράζονται τον ίδιο χώρο στο δίσκο. Μπορούν να τοποθετήσουν αυτούς τους δίσκους πάνω από το σύστημα αρχείων τους για να επεκτείνουν τον αποθηκευτικό χώρο.
Η κοινή χρήση NFS επιτρέπει σε προγράμματα που απαιτούν πολύ χώρο αποθήκευσης να ομαδοποιηθούν σε έναν μόνο διακομιστή. Αυτό μπορεί να οδηγήσει σε τεράστια εξοικονόμηση χώρου στο δίσκο. Ενώ οι προηγούμενες εκδόσεις NFS είναι ευάλωτες, οι νεότερες εκδόσεις έχουν εισαγάγει πρόσθετα επίπεδα προστασίας, συμπεριλαμβανομένου του ελέγχου ταυτότητας Kerberos.
Ωστόσο, υπάρχουν και ορισμένα μειονεκτήματα. Έχει βρεθεί ότι το NFS επιβραδύνεται σε ορισμένες περιπτώσεις κατά τη διάρκεια μεγάλης κίνησης δικτύου. Η κοινή χρήση με Windows είναι δυνατή, αλλά ενδέχεται να απαιτούνται ορισμένες εφαρμογές τρίτων. Αλλά αυτή δεν είναι μια πολύ λογική πρακτική όσον αφορά την ασφάλεια. Εάν η διαμόρφωση δεν είναι σωστή, ενδέχεται να προκύψει μη εξουσιοδοτημένη πρόσβαση.
Η κοινή χρήση συστήματος αρχείων έγινε εύκολη στο Linux χρησιμοποιώντας NFS
Η γνώση των προβλημάτων ασφαλείας και η εύρεση λύσεων είναι ένα από τα πιο κρίσιμα καθήκοντα ενός διαχειριστή συστήματος. Είναι απαραίτητο να γνωρίζετε τις διαδικασίες ασφαλείας για όλα τα συστήματα κοινής χρήσης αρχείων και τα εργαλεία διαχείρισης και όχι μόνο για το NFS.