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

Γιατί ο διαμοιρασμός χώρου ονομάτων δεν είναι διακόπτης ασφαλείας

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

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

Τι συμβαίνει πραγματικά όταν βγαίνει το δοχείο

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

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

Χτίσε ρητή πολιτική εξόδου

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

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

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

Δοκίμασε τον κύκλο ζωής, όχι μόνο την αποσύνδεση

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

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

Κατέγραψε τους κανόνες ώστε η δοκιμή να επιβιώσει από μια ενημέρωση

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

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

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