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

Δύο ροές, μία διεύθυνση επιλυτή

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

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

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

Τα προωθημένα και τα τοπικά παραγόμενα πακέτα μπαίνουν διαφορετικά

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

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

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

Διάλεξε την αλυσίδα εξόδου και μετά στένεψε την αντιστοίχιση

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

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

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

Κράτησε τη δική της μεταφορά της σήραγγας έξω από τον κανόνα

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

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

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

Δοκίμασε και τους δύο πληθυσμούς, όχι έναν

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

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

Έλεγξε και τη θύρα: ένας κανόνας που αντιστοιχίζει θύρα προορισμού 53 χάνει έναν επιλυτή που φτάνει μέσω DNS over TLS στη 853 ή μέσω τελικού σημείου HTTPS. Αντιστοίχισε τη μεταφορά που χρησιμοποιεί πραγματικά το ρυθμισμένο upstream, και η διαρροή κλείνει για τον σωστό λόγο.

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