Γιατί η προνομιακή λειτουργία είναι ευρύτερη από ό,τι χρειάζεται ένα VPN
Ένα προνομιακό κοντέινερ παραχωρεί συσκευές και δυνατότητες άσχετες με τη σήραγγα. Βρείτε την μία προϋπόθεση πίσω από το σφάλμα πριν το χρησιμοποιήσετε ως διακόπτη.
Το κοντέινερ δεν άνοιγε τη σήραγγά του, οπότε μπήκε η προνομιακή σημαία και τώρα λειτουργεί. Αυτή η ακολουθία απέδειξε μόνο ότι έλειπε τουλάχιστον μία άδεια, και δεν λέει τίποτα για το ποια. Η προνομιακή λειτουργία παραχωρεί ένα σύνολο δυνατοτήτων και πρόσβαση σε συσκευές πολύ ευρύτερο από ό,τι χρειάζεται μια διεπαφή σήραγγας.
Τι αλλάζει πραγματικά η σημαία
Ένα προνομιακό κοντέινερ λαμβάνει ευρείες δυνατότητες και πρόσβαση στις συσκευές του διακομιστή, κάτι που είναι πολύ μεγαλύτερη παραχώρηση από ό,τι απαιτεί η διαδρομή δικτύου. Το ακριβές σύνολο το τεκμηριώνει το περιβάλλον εκτέλεσης και όχι το καθορίζει η παράδοση, και η τεκμηρίωση του Docker για την εκτέλεση κοντέινερ περιγράφει τις διαθέσιμες επιλογές προνομίων. Μία ανάγνωση αρκεί για να δει κανείς ότι η σήραγγα είναι μικρό μέρος του συνόλου.
Δύο στενότερες απαιτήσεις καλύπτουν τα περισσότερα κοντέινερ VPN. Η ρύθμιση μιας διεπαφής απαιτεί τη δυνατότητα διαχείρισης δικτύου, και το άνοιγμα της συσκευής σήραγγας απαιτεί πρόσβαση σε εκείνον ακριβώς τον κόμβο συσκευής. Αυτές είναι ξεχωριστές παραχωρήσεις, και ακόμη και οι δύο μαζί είναι στενότερες από τη γενική επιλογή. Το υπόλοιπο προνομιακό σύνολο δεν έχει καμία σχέση με τη σήραγγα. Υπάρχει για φόρτους εργασίας που χρειάζονται πραγματικά πρόσβαση σε επίπεδο διακομιστή, και ένα κοντέινερ VPN συνήθως δεν είναι ένα από αυτά.
Αντιστοιχίστε κάθε σφάλμα με μία προϋπόθεση
Το μήνυμα σφάλματος σας λέει ποια προϋπόθεση λείπει, αν το διαβάσετε πριν το καταστείλετε. Ένα μήνυμα για κόμβο συσκευής ονομάζει τη συσκευή, ένα μήνυμα για μη επιτρεπόμενη λειτουργία ονομάζει μια δυνατότητα, και ένα μήνυμα για μονάδα ή sysctl ονομάζει υποστήριξη πυρήνα. Κάθε μία από αυτές έχει διαφορετική διόρθωση, και μόνο μία από αυτές είναι δυνατότητα.
Ένα αρχείο ρυθμίσεων που λείπει παραμένει απόν αφού παραχωρηθούν όλες οι δυνατότητες, γι’ αυτό η προνομιακή λειτουργία μερικές φορές δεν αλλάζει απολύτως τίποτα. Το κοντέινερ ξεκινά, η σήραγγα εξακολουθεί να αποτυγχάνει, και το πραγματικό σφάλμα δεν αφορούσε ποτέ άδειες. Η υποστήριξη πυρήνα είναι η τρίτη περίπτωση και η πιο εύκολη σε λανθασμένη ανάγνωση. Μια μονάδα που δεν έχει φορτωθεί στον διακομιστή δεν μπορεί να φορτωθεί από μέσα σε μη προνομιακό κοντέινερ, και η παραχώρηση περισσότερων δυνατοτήτων μέσα στο κοντέινερ δεν αλλάζει την κατάσταση του διακομιστή.
Ελέγξτε την απαίτηση, όχι το σύμπτωμα
Ξεκινήστε από την ελάχιστη κλήση που τεκμηριώνει η εικόνα, εκτελέστε την και κρατήστε το ακριβές κείμενο αποτυχίας. Στη συνέχεια προσθέστε μία παραχώρηση κάθε φορά και σημειώστε ποια προσθήκη άλλαξε το αποτέλεσμα.
ls -l /dev/net/tun
docker run --rm --cap-add NET_ADMIN --device /dev/net/tun image:tag
ip -br link show type tunΈνα κοντέινερ που βλέπει τη συσκευή και έχει τη δυνατότητα αλλά αποτυγχάνει ακόμα σας λέει ότι το πρόβλημα είναι αλλού. Αυτό είναι χρήσιμο αποτέλεσμα, και η προνομιακή λειτουργία θα το είχε κρύψει.
Ελέγξτε και τα δικαιώματα της συσκευής στον διακομιστή, καθώς ένας σωστά παραχωρημένος κόμβος συσκευής με λάθος ιδιοκτησία ομάδας παράγει το ίδιο σφάλμα με μια παραχώρηση που λείπει.
Καταγράψτε τη στενότερη παραχώρηση που λειτουργεί
Γράψτε κάθε συσκευή και δυνατότητα που χρειάζεται η ανάπτυξη, μαζί με το σφάλμα που τη δικαιολόγησε. Αυτή η καταγραφή είναι αυτό που επιτρέπει στο επόμενο άτομο να αφαιρέσει κάτι με ασφάλεια, και αυτό θα ζητήσει ένας ελεγκτής όταν ένα κοντέινερ αναφερθεί ως προνομιακό.
Εξετάστε και το γύρω πλαίσιο, γιατί το δίκτυο του διακομιστή, οι προσαρτήσεις του διακομιστή και οι επιλογές του περιβάλλοντος εκτέλεσης μπορούν το καθένα να διευρύνει τον αντίκτυπο μιας παραχώρησης. Μια απομονωμένη κλήση εργαστηρίου που τα συνδυάζει όλα δεν είναι διαμόρφωση παραγωγής, όσο καλά κι αν λειτούργησε. Δοκιμάστε την εφαρμογή, τη συμπεριφορά της στο DNS και μια αποτυχία σήραγγας πριν θεωρήσετε την ανάπτυξη ολοκληρωμένη. Η άδεια να δημιουργήσετε μια διεπαφή δεν είναι πολιτική εξόδου, και ένα κοντέινερ που κάνει τέλεια σήραγγα εξακολουθεί να δρομολογεί ό,τι στέλνει η εφαρμογή.