Το NetworkManager εκθέτει μία ιδιότητα, vpn.persistent, και οι άνθρωποι της ζητούν να απαντήσει ταυτόχρονα σε τέσσερα διαφορετικά ερωτήματα. Η τεκμηρίωσή του είναι προσεκτική: η επιμονή ισχύει όταν η υπηρεσία VPN τη στηρίζει και το προφίλ την ενεργοποιεί, και τότε η σύνδεση καλείται να αντέξει αλλαγές ζεύξης και διακοπές μέχρι μια ρητή αποσύνδεση. Η ίδια τεκμηρίωση δείχνει επίσης ότι η ιδιότητα έχει προεπιλογή false, κάτι που δεν υποθέτουν τα περισσότερα σχέδια αποκατάστασης. Διαβάστε το ως αίτημα για μια προσπάθεια και όχι ως υπόσχεση αποτελέσματος.

Τι δεσμεύει πραγματικά η ρύθμιση

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

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

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

Τέσσερα ερωτήματα που συγχωνεύονται σε ένα

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

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

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

Μια λίστα ελέγχου που τα κρατά χωριστά

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

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

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

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

Η αυθεντικοποίηση είναι μέρος της αποκατάστασης

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

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

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

Η επιμονή δεν είναι kill switch

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

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

Καταγράψτε και τα δύο μισά στις σημειώσεις αποκατάστασης: τι επιχείρησε το VPN και ποια κίνηση εφαρμογών επετράπη όσο διαρκούσε η προσπάθεια.

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