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

Ρωτήστε ποιος πρέπει να επηρεαστεί προτού ρωτήσετε ποιον μηχανισμό να χρησιμοποιήσετε.

Μία παρουσία: η διεπαφή διαχείρισης

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

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

Μια ειδοποίηση εξόδου UDP δεν είναι εντολή ανά πελάτη

explicit-exit-notify είναι οδηγία διαμόρφωσης για συμβάντα εξόδου και επανεκκίνησης. Σε πελάτη UDP λέει στον συνομιλητή ότι η συνεδρία τελειώνει, και το αριθμητικό όρισμα ελέγχει πόσες φορές επαναλαμβάνεται η ειδοποίηση. Όταν ο διακομιστής λειτουργεί πάνω από UDP, στέλνει μήνυμα ελέγχου επανεκκίνησης στους συνδεδεμένους πελάτες του, και οι τεκμηριωμένες τιμές διακρίνουν την επανασύνδεση στον ίδιο διακομιστή από τη μετάβαση σε άλλη απομακρυσμένη εγγραφή. Πρόκειται για σήμα κύκλου ζωής με ευρύ κοινό.

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

Τα σήματα δρουν στη διεργασία, όχι στη συνεδρία

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

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

Καθορίστε την εμβέλεια πριν επιλέξετε τον μηχανισμό

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

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

Επαληθεύστε τη νέα συνεδρία, όχι την αποσύνδεση

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

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

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