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

Τρεις συνθήκες αποφασίζουν την ένθεση

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

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

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

Πρώτη συνθήκη: ποιο τελικό σημείο χρειάζεται ποια διαδρομή

ip route get 203.0.113.10 απαντά σε αυτή την ερώτηση άμεσα: εκτυπώνει τη διαδρομή, τη διεύθυνση προέλευσης και τη διεπαφή που θα χρησιμοποιούσε ο πυρήνας για αυτόν τον προορισμό τώρα.

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

Δεύτερη συνθήκη: εξέτασε τη διαδρομή σε κάθε επίπεδο

Η επιλογή διαδρομής είναι περισσότερο από τον κύριο πίνακα σε έναν σύγχρονο πελάτη. Οι κανόνες πολιτικής μπορούν να στέλνουν σημασμένα πακέτα σε άλλον πίνακα, ένας πελάτης μπορεί να δεσμεύσει το socket του σε μια διεπαφή, και ένα container ή namespace έχει δικούς του πίνακες. Τα ip rule και ip route show table all είναι ο τρόπος να ανακαλύψεις ποιος από αυτούς τους μηχανισμούς παίζει.

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

Τρίτη συνθήκη: τι συμβαίνει όταν πέφτει η εξωτερική σήραγγα

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

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

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

Τι δεν σου δίνει η αλυσίδα

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

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

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