Εκκινείτε πελάτη VPN μέσω SSH; Καρφιτσώστε πρώτα τη δική σας διαδρομή
Ένας πελάτης πλήρους τούνελ ξαναγράφει τον πίνακα που μεταφέρει την απάντηση SSH σας. Καρφιτσώστε μία διαδρομή ξενιστή μέσω της παλιάς πύλης, ή τρέξτε τον πελάτη στον δικό του χώρο ονομάτων.
Συνδέεστε με SSH σε έναν ξενιστή κατασκευής, ξεκινάτε εκεί τον πελάτη VPN, και η συνεδρία σταματά να απαντά. Τίποτα δεν κατέρρευσε, και τίποτα δεν φαίνεται λανθασμένα ρυθμισμένο με την προφανή έννοια. Ο πελάτης εγκατέστησε μια προεπιλεγμένη διαδρομή, οπότε οι απαντήσεις προς τον σταθμό εργασίας σας φεύγουν τώρα μέσα από το τούνελ, όπου η διεύθυνση του σταθμού εργασίας σας δεν είναι δρομολογήσιμη. Το ενδιαφέρον είναι ότι αυτό το αποτέλεσμα ήταν προβλέψιμο, και η διόρθωση είναι μία διαδρομή που γράφεται πριν ξεκινήσει ο πελάτης. Ας υποθέσουμε έναν διακομιστή με μία κάρτα δικτύου, πύλη 192.0.2.254, και έναν διαχειριστή που συνδέεται από 203.0.113.9.
Καταγράψτε τη διαδρομή πριν ξεκινήσετε
Το ip route show default ονομάζει την τρέχουσα πύλη και διεπαφή, ενώ το ip route get 203.0.113.9 δείχνει ποια διεπαφή και ποια διεύθυνση προέλευσης θα χρησιμοποιούσε ο πυρήνας για τη συνεδρία σας. Κρατήστε και τις δύο εξόδους. Αφού ανέβει το τούνελ, αυτές οι δύο εντολές θα πρέπει ακόμη να περιγράφουν τη φυσική διαδρομή, και αν περιγράφουν το τούνελ αντ' αυτού, η συνεδρία ζει ήδη με δανεικό χρόνο.
Η ήδη εγκατεστημένη σύνδεση είναι αυτή που μετράει, οπότε μην επικυρώνετε μόνο με μια νέα σύνδεση. Μια νέα συνεδρία μπορεί να πετύχει για λίγο μέσω κατάστασης που η παλιά δεν έχει πια.
Καρφιτσώστε τη διεύθυνση στη διαμόρφωση του ίδιου του πελάτη
Μια διαδρομή που προστίθεται με το χέρι εξαφανίζεται στην επανεκκίνηση και συναγωνίζεται τις ενημερώσεις του πίνακα του ίδιου του πελάτη, γι' αυτό βάλτε την εξαίρεση εκεί όπου διαχειρίζεται ο πίνακας. Στο OpenVPN η λέξη-κλειδί net_gateway επιλύεται στην πύλη που υπήρχε πριν από το τούνελ, οπότε το route 203.0.113.9 255.255.255.255 net_gateway κρατά ακριβώς μία διεύθυνση έξω από αυτό. Το WireGuard χρειάζεται διαφορετική προσέγγιση επειδή το wg-quick διαχειρίζεται μόνο του τις διαδρομές: ορίστε το Table = off και προσθέστε την εξαίρεση στο PostUp, με αντίστοιχο PostDown που την αφαιρεί. Και οι δύο μορφές εκφράζουν την ίδια πρόθεση, και οι δύο περιορίζουν την εξαίρεση σε μία διεύθυνση αντί να αποδυναμώσουν το τούνελ για τα πάντα.
Για το IPv6 η ίδια ιδέα παίρνει πρόθεμα ενός ξενιστή, και η περίπτωση του τυλιγμένου μεταφορέα αξίζει να θυμόμαστε: αν η εξωτερική σύνδεση του ίδιου του τούνελ ζει σε σταθερή διεύθυνση, η διεύθυνση αυτή πρέπει να μένει έξω από το τούνελ που μεταφέρει, αλλιώς ο πελάτης δρομολογεί τη δική του μεταφορά μέσα στον εαυτό του.
Ή βγάλτε τον κύριο πίνακα από την εξίσωση
Όταν πολλές υπηρεσίες στον ξενιστή πρέπει να κρατήσουν την κανονική τους διαδρομή, σταματήστε να επεξεργάζεστε τον κύριο πίνακα και δώστε στον πελάτη τον δικό του. Ένας χώρος ονομάτων δικτύου με ζεύγος veth το κάνει καθαρά: η προεπιλεγμένη διαδρομή του πελάτη ζει σε άλλη στοίβα και μόνο διεργασίες που ξεκινούν μέσα σε αυτόν χρησιμοποιούν το τούνελ. Η δρομολόγηση πολιτικής φτάνει σε παρόμοιο σημείο για έναν προορισμό, στέλνοντας ταιριαστή κίνηση σε έναν ειδικό πίνακα του οποίου η προεπιλογή εξακολουθεί να δείχνει στη φυσική πύλη. Καθεμία από τις προσεγγίσεις αφήνει τον κύριο πίνακα του ξενιστή χωρίς νέα προεπιλεγμένη διαδρομή, και αυτή είναι η ιδιότητα που κρατά το SSH να απαντά.
Και τα δύο είναι περισσότερο μηχανισμός από μία διαδρομή ξενιστή, και τα δύο αξίζουν όταν περισσότερα από ένα πράγματα στο μηχάνημα πρέπει να επιβιώσουν από το τούνελ.
Υποθέστε ότι το καρφίτσωμα μπορεί να αποτύχει
Μια διαδρομή κλειδωμένη στην τρέχουσα δημόσια διεύθυνσή σας σπάει τη στιγμή που ο πάροχός σας την εκχωρεί ξανά. Τότε ένας απομακρυσμένος διακομιστής χρειάζεται μια διαδρομή που δεν εξαρτάται από αυτή τη διεύθυνση: μια κονσόλα, μια δεύτερη διεπαφή διαχείρισης, ή έναν ξενιστή αναπήδησης που μένει έξω από το τούνελ.
Δύο μέτρα ασφαλείας κοστίζουν δέκα λεπτά. Ένας φύλακας που σταματά τον πελάτη αν δεν εμφανιστεί σύνδεση επιβεβαίωσης μέσα σε λίγα λεπτά μετατρέπει τον αποκλεισμό σε καθυστέρηση, και μια δεύτερη συνεδρία SSH που κρατιέται ανοιχτή κατά την αλλαγή αποδεικνύει ότι η εξαίρεση λειτουργεί όσο το τούνελ είναι πάνω. Τα keepalive μόνα τους δεν βοηθούν εδώ, γιατί η διαδρομή έχει χαθεί και όχι αδρανήσει· απλώς κάνουν τον θάνατο ευκολότερο να τον προσέξεις.
Επαληθεύστε με τη σειρά που μετράει
Συνδέστε το τούνελ, επιβεβαιώστε ότι η διαδρομή προς τη διεύθυνσή σας βγαίνει ακόμη από τη φυσική πύλη, και μετά ανοίξτε μια νέα συνεδρία. Αν η νέα συνεδρία λειτουργεί και η παλιά πεθαίνει παρ' όλα αυτά, η αιτία είναι η παρακολούθηση συνδέσεων ή ένα τείχος προστασίας με κατάσταση και όχι η δρομολόγηση, που είναι άλλη διόρθωση.
Γράψτε την καρφιτσωμένη διεύθυνση και την εντολή που την απέδειξε στο αρχείο αλλαγών. Ο επόμενος άνθρωπος που θα ξεκινήσει πελάτη σε αυτόν τον ξενιστή θα χρειαστεί και τα δύο, και η διεύθυνση μπορεί να έχει αλλάξει μέχρι τότε.