Η πλήρης σήραγγα σκότωσε τη συνεδρία SSH σας: καρφώστε τη διαδρομή επιστροφής
Μια πλήρης σήραγγα πιάνει και τις απαντήσεις στη δική σας συνεδρία SSH. Καρφώστε μια διαδρομή κεντρικού υπολογιστή για τη διεύθυνση διαχείρισής σας μέσω της παλιάς πύλης και επανεγκαταστήστε την σε κάθε επανασύνδεση.
Ξεκινήστε έναν πελάτη OpenVPN στο μηχάνημα όπου εργάζεστε μέσω SSH, και στη μέση της εντολής η συνεδρία παγώνει. Η σήραγγα αναφέρει ότι είναι συνδεδεμένη, ο κεντρικός υπολογιστής φτάνει στο διαδίκτυο μέσω αυτής, και τα πλήκτρα σας εξακολουθούν να φτάνουν ενώ τίποτα δεν επιστρέφει. Αυτό που άλλαξε δεν είναι η σήραγγα: είναι η διαδρομή επιστροφής για τα πακέτα που απευθύνονται σε εσάς, η οποία τώρα ταιριάζει με τη νέα προεπιλεγμένη διαδρομή και μπαίνει σε μια σήραγγα που η απομακρυσμένη πύλη δεν θα χρησιμοποιήσει για να φτάσει στο γραφείο σας.
Τι εγκαθιστά στην πραγματικότητα το redirect-gateway
Στη μορφή def1 redirect-gateway προσθέτει 0.0.0.0/1 και 128.0.0.0/1 αντί να αντικαθιστά την προεπιλεγμένη διαδρομή. Αυτά τα δύο μισά καλύπτουν ολόκληρο τον χώρο διευθύνσεων, ενώ και τα δύο παραμένουν μακρύτερα προθέματα από το 0.0.0.0/0, οπότε κάθε προορισμός χωρίς πιο συγκεκριμένη αντιστοίχιση πηγαίνει τώρα στη σήραγγα. Αυτός είναι ο μηχανισμός που πρέπει να κρατήσετε, γιατί κάθε διόρθωση παρακάτω λειτουργεί εγκαθιστώντας μια πιο συγκεκριμένη αντιστοίχιση.
Η διεύθυνση διαχείρισής σας είναι ένας από αυτούς τους προορισμούς.
Ο διακομιστής VPN προωθεί την κίνηση των πελατών του προς το διαδίκτυο. Δεν έχει διαδρομή για τη δημόσια διεύθυνση από την οποία συνδέεστε, ούτε λόγο να αντιμετωπίζει αυτά τα πακέτα ως κάτι άλλο από κίνηση που φτάνει από πελάτη, οπότε τα απορρίπτει. Στο μεταξύ, το αίτημα που στείλατε έφτασε παρ' όλα αυτά στον κεντρικό υπολογιστή, και γι' αυτό η συνεδρία φαίνεται ζωντανή μόνο από τη μία πλευρά.
ip route show table main | head -n 20
ip route get 198.51.100.23Βρείτε τη διεύθυνση προέλευσης και τη διαδρομή πριν από τη σήραγγα
Στον διακομιστή, καταγράψτε την εγκατεστημένη σύνδεση SSH και σημειώστε τη διεύθυνση του ομοτίμου από την οποία ήρθε. Αυτή η διεύθυνση είναι αυτό που πρέπει να καλύψει η διαδρομή επιστροφής σας, και δεν είναι πάντα αυτό που νομίζετε: ένας κεντρικός υπολογιστής άλματος, μια πύλη NAT ή ένας μεταφραστής παρόχου μπορούν να υποκαταστήσουν διαφορετική προέλευση.
Στη συνέχεια βρείτε τη φυσική πύλη και τη διεπαφή που μετέφεραν την κίνηση πριν ξεκινήσει η σήραγγα. Στη def1 διάταξη η προεπιλεγμένη διαδρομή εξακολουθεί να υπάρχει κάτω από τις μισές προεπιλεγμένες, άρα η πληροφορία είναι διαθέσιμη, αν και το διάβασμα ενός μεγάλου πίνακα διαδρομών με το μάτι προσκαλεί λάθη.
Καταγράψτε και τις δύο τιμές και το όνομα της διεπαφής μαζί, γιατί η διαδρομή που πρόκειται να προσθέσετε χρειάζεται και τα τρία. Αν ο κεντρικός υπολογιστής χρησιμοποιούσε κανόνα δρομολόγησης πολιτικής για να επιλέξει την ανάντη ζεύξη του, μια απλή διαδρομή μπορεί να μην εξεταστεί καθόλου, και αυτή η πιθανότητα αλλάζει τη διόρθωση.
Καρφώστε μια διαδρομή κεντρικού υπολογιστή που ξεπερνά τις μισές προεπιλεγμένες
Μια διαδρομή /32 είναι μακρύτερη από οποιαδήποτε από τις δύο μισές προεπιλεγμένες, οπότε οι απαντήσεις στη διεύθυνσή σας την παίρνουν αντί για τη σήραγγα. Το επόμενο άλμα είναι η πύλη πριν από τη σήραγγα και η συσκευή είναι η φυσική διεπαφή, κάτι που κρατά το πακέτο στη διαδρομή που χρησιμοποιούσε πριν υπάρξει η σήραγγα.
ip route add 198.51.100.23/32 via 203.0.113.1 dev eth0Επαληθεύστε με αναζήτηση αντί να επιθεωρήσετε τον πίνακα: η απάντηση πρέπει να ονομάζει eth0 και την πύλη, ποτέ tun0.
Το OpenVPN προσθέτει ήδη διαδρομή κεντρικού υπολογιστή προς τη διεύθυνση του ίδιου του διακομιστή VPN για τον ίδιο λόγο, άρα το μοτίβο είναι γνωστό και η διεύθυνση διαχείρισης είναι απλώς άλλη μια εξαίρεση. Μην καταφύγετε στο route-nopull για να το διορθώσετε, γιατί πετάει τις προωθημένες διαδρομές που χρειάζεται η σήραγγα, μαζί με το απομακρυσμένο δίκτυο και τις επιλογές DNS.
Κάντε την να επιβιώσει από μια επανασύνδεση
Μια διαδρομή που προστίθεται με το χέρι εξαφανίζεται όταν ο πελάτης επανασυνδεθεί και εγκαταστήσει τη δική του, κάτι που μετατρέπει μια διόρθωση σε επαναλαμβανόμενη διακοπή. Συνδέστε την εντολή με κάτι που εκτελείται αφού εγκατασταθούν οι διαδρομές.
Τόσο ένα σενάριο route-up όσο και το άγκιστρο pre-up του διαχειριστή δικτύου λειτουργούν, και ο αξιόπιστος έλεγχος είναι μια επανασύνδεση που ακολουθείται από την ίδια αναζήτηση.
Στα Windows το ισοδύναμο είναι μια μόνιμη διαδρομή που προστίθεται με -p, η οποία επιβιώνει από επανεκκινήσεις αλλά πρέπει ακόμη να δείχνει τη σωστή πύλη μετά από μια αλλαγή δικτύου. Όποια και αν είναι η πλατφόρμα, γράψτε τον λόγο δίπλα στη διαδρομή: ο επόμενος διαχειριστής πρέπει να ξέρει ότι υπάρχει για να προστατεύει μια συνεδρία διαχείρισης, όχι επειδή το απαιτούσε ο σχεδιασμός του δικτύου.
Όταν μια καρφωμένη διαδρομή δεν αρκεί ακόμη
Το φιλτράρισμα αντίστροφης διαδρομής μπορεί να απορρίψει ένα πακέτο που φτάνει σε μια διεπαφή και φεύγει από άλλη, και αυτό ακριβώς δημιουργεί μια καρφωμένη διαδρομή. Ελέγξτε την ενεργή τιμή του rp_filter πριν απενεργοποιήσετε οτιδήποτε καθολικά, και προτιμήστε να διορθώσετε την ασυμμετρία παρά να κλείσετε τον έλεγχο. Ισχύει η ρύθμιση ανά διεπαφή, και η λειτουργία loose συχνά καταγράφει μόνο την ασυμμετρία αντί να απορρίπτει το πακέτο. Διαβάστε και τα δύο πριν συμπεράνετε ότι το φίλτρο φταίει.
Οι κεντρικοί υπολογιστές με δρομολόγηση πολιτικής χρειάζονται κανόνα όπως και διαδρομή, γιατί η βάση κανόνων επιλέγει τον πίνακα πριν εξεταστεί η διαδρομή μέσα του. Μια διαδρομή στον πίνακα main είναι αόρατη σε μια ροή που ταιριάζει με κανόνα που δείχνει σε άλλον πίνακα. Διαβάστε τους κανόνες πριν προσθέσετε οτιδήποτε στο main. Αν ένας κανόνας καλύπτει ήδη την κίνηση διαχείρισης, η εξαίρεση ανήκει στον πίνακα εκείνου του κανόνα.
Κρατήστε ανοιχτή μια κονσόλα εκτός ζώνης όσο δοκιμάζετε, και ελέγξτε ξανά από δεύτερη σύνδεση πριν αποσυνδέσετε αυτήν που χρησιμοποιείτε. Μια διαδρομή που στέλνει την κίνηση διαχείρισής σας στη σήραγγα κόβει τη σύνδεση μέσω της οποίας τη διορθώνετε. Το να ξαναμπείτε τότε σημαίνει σειριακή κονσόλα ή εκκίνηση διάσωσης, που είναι κακή ανταλλαγή για να παραλείψετε ένα βήμα επαλήθευσης.