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

Δύο συστατικά, μία διαδρομή πακέτου

Ο πυρήνας γράφει ένα πακέτο IP στη συσκευή και το πρόγραμμα το διαβάζει από έναν περιγραφέα αρχείου. Στην αντίθετη κατεύθυνση το πρόγραμμα γράφει ένα πακέτο πίσω και ο πυρήνας το δρομολογεί σαν να έφτασε σε πραγματική διεπαφή. Το TUN μεταφέρει IP, ενώ το TAP μεταφέρει πλαίσια Ethernet. Η ανάγνωση ενός πακέτου σε αυτό το σύνορο δείχνει την πλαισίωση, και γι' αυτό ακριβώς υπάρχει η συσκευή.

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

Δημιουργήστε τη συσκευή και μετά παρατηρήστε το σύνορο

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

sudo ip tuntap add dev tun9 mode tun user alice
ip -d link show tun9

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

Τι δεν μπορεί να υποσχεθεί το όνομα της διεπαφής

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

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

Προσαρμόστε τη διόρθωση στο στάδιο που αποτυγχάνει

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

ip -d link show tun0
journalctl -u openvpn-client@corp --since '10 min ago'

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

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