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

Τι αφαιρεί η φυλακή και ο δαίμονας το χρειάζεται ακόμη

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

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

Τρεις συνθήκες καθορίζουν ποια διόρθωση χρειάζεστε

Η πρώτη συνθήκη είναι πώς η κατασκευή σας εγκαθιστά διαδρομές. Νεότερες OpenVPN εκδόσεις ρυθμίζουν τη διεπαφή και τον πίνακα δρομολόγησης εντός της διεργασίας, ενώ παλαιότερα πακέτα και προσαρμοσμένες ρυθμίσεις βασίζονται σε εξωτερικά εργαλεία ή σε σενάρια up και down. Αν το αρχείο καταγραφής ονομάζει εντολή, εμπλέκεται εξωτερικό εργαλείο και η φυλακή το κρύβει. Αν το αρχείο καταγραφής δείχνει αντίθετα σφάλμα δικαιωμάτων, το πρόβλημα είναι ο λογαριασμός.

Η δεύτερη είναι η συντήρηση. Μια φυλακή με αντιγραμμένα δυαδικά αρχεία πρέπει να ανανεώνεται κάθε φορά που αναβαθμίζεται το πακέτο που τα παρέχει, αλλιώς η πρώτη αναβάθμιση αφήνει πίσω της ένα σπασμένο τούνελ. Η τρίτη είναι αν ένας συγκεκριμένος έλεγχος απαιτεί πραγματικά chroot· αν η απαίτηση αφορά στην πραγματικότητα τον διαχωρισμό προνομίων, η αλλαγή λογαριασμού μπορεί να αρκεί μόνη της.

Signal in the logOther side of the boundaryRepair direction
Command not found after startupBinary and its libraries absent inside the new rootPopulate the jail, or drop the chroot line
Operation not permittedAccount lost the privilege to edit routesKeep the account privileged, or pre-create routes elsewhere
No such deviceJail lacks the tun device nodeCreate the node inside, or open it before the root change

Τι πρέπει να περιέχει μια λειτουργική φυλακή

Μια φυλακή που εκτελεί εντολές χρειάζεται το δυαδικό αρχείο, κάθε βιβλιοθήκη με την οποία συνδέεται και κάθε κόμβο συσκευής που ο δαίμονας ανοίγει αργά. Αντιγράψτε τα κομμάτια και δοκιμάστε τα χωρίς το VPN στην εικόνα:

ldd /usr/sbin/ip
chroot /etc/openvpn/jail /sbin/ip route show
chroot /etc/openvpn/jail /sbin/ip link set tun0 up

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

Αντιγράψτε επίσης τις ρυθμίσεις, τα πιστοποιητικά και τυχόν CRL μέσα στη φυλακή, γιατί ένα αρχείο που ο δαίμονας περιμένει να ξαναδιαβάσει μετά την εκκίνηση δεν θα βρεθεί μόλις αλλάξει η ρίζα. Καταγράψτε τι αντιγράψατε, αφού η επόμενη αναβάθμιση του πακέτου δικτύου αντικαθιστά τα πρωτότυπα και αφήνει τη φυλακή στο παλιό αντίγραφο.

Μειώστε αντί για αυτό τη σκλήρυνση

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

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

Χωρίστε τις τρεις γραμμές πριν διαλέξετε

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

Όταν δρομολογεί ξανά, τρέξτε μία συνεδρία πελάτη με μεγαλύτερη λεπτομέρεια και διαβάστε τη γραμμή που ονομάζει την εντολή ή το δικαίωμα που απέτυχε. Αυτή η γραμμή αξίζει περισσότερο από το χρονικό όριο που αναφέρει τελικά ο πελάτης.

Σχετικά άρθρα