Το SSH κολλά στο SSH2_MSG_KEX_ECDH_REPLY: δεν είναι πάντα το MTU
Το banner φτάνει και μετά το SSH περιμένει στην ανταλλαγή κλειδιών. Ξεχωρίστε ένα πρόβλημα μεγέθους από άδεια αρχείου κλειδιού ή ασυμφωνία αλγορίθμου πριν μειώσετε το MTU.
Το τούνελ είναι ενεργό, το banner φτάνει και ο πελάτης τυπώνει μήνυμα ότι περιμένει την απάντηση της ανταλλαγής κλειδιών. Τα αποτελέσματα αναζήτησης δείχνουν κατευθείαν στο MTU, και μερικές φορές αυτό είναι σωστό. Συχνά δεν είναι: η απάντηση μπορεί να μην στάλθηκε ποτέ, επειδή ο πελάτης δεν μπορούσε να διαβάσει αρχείο κλειδιού ή τα δύο άκρα δεν συμφώνησαν ποτέ σε αλγόριθμο. Η γραμμή περιγράφει τι περιμένει ο πελάτης, όχι γιατί άρχισε η αναμονή. Αντιμετωπίστε την ως σύμπτωμα και ξεχωρίστε τις τρεις αιτίες πριν αλλάξετε οποιοδήποτε μέγεθος.
Διαβάστε το ίχνος για να δείτε αν αναμενόταν καθόλου απάντηση
Η εκτενής έξοδος δείχνει το τελευταίο επιτυχές βήμα πριν τη σιωπή. Αν έφτασε το banner πρωτοκόλλου του διακομιστή, το TCP λειτουργεί και το απομακρυσμένο άκρο είναι ζωντανό· το ανοιχτό ερώτημα είναι τι συνέβη σε ένα συγκεκριμένο πακέτο. Ένα λεπτό σιωπής μετά το banner μοιάζει με πρόβλημα διαδρομής. Ένα μήνυμα για καμία αντίστοιχη μέθοδο ανταλλαγής κλειδιών είναι πρόβλημα πολιτικής. Μια μεγάλη αναμονή που τελειώνει με τον διακομιστή να κλείνει τη συνεδρία σημαίνει ότι ο διακομιστής τα παράτησε, και το αρχείο καταγραφής του εξηγεί γιατί.
Στην τελευταία περίπτωση, διαβάστε το αρχείο ελέγχου ταυτότητας του διακομιστή πριν αγγίξετε τον πελάτη. Ο πελάτης δεν μπορεί να δει μια απόφαση που ο διακομιστής δεν έστειλε ποτέ.
Γιατί μια μικρή απάντηση μπορεί να είναι ακόμα πολύ μεγάλη
Οι απαντήσεις ανταλλαγής κλειδιών είναι συνήθως μικροσκοπικές, οπότε το να κατηγορείς το μέγεθος ακούγεται λάθος. Με πιστοποιητικά κεντρικού υπολογιστή η απάντηση δεν είναι μικροσκοπική, γιατί μεταφέρει την αλυσίδα πιστοποιητικών του διακομιστή. Αυτό την κάνει το πρώτο πακέτο της συνεδρίας που μπορεί να υπερβεί το ωφέλιμο φορτίο του τούνελ. Όταν η ανάδραση ανακάλυψης MTU διαδρομής χάνεται κάπου στη διαδρομή, ο αποστολέας ξαναστέλνει διαρκώς ένα πακέτο που δεν χωράει, και ο πελάτης περιμένει για πάντα στην ίδια γραμμή.
Καθορίστε το μέγεθος αντί να το υποθέτετε. Διαβάστε το MTU του τούνελ με ip link show tun0 και μετά στείλτε δοκιμές που δεν πρέπει να κατατμηθούν: ping -4 -M do -s 1352 host, επαναλαμβανόμενες με μικρότερα φορτία. Μια αλλαγή από αποτυχία σε επιτυχία σε συγκεκριμένο μέγεθος είναι απόδειξη· η ομοιόμορφη αποτυχία υποδηλώνει ότι το ICMP φιλτράρεται και δεν σας λέει τίποτα.
Μια προσωρινή μείωση επιβεβαιώνει γρήγορα τη θεωρία, και μια μόνιμη εκδοχή ανήκει στο προφίλ ή ως περιορισμός MSS στον δρομολογητή που προωθεί το τούνελ:
sudo ip link set dev tun0 mtu 1200
sudo iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
Οι δύο αιτίες που μιμούνται πρόβλημα μεγέθους
Ένα αρχείο κλειδιού που ο πελάτης δεν μπορεί να διαβάσει παράγει την ίδια αναμονή, χωρίς προειδοποίηση ακόμα και στην εκτενή έξοδο. Ένα μοτίβο στο known_hosts το κάνει εύκολο: μια καταχώριση @cert-authority που δείχνει σε δημόσιο κλειδί CA που μόνο ένας λογαριασμός μπορεί να διαβάσει. Ο λογαριασμός που κατέχει το αρχείο συνδέεται, και κάθε άλλος λογαριασμός κολλά. Αν η αποτυχία ακολουθεί τον χρήστη και όχι τον κεντρικό υπολογιστή, ελέγξτε τις άδειες αρχείου πριν από τα μεγέθη πακέτων.
Μια αναβάθμιση μπορεί επίσης να αφαιρέσει τον αλγόριθμο που μοιράζονταν και τα δύο άκρα. Καρφιτσώστε μία μέθοδο που ο διακομιστής προσφέρει ακόμα ως διάγνωση: ssh -oKexAlgorithms=ecdh-sha2-nistp521 user@host. Μια σύνδεση που πετυχαίνει αμέσως αποδεικνύει ότι η διαδρομή είναι εντάξει και ότι η διόρθωση ανήκει στην πολιτική διαπραγμάτευσης και στις δύο πλευρές.
Τρία γεγονότα που αξίζει να σημειώσετε
Καταγράψτε το MTU του τούνελ πριν και μετά από κάθε αλλαγή, αν η αντιγραφή μεγάλου αρχείου αποτυγχάνει σε επαναλαμβανόμενο μέγεθος και αν ένας κεντρικός υπολογιστής χωρίς πιστοποιητικό στο ίδιο τούνελ κολλάει με τον ίδιο τρόπο. Αυτές οι τρεις παρατηρήσεις ξεχωρίζουν το μέγεθος από τις άδειες και από τη διαπραγμάτευση πιο γρήγορα από ένα σωρό εντολές.
Επίσης εμποδίζουν τον επόμενο άνθρωπο να μειώσει το MTU για μια βλάβη που δεν αφορούσε ποτέ το μέγεθος.
Αν η εικόνα είναι ακόμα ασαφής, δοκιμάστε από δεύτερο πελάτη στο ίδιο τούνελ. Ένας πελάτης που συνδέεται μετακινεί τη βλάβη από τη διαδρομή στη διαμόρφωση του πρώτου μηχανήματος.