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

Δύο αριθμοί, δύο αντικείμενα

Το MTU ανήκει σε μια ζεύξη ή μια διεπαφή: είναι το μεγαλύτερο πακέτο που μπορεί να παραδοθεί χωρίς να διασπαστεί. Το MSS ανήκει στο TCP: είναι η μεγαλύτερη ποσότητα φορτίου TCP που μπορεί να μεταφέρει ένα τμήμα, και εξαιρεί και την επικεφαλίδα TCP και την επικεφαλίδα IP. Σε μια συνηθισμένη ζεύξη Ethernet με IPv4, ένα MTU 1500 byte δίνει το γνωστό MSS 1460 byte. Αυτοί οι αριθμοί περιγράφουν διαφορετικά επίπεδα και ανταλλάσσονται με διαφορετικούς μηχανισμούς. Η σύγχυσή τους είναι εύκολη, γιατί και οι δύο μετρώνται σε byte και και οι δύο βρίσκονται κοντά στο 1500.

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

Πού καταλήγει το εξωτερικό πρόσθετο βάρος

Ένα VPN τοποθετεί το εσωτερικό πακέτο μέσα σε άλλο, και το εξωτερικό πακέτο πρέπει να χωρέσει στη φυσική διαδρομή. Οι επικεφαλίδες ενθυλάκωσης, η εξωτερική επικεφαλίδα IP, η επικεφαλίδα μεταφοράς και οποιαδήποτε ετικέτα πιστοποίησης καταναλώνουν byte που το εσωτερικό πακέτο δεν μπορεί να χρησιμοποιήσει. Αφήστε τη διεπαφή της σήραγγας στο 1500 και το εξωτερικό πακέτο υπερβαίνει τακτικά αυτό που μπορεί να μεταφέρει η διαδρομή. Με το bit 'να μη θρυμματίζεται' ενεργό, ο δρομολογητής το απορρίπτει και υποτίθεται ότι επιστρέφει σφάλμα ICMP· αν αυτό το σφάλμα φιλτράρεται, ο αποστολέας δεν το μαθαίνει ποτέ.

Γι' αυτό η αποτυχία φαίνεται επιλεκτική. Μικρά αιτήματα ολοκληρώνονται και ό,τι γεμίζει ένα τμήμα κολλάει, γιατί απορρίπτονται μόνο τα μεγάλα πακέτα. Μια σήραγγα που περνά ένα ping δεν είναι σήραγγα που μεταφέρει δεδομένα.

Περιορισμός MSS και πού ισχύει

Ο περιορισμός MSS ξαναγράφει την τιμή στο τμήμα SYN καθώς διασχίζει ένα επιλεγμένο σημείο, κάνοντας και τα δύο άκρα να διαλέξουν μικρότερο φορτίο χωρίς να ξέρει κανένα γιατί. Στο Linux είναι στόχος του πίνακα mangle που εφαρμόζεται από ρητό κανόνα, και πρέπει να χτυπά πακέτα SYN στην κατεύθυνση που θέλετε. Περιορίστε τον στη διεπαφή της σήραγγας και στο εύρος διευθύνσεων, γιατί ένας ευρύς κανόνας αλλάζει τη συμπεριφορά κίνησης που δεν μπαίνει ποτέ στη σήραγγα.

Το αποτέλεσμα αφορά μόνο το TCP. Μια εφαρμογή UDP, μια συνεδρία QUIC και κάθε πρωτόκολλο που χτίζει τα δικά του datagram δεν επηρεάζονται.

Διάγνωση με σταθερή διαδρομή

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

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

Τι δεν διορθώνει κάθε αλλαγή

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

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

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