Το ESP αποκρυπτογραφεί σωστά και το εσωτερικό πακέτο εξακολουθεί να μην πηγαίνει πουθενά
Οι μετρητές ESP ανεβαίνουν ενώ η εφαρμογή δεν βλέπει τίποτα. Η επόμενη κεφαλίδα στο trailer πρέπει να ταιριάζει με το εσωτερικό πακέτο, ένα άλλο σφάλμα από έναν χαμένο επιλογέα.
Ο μετρητής λήψης ESP αυξάνεται, η σήραγγα μένει ενεργή και η εφαρμογή δεν βλέπει ποτέ το πακέτο. Η αποκρυπτογράφηση εκτελέστηκε, ο έλεγχος ακεραιότητας πέρασε και τότε ο δέκτης έπρεπε να αποφασίσει τι είναι στην πραγματικότητα το προστατευμένο ωφέλιμο φορτίο. Σε αυτό ακριβώς το τελευταίο βήμα εμφανίζεται μια ασυμφωνία μορφής, και εξωτερικά δεν μοιάζει καθόλου με πρόβλημα τείχους προστασίας.
Τι βλέπετε όταν η ετικέτα λέει ψέματα
Τίποτα στο αρχείο καταγραφής του πελάτη δεν το ξεχωρίζει από μια μαύρη τρύπα δρομολόγησης. Και τα δύο παράγουν λήξη χρόνου της εφαρμογής δίπλα σε μια υγιή σήραγγα, γι αυτό κατηγορούνται πρώτα οι μετρητές.
Ένας μετρητής λήψης που ανεβαίνει είναι πραγματικά καλό νέο: τα πακέτα φτάνουν και επαληθεύονται. Δεν είναι απόδειξη ότι το εσωτερικό πακέτο είχε νόημα για οτιδήποτε πάνω από το κρυπτογραφικό επίπεδο.
Ο τύπος κατοικεί στο trailer
Στη συνήθη λειτουργία σήραγγας IPsec, το ωφέλιμο φορτίο που προστατεύεται από ESP περιέχει ένα πλήρες εσωτερικό πακέτο IP. Το πεδίο επόμενης κεφαλίδας του trailer προσδιορίζει τι είναι αυτό το φορτίο, και δεν είναι θύρα TCP, ούτε αριθμός πρωτοκόλλου στην εξωτερική κεφαλίδα, ούτε μέρος του αρχικού πεδίου SPI και αριθμού ακολουθίας. RFC 4303 ενότητα 2.6 το ορίζει ως πεδίο τύπου φορτίου, που είναι ακριβές όνομα για μια ακριβή δουλειά.
Οι τιμές που θα συναντήσετε είναι μικρές και αξίζει να τις θυμάστε: το IPv4 είναι 4 (0x04) και το IPv6 είναι 41 (0x29).
Αυτοί οι αριθμοί προέρχονται από τις εκχωρήσεις αριθμών πρωτοκόλλου της IANA και όχι από τοπική σύμβαση. Ένας αποστολέας που δηλώνει IPv4 ενώ περικλείει ένα πακέτο IPv6 έχει δημιουργήσει ασυνέπεια μορφής, και κανένας κανόνας τείχους προστασίας δεν επισκευάζει byte που αντιφάσκουν στην ίδια τους την ετικέτα.
Πώς να το ξεχωρίσετε από τους συνήθεις υπόπτους
Τα περισσότερα πακέτα που λείπουν δεν είναι ελαττώματα κωδικοποίησης. Ελέγξτε πρώτα τους επιλογείς, γιατί ένας επιλογέας κίνησης που αποκλείει το πρόθεμα IPv6 απορρίπτει την κίνηση πριν ενθυλακωθεί οτιδήποτε. Έπειτα ελέγξτε τη δρομολόγηση και μετά το τοπικό φιλτράρισμα στον δέκτη. Μόνο αφού αποκλειστούν αυτά, μια ασυμφωνία μορφής φορτίου γίνεται αξιόπιστη εξήγηση.
Μια κρυπτογραφημένη καταγραφή δεν θα το λύσει, γιατί η προστατευμένη επόμενη κεφαλίδα βρίσκεται μέσα στο κρυπτογραφημένο φορτίο. Χρειάζεστε διαγνωστικά της υλοποίησης ή ένα υποστηριζόμενο σημείο παρατήρησης μετά την αποκρυπτογράφηση, και τα δύο απαιτούν άδεια πριν από τη χρήση.
Αν κανείς δεν μπορεί να προσκομίσει αυτή την απόδειξη, δεν έχετε σφάλμα μορφής. Έχετε μια θεωρία, και οι επιλογείς παραμένουν το καλύτερο στοίχημα.
Τι δεν είναι η επισκευή
Μην απενεργοποιείτε τους ελέγχους ακεραιότητας για να περάσει η κίνηση. Μην ξαναγράφετε κρυπτογραφημένα πακέτα σε ενδιάμεσο δρομολογητή, γιατί αυτό δεν μπορεί να δουλέψει και θα καταστρέψει τη ροή ενώ στην καταγραφή φαίνεται βοηθητικό. Μην ανοίγετε ευρύτερο κανόνα τείχους προστασίας εφαρμογής με τη θεωρία ότι μπλοκάρεται μια θύρα. Κανένα από αυτά δεν αγγίζει την ασυμφωνία ετικέτας.
Αν μια επιβεβαιωμένη ασυμφωνία προέρχεται από υλοποίηση ομολόγου, κρατήστε μια ελάχιστη καθαρισμένη αναπαραγωγή και πηγαίνετέ την στο υποστηριζόμενο κανάλι αυτής της υλοποίησης.
Επαληθεύστε τη ροή, όχι τον μετρητή
Μετά τη διόρθωση, δοκιμάστε την πραγματική ροή IPv6 από άκρη σε άκρη: ένα αίτημα εφαρμογής μέσα από τη σήραγγα, την απάντησή του και το ζεύγος διευθύνσεων που παρατηρεί κάθε πλευρά. Ένας μετρητής ESP που ανεβαίνει αποδεικνύει μόνο ότι τα πακέτα λαμβάνονται και επαληθεύονται. Δεν λέει τίποτα για το αν το εσωτερικό πακέτο ήταν χρησιμοποιήσιμο.
Καταγράψτε και τα δύο αποτελέσματα στο ticket. Κίνηση του μετρητή μαζί με μια ροή που δουλεύει είναι διόρθωση· κίνηση του μετρητή μόνη της είναι ακριβώς αυτό που είχατε πριν ξεκινήσετε.