Γιατί μια διαδρομή κεντρικού υπολογιστή /32 κρατά το άκρο VPN προσβάσιμο
Μια διαδρομή κεντρικού υπολογιστή επιλέγει μία διεύθυνση, όχι ένα υποδίκτυο. Μπορεί να κρατήσει ένα άκρο σήραγγας προσβάσιμο ή να καρφώσει έναν πόρο, αλλά παλιώνει καθώς αλλάζουν οι διευθύνσεις.
Ανοίγετε τον πίνακα δρομολόγησης μετά τη σύνδεση και βρίσκετε μία διεύθυνση να δρομολογείται μέσα από τη σήραγγα, ενώ το υποδίκτυο γύρω της εξακολουθεί να πηγαίνει στην τοπική πύλη. Αυτή η καταχώριση είναι διαδρομή κεντρικού υπολογιστή: μία διεύθυνση, που ταιριάζει με πρόθεμα από άσσους. Έχει σημασία επειδή οι αποφάσεις δρομολόγησης χρησιμοποιούν το μεγαλύτερο ταιριαστό πρόθεμα, άρα ένα /32 μπορεί να υπερισχύσει ενός /24 ή μιας προεπιλεγμένης διαδρομής χωρίς να αλλάξει κανένα από τα δύο. Το αν αυτό είναι μια προσεκτική εξαίρεση ή μια μελλοντική διακοπή εξαρτάται από το ποια διεύθυνση ονομάζει και ποιος τη συντηρεί.
Μία διεύθυνση, μία καταχώριση στον πίνακα
Μια διαδρομή κεντρικού υπολογιστή IPv4 φέρει πρόθεμα /32 και μια διαδρομή κεντρικού υπολογιστή IPv6 φέρει /128, που σημαίνει ότι η καταχώριση μπορεί να ταιριάξει ακριβώς μία διεύθυνση προορισμού. Τίποτε άλλο στον πίνακα δεν κινείται: το υποδίκτυο που την καλύπτει και η προεπιλεγμένη διαδρομή μένουν εκεί που ήταν. Η στενή καταχώριση κερδίζει για εκείνη τη διεύθυνση επειδή το πρόθεμά της είναι μεγαλύτερο, όχι επειδή προστέθηκε αργότερα.
Αυτή η ιδιότητα κάνει μια διαδρομή κεντρικού υπολογιστή καλή εξαίρεση και κακή συνήθεια. Δύο καταχωρίσεις /32 που ονομάζουν την μπροστινή πόρτα μιας υπηρεσίας δεν καλύπτουν τη δεύτερη διεύθυνσή της, τη διεύθυνση IPv6 της ούτε τη διεύθυνση στην οποία μετακομίζει τον επόμενο μήνα. Ένας πίνακας γεμάτος ανεξήγητες καταχωρίσεις μίας διεύθυνσης συνήθως σημαίνει ότι κάποιος έμπαινε συνέχεια με μπαλώματα γύρω από μια απόφαση υποδικτύου αντί να την πάρει. Διαβάστε πρώτα το μήκος του προθέματος και μετά ρωτήστε τι υποτίθεται ότι προστατεύει η καταχώριση.
Διαβάστε την καταχώριση από τον πελάτη προς τα έξω
Ξεκινήστε από το μηχάνημα με το πρόβλημα, επειδή η ίδια διεύθυνση μπορεί να δρομολογηθεί διαφορετικά σε ένα φορητό και στην πύλη μπροστά του. Ρωτήστε τον πυρήνα ποια διαδρομή θα διάλεγε για την ακριβή διεύθυνση που χρησιμοποιεί η εφαρμογή, αντί να διαβάσετε τον πίνακα από πάνω. Η απάντηση περιλαμβάνει τη διεπαφή και το επόμενο άλμα, που μαζί είναι η απόφαση.
ip route get 203.0.113.25
ip -6 route get 2001:db8:4::25
ip route show | grep -F 203.0.113.25
Find-NetRoute -RemoteIPAddress 203.0.113.25
Επαναλάβετε το ερώτημα για την οικογένεια διευθύνσεων που επιλέγει πραγματικά η εφαρμογή, αφού ένας πελάτης μπορεί να προτιμά το IPv6 και να παρακάμπτει ήσυχα μια εξαίρεση IPv4. Συγκρίνετε το αποτέλεσμα πριν και αφού σηκωθεί η σήραγγα και κρατήστε και τις δύο εξόδους. Αυτή η σύγκριση δείχνει αν ο πελάτης πρόσθεσε την καταχώριση κατά τη σύνδεση ή αν ήταν ήδη εκεί.
Μια μόνιμη καταχώριση και μια καταχώριση χρόνου εκτέλεσης αποτυγχάνουν διαφορετικά. Αυτή του χρόνου εκτέλεσης εξαφανίζεται με τη συνεδρία, ενώ η μόνιμη επιβιώνει από επανεκκίνηση και συνεχίζει να στέλνει κίνηση σε μια πύλη που δεν υπάρχει πια.
Η εξαίρεση του άκρου και η παγίδα της αναδρομής
Οι πελάτες VPN συνήθως εγκαθιστούν διαδρομή κεντρικού υπολογιστή προς την εξωτερική διεύθυνση του διακομιστή μέσω της αρχικής πύλης πριν ανακατευθύνουν την προεπιλεγμένη διαδρομή. Χωρίς αυτή την καταχώριση τα κρυπτογραφημένα πακέτα θα στέλνονταν μέσα στη σήραγγα που προσπαθούν να χτίσουν και η σύνδεση θα έκανε βρόχο μέχρι να λήξει.
Η παγίδα εμφανίζεται όταν τα αποδεκτά υποδίκτυα της σήραγγας τυχαίνει να περιλαμβάνουν εκείνη τη διεύθυνση άκρου ή όταν ένα δεύτερο προφίλ προσθέτει αργότερα μια ευρύτερη διαδρομή. Τότε η καταχώριση άκρου χάνει από ένα μεγαλύτερο πρόθεμα και η συνεδρία καταρρέει μόλις αρχίσει να περνά κίνηση. Το να γράψετε τη διεύθυνση άκρου δίπλα στα αποδεκτά υποδίκτυα είναι ο φθηνότερος τρόπος να προσέξετε τη σύγκρουση πριν από τους χρήστες. Εξηγεί επίσης γιατί το ίδιο προφίλ δουλεύει από ένα δίκτυο και αποτυγχάνει από άλλο.
Επαληθεύστε τη διαδρομή που χρησιμοποιεί πραγματικά η εφαρμογή
Ένα επιτυχημένο ping στο όνομα κεντρικού υπολογιστή είναι αδύναμη απόδειξη όταν η εφαρμογή συνδέεται σε άλλη διεύθυνση ή άλλη οικογένεια. Επαληθεύστε τον ακριβή συνδυασμό διεύθυνσης, οικογένειας, θύρας και διεπαφής, από το μηχάνημα που εκτελεί τον πελάτη.
ip route get 203.0.113.25
sudo nft list ruleset | grep -A 4 'chain output'
curl -sS --max-time 8 -o /dev/null -w '%{remote_ip}
' https://app.example.net
Αν η διαδρομή είναι λάθος, αποφασίστε αν η απαίτηση είναι δίκτυο ή μία διεύθυνση πριν αλλάξετε οτιδήποτε. Μια απαίτηση μίας διεύθυνσης δικαιολογεί διαδρομή κεντρικού υπολογιστή με σχόλιο και υπεύθυνο· μια υπηρεσία με διευθύνσεις που εναλλάσσονται χρειάζεται δρομολόγηση με βάση το domain ή μια ειλικρινή απόφαση υποδικτύου.
Αφαιρέστε καταχωρίσεις που δεν αντιστοιχούν πια σε πραγματικό προορισμό και σημειώστε αυτές που κρατάτε. Ένα ανεξήγητο /32 δεν ξεχωρίζει από ένα σφάλμα τρεις μήνες αργότερα, και το επόμενο άτομο θα το διαγράψει χωρίς να ξέρει τι εξαρτιόταν από αυτό.