Κάποιος αναφέρει ότι το VPN «μπλοκάρει το UDP», και η φράση κρύβει δύο εντελώς διαφορετικούς ισχυρισμούς. Ο ένας αφορά τη μεταφορά που βλέπει το δίκτυο πρόσβασης, ο άλλος τα πακέτα μιας εφαρμογής αφού αποκρυπτογραφηθούν μέσα στη σήραγγα. Μια κρυπτογραφημένη σήραγγα μπορεί να φιλτραριστεί από έξω χωρίς κανένα κλειδί, και μια εσωτερική εφαρμογή UDP μπορεί να αποτύχει για λόγους που δεν έχουν καμία σχέση με το φιλτράρισμα. Αποφασίστε ποιον ισχυρισμό ελέγχετε πριν συλλέξετε στοιχεία.

Δύο κεφαλίδες, μία λέξη

Σε εγκατάσταση IPsec με NAT-traversal, το εξωτερικό πακέτο είναι UDP, διευθυνσιοδοτημένο μεταξύ των δύο άκρων του VPN, συνήθως στη θύρα 4500. Μέσα σε αυτό, το κρυπτογραφημένο ωφέλιμο φορτίο μεταφέρει ό,τι προωθεί η σήραγγα, το οποίο μπορεί να είναι και το ίδιο TCP ή UDP. Έτσι η λέξη UDP εμφανίζεται δύο φορές, με διαφορετική σημασία και διαφορετική ορατότητα.

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

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

Τι μπορεί ακόμη να δει το δίκτυο

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

sudo tcpdump -ni eth0 'udp port 4500'
sudo tcpdump -ni tun0 'udp port 5201'

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

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

Γιατί μία εφαρμογή UDP αποτυγχάνει μέσα σε λειτουργική σήραγγα

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

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

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

ping -M do -s 1400 -c 2 10.60.0.20
iperf3 -u -c 10.60.0.20 -p 5201 -b 1M -t 5

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

Αναφέρετε το επίπεδο, όχι το πρωτόκολλο

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

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

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

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