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

Ο καθαρισμός αφορά κυρίως την ταυτότητα: σε τι δείχνει τώρα ο κανόνας και ποιος κατέχει τη λίστα.

Το σύμπτωμα: μια εξαίρεση που δεν ταιριάζει με τίποτα

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

Ξεκινήστε διαβάζοντας τον κανόνα, όχι διαγράφοντάς τον.

Μάθετε τι προσδιορίζει ο κανόνας

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

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

Οι κανόνες διαδρομής και οι κανόνες πακέτου συμπεριφέρονται διαφορετικά

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

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

Αφαιρέστε την μέσω του κατόχου

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

Μια κενή λίστα δεν είναι ο στόχος. Στόχος είναι μια λίστα της οποίας οι καταχωρίσεις αντιστοιχούν ακόμη σε πραγματικές απαιτήσεις.

Δοκιμάστε και τις δύο κατευθύνσεις μετά

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

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

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