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

Μια διεπαφή εμφανίζεται πριν λειτουργήσει οτιδήποτε

Ένας πελάτης τούνελ ανοίγει μια εικονική διεπαφή και της παραδίδει πακέτα. Μια συσκευή TUN μεταφέρει πακέτα IP, που είναι ό,τι χρειάζεται ένα δρομολογημένο VPN· μια συσκευή TAP μεταφέρει πλαίσια Ethernet, που είναι ό,τι χρειάζεται ένας σχεδιασμός γέφυρας. Το άρθρωμα πυρήνα παρέχει τη συσκευή, και ο πελάτης την κατέχει όσο διαρκεί η συνεδρία.

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

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

Οι διαδρομές εγκαθίστανται από όποιον κατέχει το τούνελ

Οι διαδρομές είναι η δεύτερη αλλαγή, και η ιδιοκτησία τους μετράει περισσότερο από το περιεχόμενό τους. Ένα προφίλ NetworkManager, μια μονάδα systemd και ένας πελάτης που εκτελείται με το χέρι μπορούν όλοι να εγκαταστήσουν διαδρομές, και όταν δύο από αυτούς το κάνουν ταυτόχρονα, προκύπτει ένας πίνακας που κανείς δεν μπορεί να εξηγήσει αργότερα.

ip -br addr show
ip route show
ip -6 route show

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

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

Ο resolver αλλάζει χέρια

Το DNS είναι η τρίτη αλλαγή και αυτή που πιθανότατα διαχειρίζεται κάπου που δεν κοιτάξατε. Σε έναν υπολογιστή γραφείου, το NetworkManager μπορεί να προωθεί ρυθμίσεις resolver ανά σύνδεση. Σε ένα σύστημα που χρησιμοποιεί systemd-resolved, οι ρυθμίσεις εφαρμόζονται ανά σύνδεσμο και το /etc/resolv.conf μπορεί να είναι ένα stub ή ένας συμβολικός σύνδεσμος και όχι ένα αρχείο που θα έπρεπε να επεξεργαστείτε.

resolvectl status
readlink -f /etc/resolv.conf
cat /etc/resolv.conf

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

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

Ένας διαχειριστής ανά σύνδεση

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

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

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

Τι να ελέγξετε όταν είναι ανεβασμένο αλλά δεν λειτουργεί

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

nmcli connection show --active
nmcli device status
wg show

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

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

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