Ένας κανόνας επανεκκίνησης που προστέθηκε για ένα τούνελ αρχίζει να ισχύει για κάθε τούνελ στο μηχάνημα. Αυτό δεν είναι σφάλμα του systemd· είναι η διαφορά ανάμεσα σε drop-in περίπτωσης και drop-in προτύπου. Η διαδρομή κάτω από την οποία γράφεις το αρχείο καθορίζει πόσες υπηρεσίες το κληρονομούν.

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

Το σύμπτωμα: μία αλλαγή, κάθε τούνελ

Ένα drop-in ειδικό για περίπτωση ζει κάτω από κατάλογο που φέρει το πλήρες όνομα της περίπτωσης, όπως [email protected]. Ένα drop-in προτύπου ζει κάτω από το [email protected], με το σύμβολο @ και χωρίς όνομα περίπτωσης ανάμεσά τους. Το πρώτο ισχύει μόνο για το office. Το δεύτερο ισχύει για κάθε υπηρεσία που δημιουργείται από αυτό το πρότυπο.

Η μορφή του προτύπου δεν φτάνει σε ξεχωριστό πρότυπο [email protected] και δεν φτάνει σε άσχετες υπηρεσίες με openvpn στο όνομα.

Διάλεξε τον κατάλογο που ταιριάζει με το εύρος

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

Ένα drop-in χρειάζεται και τη σωστή επικεφαλίδα ενότητας. Οι ρυθμίσεις υπηρεσίας ανήκουν κάτω από το [Service]. Ένα αρχείο με ρυθμίσεις αλλά χωρίς ενότητα αγνοείται ή απορρίπτεται, και η μονάδα συνεχίζει να συμπεριφέρεται όπως πριν όσο το αρχείο κάθεται εκεί και φαίνεται έγκυρο.

Κράτησε τον σκοπό στο όνομα του αρχείου αν προσθέσεις περισσότερα από ένα drop-in. Η λεξικογραφική σειρά καθορίζει τη συγχώνευση, και ένα όνομα που λέει τι κάνει το αρχείο κάνει αυτή τη σειρά αναγνώσιμη.

Διάβασε τη συγχωνευμένη μονάδα πριν γράψεις

Διάβασε τη συγχωνευμένη μονάδα πριν γράψεις οτιδήποτε. Το systemctl cat [email protected] εκτυπώνει την κύρια μονάδα και κάθε drop-in που ισχύει, με σειρά συγχώνευσης. Σύγκρινέ τη με μια δεύτερη περίπτωση όταν εξετάζεις αλλαγή προτύπου. Αυτή η σύγκριση δείχνει ακριβώς ποιες υπηρεσίες θα κληρονομούσαν την αλλαγή.

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

Συμμετέχουν επίσης άλλα ονομαστικά drop-in, ρυθμίσεις χρόνου εκτέλεσης και διαμόρφωση που παρέχουν τα πακέτα. Μην υποθέσεις ότι το αρχείο που επεξεργάστηκες τελευταίο είναι ολόκληρη η μονάδα. Η συγχωνευμένη έξοδος είναι η μονάδα.

Κράτησε την πολιτική της μονάδας έξω από το προφίλ

Κράτησε την πολιτική της μονάδας και τη διαμόρφωση VPN χωριστά. Μια οδηγία προφίλ δεν γίνεται έγκυρη σύνταξη systemd επειδή βρίσκεται κάτω από το [Service]. Μια ρύθμιση επανεκκίνησης δεν ανήκει ούτε σε αρχείο .ovpn.

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

Εφάρμοσέ το και επαλήθευσε την περίπτωση

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

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

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

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