Είναι το πλήρες τούνελ απλούστερο από μια μακρά λίστα μερικού τούνελ;
Μια λίστα εξαιρέσεων που καλύπτει τις περισσότερες εφαρμογές είναι μια προεπιλογή μεταμφιεσμένη. Μετρήστε τους κανόνες, ελέγξτε την πύλη και μετά μεταφέρετε ένα προφίλ και επαληθεύστε τις δύο άκρες.
Μια λίστα μερικού τούνελ ξεκινά με τρεις εφαρμογές και καταλήγει να καλύπτει το μεγαλύτερο μέρος του μηχανήματος, και κάθε νέα γραμμή είναι η εξαίρεση κάποιου. Σε εκείνο το σημείο η λίστα έχει γίνει ήσυχα μια προεπιλογή με επιπλέον βήματα. Το πλήρες τούνελ αντιστρέφει τη διάταξη: τα πάντα μπαίνουν στο τούνελ εκτός αν μια τεκμηριωμένη εξαίρεση λέει το αντίθετο. Το αν αυτό είναι απλούστερο εξαρτάται από την πύλη και από τις τοπικές υπηρεσίες που θα χαλούσατε.
Ξεκινήστε μετρώντας τους κανόνες που συντηρείτε
Μετρήστε τις καταχωρίσεις και μετά μετρήστε πόσες έχουν ονομαστικό ιδιοκτήτη και ημερομηνία τελευταίας επαλήθευσης. Ο δεύτερος αριθμός είναι αυτός που έχει σημασία, γιατί μια εξαίρεση που δεν ανήκει σε κανέναν δεν μπορεί να αξιολογηθεί όταν το λογισμικό στο οποίο αναφέρεται μετονομαστεί ή αντικατασταθεί. Κανόνες δεμένοι σε μια διαδρομή εκτελέσιμου αποτυγχάνουν σιωπηλά μετά από ενημέρωση, και η αποτυχία μοιάζει με ασταθές VPN και όχι με παλιό κανόνα. Γράψτε τη λίστα πριν σχηματίσετε γνώμη γι’ αυτήν.
Κάθε καταχώριση πρέπει να απαντά σε τρία ερωτήματα: τι σπάει χωρίς αυτήν, ποιος το αποφάσισε και πώς θα αντιλαμβανόσασταν ότι ο λόγος έληξε. Οι καταχωρίσεις που δεν μπορούν να απαντήσουν και στα τρία είναι υποψήφιες για διαγραφή και όχι για μεταφορά, και η διαγραφή τους πρώτα κάνει ειλικρινή τη μεταγενέστερη σύγκριση.
Αν οι περισσότερες καταχωρίσεις δρομολογούν μεγάλο μερίδιο της κίνησης, ήδη τρέχετε πλήρες τούνελ με πρόσθετο φόρτο συντήρησης. Η απόφαση τότε αφορά το πού ζει η προεπιλογή, όχι το αν πρέπει να υπάρχει.
Ελέγξτε αν η πύλη μπορεί να σηκώσει την προεπιλογή
Το πλήρες τούνελ μεταφέρει κάθε πακέτο σε μία συσκευή, κάτι που αλλάζει ταυτόχρονα το φόρτο CPU της συσκευής, τον πίνακα conntrack, τη μετάφραση διευθύνσεων και την απαίτηση σε εύρος ζώνης ανόδου. Μια πύλη που εξυπηρετούσε άνετα λίγα εσωτερικά υποδίκτυα μπορεί να μην είχε διαστασιολογηθεί για όλη την περιήγηση ενός χρήστη. Κοιτάξτε τον μεγαλύτερο αριθμό ταυτόχρονων συνεδριών που περιμένετε και όχι τον μέσο όρο, γιατί η αιχμή σπάει πρώτη.
ip -s link show dev tun0
conntrack -C
ss -s
Μετρήστε το ίδιο φορτίο πριν και μετά την αλλαγή αντί να συλλογίζεστε από προδιαγραφές. Ένα απόγευμα συνηθισμένης χρήσης σε ένα μηχάνημα θα δείξει αν η πύλη είναι κοντά σε κάποιο όριο, και δεν κοστίζει τίποτα σε σύγκριση με το να το ανακαλύψετε ένα πρωί Δευτέρας.
Ελέγξτε επίσης το MTU της διαδρομής από άκρη σε άκρη, γιατί μια πλήρης προεπιλογή εκθέτει κάθε εφαρμογή στο μέγιστο μέγεθος πακέτου του τούνελ. Εφαρμογές που δούλευαν έξω από το τούνελ μπορεί τώρα να εξαρτώνται από συμπεριφορά κατακερματισμού που δεν χρειάστηκε ποτέ να σκεφτείτε.
Επιβεβαιώστε ότι οι τοπικές υπηρεσίες και το ιδιωτικό DNS δουλεύουν ακόμη
Καταγράψτε τι πρέπει να μείνει τοπικό κατά πρωτόκολλο και όχι κατά όνομα εφαρμογής: πρωτόκολλα ανακάλυψης για εκτυπωτές και οθόνες, μια γέφυρα έξυπνου σπιτιού, η σελίδα διαχείρισης ενός δρομολογητή, ένας τοπικός διακομιστής ανάπτυξης που προσεγγίζεται με όνομα που λύνεται μόνο στο LAN. Αυτά σπάνε όταν η προεπιλεγμένη διαδρομή αρχίζει να δείχνει μέσα σε τούνελ, και σπάνε ήσυχα επειδή τίποτα δεν καταγράφει σφάλμα στον πελάτη.
Το ιδιωτικό DNS είναι η άλλη εξάρτηση. Αν τα εσωτερικά ονόματα λύνονταν παλιότερα από τον resolver του τούνελ, τίποτα δεν αλλάζει· αν λύνονταν τοπικά, μια πλήρης προεπιλογή πρέπει να τα μεταφέρει σε resolver που γνωρίζει τις ζώνες. Δοκιμάστε ένα εσωτερικό και ένα δημόσιο όνομα μετά την αλλαγή αντί να υποθέσετε ότι η λίστα resolver επιβίωσε.
Γράψτε τις τοπικές εξαιρέσεις στο προφίλ που τις κατέχει. Μια εξαίρεση που κρατιέται μόνο στη μνήμη κάποιου είναι το πρώτο πράγμα που χάνει η επόμενη μεταφορά.
Μεταφέρετε ένα προφίλ και επαληθεύστε τα όρια
Αλλάξτε το προφίλ μέσα από τη δική του διαμόρφωση αντί να στρώσετε μια νέα προεπιλογή πάνω σε χειροκίνητες διαδρομές που άφησαν παλιότερα πειράματα. Αυτές οι εναπομείνασες διαδρομές είναι η συνηθισμένη αιτία μιας μεταφοράς που φαίνεται να δουλεύει και συμπεριφέρεται ασυνεπώς μια μέρα αργότερα. Κρατήστε το παλιό προφίλ διαθέσιμο ώστε η επαναφορά να είναι επιλογή και όχι ανακατασκευή.
Έπειτα επαληθεύστε δύο όρια χωριστά: ότι οι δημόσιοι και οι ιδιωτικοί προορισμοί δουλεύουν και οι δύο, και ότι η ανεπιθύμητη κίνηση δεν φεύγει έξω από το τούνελ. Μια επιτυχημένη φόρτωση σελίδας αποδεικνύει το πρώτο και δεν λέει τίποτα για το δεύτερο.
ip route get 203.0.113.10
ip route get 10.40.8.15
resolvectl query intranet.example
curl -sS -o /dev/null -w "%{remote_ip}\n" https://example.com
Επαναλάβετε τον έλεγχο μετά από επανασύνδεση και μετά από διακοπή, γιατί ένας διακόπτης που μπλοκάρει την κίνηση κατά τη διάρκεια μιας πτώσης είναι διαφορετική ιδιότητα από μια διαδρομή που αποκαθίσταται σωστά μετά. Το απλούστερο σχέδιο είναι εκείνο του οποίου την πραγματική κάλυψη μπορείτε ακόμη να εξηγήσετε αφού αλλάξει μια εφαρμογή ή ένα δίκτυο.