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

Σχεδιάστε τα δύο άλματα πριν αγγίξετε μια διαδρομή

Πάρτε μια ενδεικτική διάταξη: κεντρικοί υπολογιστές LAN στο 192.168.50.0/24, ο συνηθισμένος δρομολογητής στο 192.168.50.1, ένας αποκλεισμένος πελάτης στο 192.168.50.15 και ένα απομακρυσμένο LAN στο 10.60.0.0/24 προσβάσιμο μόνο μέσα από τη σήραγγα που κρατά αυτός ο πελάτης. Κανένα από τα δύο ιδιωτικά εύρη δεν επικαλύπτει το άλλο, και η σήραγγα έχει το δικό της σχέδιο διευθύνσεων.

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

Βήμα 1: στρέψτε τον δρομολογητή στον πελάτη, όχι στη σήραγγα

Στον δρομολογητή LAN, προσθέστε μια διαδρομή προορισμού της οποίας το επόμενο άλμα είναι η διεύθυνση LAN του πελάτη:

ip route add 10.60.0.0/24 via 192.168.50.15
ip route get 10.60.0.55

Αυτή η εγγραφή λέει «παράδωσέ το στο μηχάνημα που μπορεί να κάνει σήραγγα». Δεν λέει τίποτα για το πώς χτίζεται η σήραγγα, και δεν αντικαθιστά τη δική του διαδρομή του πελάτη. Σε διαχειριζόμενο δρομολογητή το αντίστοιχο ζει στη σελίδα στατικών διαδρομών της συσκευής· σε δρομολογητή Linux ανήκει στη διαμόρφωση της διεπαφής που κατέχει το LAN, όχι σε ένα κέλυφος που θα κλείσετε.

Ελέγξτε την απάντηση της δεύτερης εντολής. Αν αναφέρει τον πελάτη ως gateway και τη διεπαφή LAN ως device, το πρώτο άλμα είναι σωστό και η υπόλοιπη δουλειά είναι στο άλλο μηχάνημα.

Βήμα 2: δώστε στον πελάτη δική του διαδρομή από την πλευρά της σήραγγας

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

Κοιτάξτε πριν προσθέσετε οτιδήποτε:

ip route show table all | grep -E "10\.60\.0\.0/24|default"
sysctl net.ipv4.ip_forward

Μια απούσα διαδρομή προθέματος σε όλους τους πίνακες είναι το εύρημα που ψάχνετε. Προσθέστε την μέσα από τη διαμόρφωση της ίδιας της σήραγγας, ώστε η επόμενη επανασύνδεση να την εγκαταστήσει ξανά· μια χειροκίνητη ip route add εξαφανίζεται μαζί με τη συνεδρία και κάνει τη βλάβη να επιστρέψει στην πιο άβολη στιγμή. Το επόμενο άλμα είναι η διεπαφή σήραγγας ή η διεύθυνση που εκχωρεί η VPN ως ομότιμη, ανάλογα με τον πελάτη, και η διεύθυνση ομοτίμου πρέπει να προέρχεται από το τρέχον προφίλ και όχι από μια παλιά σημείωση.

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

Βήμα 3: επιτρέψτε την προώθηση και διαλέξτε τη διαδρομή επιστροφής

Η λήψη και η προώθηση είναι διαφορετικές άδειες. Το net.ipv4.ip_forward=1 στον πελάτη επιτρέπει διέλευση σε επίπεδο πυρήνα, και ένας κανόνας τείχους προστασίας πρέπει ακόμη να το επιτρέπει ανάμεσα στη διεπαφή LAN και τη σήραγγα. Ένας κανόνας που επιτρέπει πρόσβαση στη σελίδα διαχείρισης του ίδιου του πελάτη δεν θα επιτρέψει διέλευση προς το απομακρυσμένο LAN, και η διάκριση χάνεται εύκολα όταν ο ίδιος κεντρικός υπολογιστής απαντά τοπικά σε ping.

Η απομακρυσμένη πλευρά έχει το κατοπτρικό πρόβλημα. Πρέπει να γνωρίζει ότι το 192.168.50.0/24 είναι προσβάσιμο μέσω αυτού του πιστοποιημένου πελάτη. Με OpenVPN αυτό συνήθως σημαίνει μια διαδρομή ανά πελάτη που σπρώχνεται από τη διαμόρφωση του διακομιστή, ή ένα αρχείο ειδικό για τον πελάτη στον διακομιστή που δηλώνει το LAN πίσω από τον πελάτη. Χωρίς αυτό, το απομακρυσμένο LAN είτε ρίχνει την απάντηση είτε τη στέλνει στη δική του προεπιλεγμένη πύλη, δηλαδή στο διαδίκτυο.

Η μετάφραση πηγής είναι η εναλλακτική όταν το πρόθεμα LAN δεν μπορεί να διαφημιστεί. Ένας περιορισμένος κανόνας masquerade στον πελάτη ξαναγράφει την πηγή στη διεύθυνση σήραγγας, και οι απαντήσεις επιστρέφουν τότε φυσικά. Κρύβει επίσης ποιος κεντρικός υπολογιστής LAN έκανε το αίτημα, και από μόνος του δεν επιτρέπει στην απομακρυσμένη πλευρά να ξεκινήσει συνδέσεις προς τα μέσα. Διαλέξτε αυτόν τον συμβιβασμό συνειδητά αντί να προσθέσετε ένα καθολικό masquerade και να ανακαλύψετε την παρενέργεια αργότερα.

Βήμα 4: κάντε σταθερές και τις δύο αποφάσεις και μετά δοκιμάστε την πραγματική διαδρομή

Κάθε διαδρομή έχει ιδιοκτήτη, και ιδιοκτήτης είναι η διαμόρφωση που αναπαράγεται στην εκκίνηση ή στην επανασύνδεση. Στον δρομολογητή μπορεί να είναι μια καταχώριση στατικής διαδρομής· στον πελάτη μπορεί να είναι το προφίλ VPN, το NetworkManager ή το systemd-networkd. Επαληθεύστε επανασυνδέοντας τη σήραγγα και επανεκκινώντας τον πελάτη, και μετά διαβάστε ξανά τον πίνακα αντί να εμπιστευτείτε την αλλαγή.

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

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

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