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

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

Ποιος μπορεί να συνδεθεί: μία αρχή, πολλοί κόμβοι

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

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

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

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

Τι κατέχει ένας κόμβος: διευθύνσεις και διαδρομές

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

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

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

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

Τι είναι μια συνεδρία: ζωντανή κατάσταση, όχι γραμμή

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

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

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

Δοκιμή των τριών καθολικών

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

Συμπεριλάβετε τη διαδρομή επιστροφής στη δοκιμή αποδοχής. Ένας πελάτης που συνδέεται στο B αλλά δεν μπορεί να λάβει απαντήσεις από πόρο πίσω από το A έχει περάσει τον έλεγχο εισαγωγής και έχει αποτύχει στον δικτυακό, και αυτή η διάκριση πρέπει να εμφανιστεί στην αναφορά.

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

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