Το VPN συνδέεται, η γραμμή μενού το δείχνει, και ένας εσωτερικός κεντρικός υπολογιστής εξακολουθεί να λήγει σε χρονικό όριο. Σε αυτή την κατάσταση υπάρχουν τρεις πιθανές αιτίες, και το ποια ισχύει εξαρτάται από το πώς ρυθμίστηκε η σήραγγα. Είτε η εντολή διαδρομής χρησιμοποίησε διεύθυνση κεντρικού υπολογιστή εκεί όπου απαιτούνταν διεύθυνση δικτύου, είτε το ίδιο το προφίλ εγκαθιστά μια προεπιλεγμένη διαδρομή που καταπίνει την απόφαση, είτε ο πελάτης είναι σήραγγα PPP που χρειάζεται hook αντί για κλειδί προφίλ. Ελέγξτε τις με αυτή τη σειρά, γιατί η πρώτη είναι η φθηνότερη προς αποκλεισμό.

Ο προορισμός είναι διεύθυνση δικτύου, η μάσκα περιγράφει το πρόθεμα

Το networksetup -setadditionalroutes δέχεται τριάδες προορισμού, μάσκας υποδικτύου και πύλης. Η κλήση που στέλνει ένα εσωτερικό υποδίκτυο μέσα από τη σήραγγα μοιάζει έτσι:

sudo networksetup -setadditionalroutes "VPN (L2TP)" 192.168.1.0 255.255.255.0 10.2.0.0

Προσέξτε τι είναι ο προορισμός: η διεύθυνση δικτύου, όχι η διεύθυνση του διακομιστή που προσπαθείτε να φτάσετε. Στην περίπτωση που γέννησε αυτό το άρθρο, η πανομοιότυπη εντολή με το 192.168.1.20 σε εκείνη τη θέση δεν έκανε τίποτα χρήσιμο, και η αντικατάστασή του με το 192.168.1.0 λειτούργησε αμέσως. Ίδια μάσκα, ίδια πύλη, ένας διαφορετικός αριθμός. Αυτή είναι όλη η αποτυχία σε σμίκρυνση.

Ο λόγος είναι αριθμητικός και όχι πολιτικός. Μια διεύθυνση κεντρικού υπολογιστή με μάσκα /24 δεν περιγράφει το 192.168.1.0/24· περιγράφει κάτι που ο πίνακας δρομολόγησης δεν μπορεί να κρατήσει χρήσιμα, οπότε η εγγραφή απορρίπτεται ή αγνοείται και η σήραγγα καταλήγει να μεταφέρει λιγότερα από όσα σκοπεύατε.

Όταν θέλετε ακριβώς έναν κεντρικό υπολογιστή, χρησιμοποιήστε τη διεύθυνση κεντρικού υπολογιστή με μάσκα 255.255.255.255. Τα μικτά ζεύγη είναι όπου αυτό πάει στραβά, όχι η χρήση διεύθυνσης κεντρικού υπολογιστή καθαυτή. Ένα /32 φτιαγμένο από μία διεύθυνση είναι νόμιμη διαδρομή· ένα /24 φτιαγμένο από μία διεύθυνση είναι λάθος.

Η κλήση αντικαθιστά τη λίστα, και το όνομα είναι κυριολεκτικό

Δύο συμπεριφορές εκπλήσσουν τους ανθρώπους στην πρώτη προσπάθεια. Η εντολή ορίζει ολόκληρη τη λίστα πρόσθετων διαδρομών αντί να προσθέτει, οπότε μια κλήση που προσθέτει ένα πρόθεμα αφαιρεί σιωπηρά τις άλλες που υπήρχαν πριν. Χτίστε ολόκληρο το σύνολο σε μία κλήση.

Το όνομα της υπηρεσίας επίσης δεν είναι η ετικέτα που επινοήσατε. Διαβάστε το από το εργαλείο και αντιγράψτε το ακριβώς, μαζί με το επίθημα τύπου:

networksetup -listallnetworkservices

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

Όταν το προφίλ διεκδικεί την προεπιλεγμένη διαδρομή

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

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

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

Οι σήραγγες PPP χρειάζονται hook αντί για κλειδί

Για σήραγγες βασισμένες σε PPP, το defaultroute είναι το κλειδί προφίλ που δημιουργεί προεπιλεγμένη διαδρομή· αφαιρέστε το και ο πελάτης σταματά να διεκδικεί κάθε προορισμό. Οι διαδρομές προστίθενται μετά την εμφάνιση της διεπαφής, συνήθως από το /etc/ppp/ip-up:

#!/bin/sh
/sbin/route add -net 192.168.1.0 -interface ppp0

Κρατήστε το σενάριο ιδιοκτησία του root και εκτελέσιμο, και προσθέστε προστασία στο όνομα της διεπαφής όταν υπάρχουν περισσότερα από ένα προφίλ σήραγγας στο μηχάνημα. Ένα hook που εκτελείται για κάθε σύνδεσμο PPP και υποθέτει ένα όνομα συσκευής είναι ένα μικρό σφάλμα με μεγάλη ζωή.

Επαληθεύστε τον διαχωρισμό με τρία αιτήματα

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

Τελειώστε με τρία αιτήματα που αποδεικνύουν τον διαχωρισμό: έναν εσωτερικό κεντρικό υπολογιστή με διεύθυνση, ένα εσωτερικό όνομα μέσω του εσωτερικού resolver και έναν δημόσιο ιστότοπο που θα πρέπει να εξακολουθεί να χρησιμοποιεί την τοπική σύνδεση. Αν ο δημόσιος ιστότοπος τώρα ταξιδεύει κι αυτός μέσα από τη σήραγγα, ο διαχωρισμός δεν έγινε ποτέ, ό,τι κι αν φαίνεται να λέει η λίστα διαδρομών.

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

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