Μια διαδρομή προς δίκτυο VPN μεταφέρει δύο διευθύνσεις που εύκολα συγχέονται: το πρόθεμα προορισμού που το πακέτο προσπαθεί να φτάσει και το επόμενο άλμα που θα το μετακινήσει ένα βήμα πιο κοντά. Σε κεντρικό υπολογιστή LAN, αυτό το επόμενο άλμα πρέπει να είναι δρομολογητής τον οποίο μπορείτε πράγματι να φτάσετε στον ίδιο σύνδεσμο. Η απομακρυσμένη διεύθυνση VPN δεν είναι επόμενο άλμα, όσο τακτικά κι αν ταιριάζει με τον προορισμό που έχετε κατά νου.

Αυτό το εγχειρίδιο καλύπτει τη συνήθη περίπτωση: φορητός υπολογιστής στο 192.168.20.0/24, πύλη VPN με διεύθυνση LAN 192.168.20.5 και απομακρυσμένο δίκτυο 10.70.0.0/24 πίσω από αυτή την πύλη. Όλες οι εντολές παρακάτω υποθέτουν ότι βρίσκεστε στον φορητό υπολογιστή, εκτός αν αναφέρεται διαφορετικά.

Δύο διευθύνσεις, μία διαδρομή

Η προβλεπόμενη καταχώριση είναι 10.70.0.0/24 via 192.168.20.5. Το πρόθεμα λέει πού πηγαίνει το πακέτο· η διεύθυνση via λέει ποιος το μεταφέρει εκεί. Ο πυρήνας αρνείται να εγκαταστήσει διαδρομή της οποίας την πύλη δεν μπορεί να φτάσει μέσω της διεπαφής που ονομάζετε, και αυτή η άρνηση είναι όλο το νόημα: ένα επόμενο άλμα που χρειάζεται τη σήραγγα για να είναι προσβάσιμο δεν μπορεί να είναι το επόμενο άλμα που χτίζει τη σήραγγα.

Έτσι ο πρώτος έλεγχος δεν είναι «δουλεύει η πύλη» αλλά «είναι η πύλη σε αυτόν τον σύνδεσμο». Το δικό του υποδίκτυο του φορητού υπολογιστή, η καταχώριση ARP ή γείτονα και η διεπαφή στη διαδρομή πρέπει όλα να συμφωνούν. Μια διεύθυνση που υπάρχει μόνο μέσα στο 10.70.0.0/24 μπορεί να είναι προορισμός δεύτερης διαδρομής, ποτέ όμως via της πρώτης.

Σε τι δεσμεύει το επόμενο άλμα την πύλη

Η εγκατάσταση της διαδρομής στον φορητό υπολογιστή καθορίζει μόνο την πρώτη παράδοση. Μετά η πύλη χρειάζεται τη δική της διαδρομή: ενεργή προώθηση, διαδρομή σήραγγας για το 10.70.0.0/24 και οποιαδήποτε πολιτική πρόσβασης ρυθμίζει ποιος μπορεί να το χρησιμοποιήσει. Στο Linux αυτό είναι net.ipv4.ip_forward=1 συν διαδρομή σήραγγας· ένα τείχος προστασίας μπροστά χρειάζεται κανόνα που επιτρέπει τη προωθούμενη ροή.

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

Επαληθεύστε την αναζήτηση από τον κεντρικό υπολογιστή που στέλνει

Ρωτήστε τον πυρήνα ποιο επόμενο άλμα θα διάλεγε και διαβάστε τη διεπαφή στην απάντηση:

ip route get 10.70.0.10
ip route show 10.70.0.0/24
ip neigh show 192.168.20.5

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

Στη συνέχεια επαναλάβετε τη δοκιμή από το σωστό σημείο. Ένα αίτημα που δημιουργείται στην πύλη χρησιμοποιεί τη δική της διεύθυνση πηγής, κάτι που μπορεί να κρύψει μια διαδρομή επιστροφής που λείπει ή μια πολιτική που επιτρέπει μόνο ορισμένες πηγές. Το εγχειρίδιο του ip-route διαχωρίζει τον προορισμό, την πύλη και την παράκαμψη onlink, και η παράκαμψη αξίζει να την καταλάβετε πριν τη χρησιμοποιήσετε.

Μη χρησιμοποιείτε το onlink για να προσποιηθείτε προσβασιμότητα

Το onlink λέει στον πυρήνα να παραλείψει τον έλεγχο προσβασιμότητας για μια πύλη και να στείλει εκεί ούτως ή άλλως. Δεν δημιουργεί μονοπάτι, δεν επιλύει ARP για μια διεύθυνση που δεν υπάρχει και δεν κάνει έναν απομακρυσμένο δρομολογητή να απαντήσει στο τμήμα Ethernet σας. Είναι νόμιμο για πύλες που απαντούν αλλά δεν βρίσκονται σε συνδεδεμένο υποδίκτυο, και είναι παγίδα όταν χρησιμοποιείται για να σιγήσει ένα σφάλμα που δεν έχετε εξηγήσει.

Αν η διαδρομή εγκαθίσταται μόνο με το onlink, το επόμενο ερώτημα είναι γιατί η πύλη δεν είναι εκεί που νομίζετε. Λάθος VLAN, δεύτερη διεύθυνση στη λάθος διεπαφή ή τυπογραφικό λάθος στο τελευταίο οκτέτο τα παράγουν όλα αυτά, και καθένα από αυτά σπάει και τη διαδρομή επιστροφής μόλις αρχίσει να ρέει η κίνηση.

Οι σήραγγες σημείου-προς-σημείο δεν είναι Ethernet

Μια συσκευή σήραγγας δεν κάνει ARP και συχνά δεν έχει ουσιαστικό υποδίκτυο γειτόνων. Οι διαδρομές της συχνά μοιάζουν με 10.70.0.0/24 dev tun0, χωρίς καθόλου via, επειδή ο ομότιμος είναι το μόνο άλλο άκρο. Η αντιγραφή ενός via τύπου LAN σε αυτόν τον πίνακα παράγει διαδρομή που ο πυρήνας μπορεί να απορρίψει ή, χειρότερα, μια που δείχνει σε διεύθυνση στην οποία ο ομότιμος δεν απαντά ποτέ.

Κρατήστε τα δύο μοντέλα χωριστά στο εγχειρίδιο: μια διαδρομή LAN έχει προσβάσιμη πύλη, μια διαδρομή σήραγγας έχει διεπαφή και ομότιμο. Τα WireGuard, OpenVPN και IPsec εκθέτουν ελαφρώς διαφορετικά σχήματα, οπότε καταγράψτε το σχήμα που χρησιμοποιήσατε πραγματικά αντί να γενικεύετε από έναν υπολογιστή.

Προσθέστε, επιβεβαιώστε, επαναφέρετε

Η όλη αλλαγή είναι τρεις εντολές και ένας έλεγχος, και θα πρέπει να γραφτεί με αυτή τη σειρά:

sudo ip route add 10.70.0.0/24 via 192.168.20.5
ip route get 10.70.0.10
ping -c 3 10.70.0.10
sudo ip route del 10.70.0.0/24 via 192.168.20.5

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

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