Η διεπαφή utun σε Mac VPN είναι ενεργή αλλά η κίνηση αποτυγχάνει; Ελέγξτε το ifconfig
Το ifconfig δείχνει όνομα utun, διεύθυνση και MTU, αλλά όχι ποια εφαρμογή το κατέχει ή πού πάνε τα πακέτα. Πέντε έλεγχοι μόνο για ανάγνωση που απαντούν στην πραγματική ερώτηση.
Συνδέσατε το VPN, εκτελέσατε το ifconfig και βρήκατε μια καταχώριση utun4 με διεύθυνση πάνω της. Ο ιστότοπος που χρειαζόσασταν εξακολουθεί να λήγει. Αυτό το κενό είναι φυσιολογικό: η λίστα αποδεικνύει ότι υπάρχει μια εικονική διεπαφή, όχι ότι την κατέχει ο πελάτης σας, ότι η διαδρομή που σας ενδιαφέρει την επιλέγει ή ότι τα πακέτα τη διασχίζουν. Σταμάτησα να εμπιστεύομαι το όνομα της διεπαφής μετά από ένα απόγευμα που κατηγορούσα το λάθος τούνελ σε ένα φορητό που είχε ήδη τρεις καταχωρίσεις utun πριν εγκαταστήσω οτιδήποτε.
Τι περιέχει στην πραγματικότητα μια γραμμή utun
Εκτελέστε το ifconfig -a όταν θέλετε την πλήρη εικόνα. Χωρίς ορίσματα, το ifconfig εκτυπώνει μόνο τις διεπαφές που είναι ενεργές αυτή τη στιγμή, γι' αυτό ένα τούνελ που δεν ξεκίνησε μπορεί να λείπει από την έξοδο που επικολλούν οι άνθρωποι στα δελτία. Το ifconfig -l επιστρέφει μόνο τα ονόματα, και αυτός είναι ο ταχύτερος τρόπος να δείτε αν εμφανίστηκε νέο utun αφού συνδεθήκατε.
Η ανάγνωση μιας μεμονωμένης διεπαφής είναι εκεί όπου ζουν οι χρήσιμες λεπτομέρειες. Ένα συνδεδεμένο τούνελ συνήθως μοιάζει έτσι:
utun4: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1380
inet 10.8.0.6 --> 10.8.0.5 netmask 0xffffffff
inet6 fe80::ce81:b1c:bd2c:69e%utun4 prefixlen 64 scopeid 0x15
Τρία πεδία μεταφέρουν την απάντηση. Τα UP και RUNNING λένε ότι ο πυρήνας είναι πρόθυμος να χρησιμοποιήσει τη διεπαφή. Το POINTOPOINT μαζί με τη διεύθυνση του ομοτίμου --> είναι η υπογραφή ενός τούνελ και όχι ενός φυσικού συνδέσμου. Η τιμή mtu εξηγεί μια ολόκληρη κατηγορία αναφορών «συνδέεται και μετά κολλάει», επειδή οι διεπαφές utun συνήθως ανεβαίνουν με μειωμένο MTU, 1380 σε αρκετές εκδόσεις του macOS, και ο πελάτης μπορεί να το υπερκαλύψει. Η λίστα πεδίων είναι αρκετά σύντομη για να τη διατρέξετε μία φορά στο εγχειρίδιο του ifconfig που διανέμει η Apple.
Βρείτε τη διεργασία πίσω από τη διεπαφή
Το ifconfig δεν έχει καμία έννοια εφαρμογής που το κατέχει. Δύο πελάτες VPN, μια υπηρεσία συστήματος και ένα εναπομείναν τούνελ από την περασμένη εβδομάδα παράγουν καταχωρίσεις που σε αυτό το επίπεδο φαίνονται ίδιες. Στο δικό μου Mac, τα utun0 έως utun3 υπήρχαν πριν ρυθμίσω οτιδήποτε· το Continuity και το iCloud Private Relay χρησιμοποιούν επίσης τούνελ, και κανένα από αυτά δεν είναι η σύνδεση που ερευνάτε.
Για τούνελ που καταχωρίζουν μια διαμόρφωση στο σύστημα, το scutil --nc list είναι η ταχύτερη αντιστοίχιση. Εκτυπώνει κάθε διαμόρφωση με την κατάσταση και το ID υπηρεσίας της, και η συνδεδεμένη σημειώνεται ως εξής:
scutil --nc list
* (Connected) 5F2A9C10-... VPN Work IKEv2
Οι πελάτες που εκτελούν τη δική τους διεργασία τούνελ αντί να καταχωρίζουν διαμόρφωση δεν εμφανίζονται ποτέ εκεί. Το Tunnelblick και μια περίπτωση openvpn από τη γραμμή εντολών ανήκουν σε αυτή την ομάδα, οπότε ελέγξτε και τον πίνακα διεργασιών: ps -Ao pid,comm | grep -i openvpn. Μόλις μια διεργασία κατέχει το τούνελ, ο αριθμός utun ανήκει σε αυτή τη διεργασία και σε καμία άλλη.
Δοκιμάστε τη διεύθυνση πριν δοκιμάσετε τη διαδρομή
Μια διεπαφή μπορεί να είναι ενεργή χωρίς χρησιμοποιήσιμη διεύθυνση. Ένα προφίλ μόνο IPv6 δείχνει μια τοπική ζεύξης καταχώριση fe80:: και τίποτα στη γραμμή inet, και ένας πελάτης που απέτυχε να εφαρμόσει μια διεύθυνση που του ώθησαν αφήνει ακριβώς το ίδιο σχήμα. Αν ο προορισμός σας είναι IPv4 και το τούνελ δεν έχει διεύθυνση IPv4, το ζήτημα δρομολόγησης έχει ήδη κριθεί.
Το MTU αξίζει ξεχωριστό έλεγχο, γιατί η αποτυχία δεν μοιάζει με πρόβλημα μεγέθους. Μοιάζει με σύνδεση που αυθεντικοποιείται και μετά σωπαίνει μόλις ξεκινήσει μια μεγάλη μεταφορά. Στείλτε έναν ανιχνευτή που δεν πρέπει να κατατμηθεί, διαστασιολογημένο ώστε το πακέτο να ταιριάζει με το MTU της διεπαφής· για MTU 1400 το ωφέλιμο φορτίο είναι 1372 byte:
ping -D -s 1372 10.8.0.5
Μια απάντηση σημαίνει ότι πακέτα αυτού του μεγέθους διασχίζουν το τούνελ. Η σιωπή ενώ τα μικρά ping πετυχαίνουν δείχνει στο MTU ή σε κάτι που ρίχνει το ICMP στη διαδρομή, όχι στην αυθεντικοποίηση, η οποία είχε ήδη ολοκληρωθεί πριν αποκτήσετε καθόλου διεπαφή.
Αποδείξτε ότι ο προορισμός επιλέγει το τούνελ
Το ερώτημα που μετράει δεν είναι αν υπάρχει το utun4, αλλά αν η κίνηση προς μία συγκεκριμένη διεύθυνση βγαίνει μέσα από αυτό. Το route -n get απαντά σε αυτό για έναν μεμονωμένο προορισμό και εκτυπώνει την πύλη και τη διεπαφή που θα χρησιμοποιούσε:
route -n get 203.0.113.20
gateway: 10.8.0.5
interface: utun4
Αν η ίδια εντολή αναφέρει en0, η διαμόρφωση split-tunnel σας κάνει αυτό που της είπαν και καμία ποσότητα επιθεώρησης διεπαφών δεν θα το αλλάξει. Χρησιμοποιήστε το netstat -rn -f inet όταν χρειάζεστε την προεπιλεγμένη διαδρομή και ολόκληρο τον πίνακα σε μία προβολή.
Οι μετρητές κρίνουν αν τα πακέτα κινούνται πραγματικά. Το netstat -ib αναφέρει σύνολα πακέτων και byte ανά διεπαφή, συμπεριλαμβανομένων των καταχωρίσεων utun· οι αριθμοί είναι σωρευτικοί, οπότε διαβάστε τους δύο φορές με ένα κενό και συγκρίνετε:
netstat -ib | grep utun4
Μετρητές παγωμένοι ενώ η εφαρμογή συνεχίζει να επαναλαμβάνει σημαίνει ότι ο πυρήνας δεν παρέδωσε ποτέ πακέτο στη διεπαφή. Μετρητές που ανεβαίνουν και προς τις δύο κατευθύνσεις ενώ η εφαρμογή εξακολουθεί να αποτυγχάνει μεταφέρουν την έρευνα στο μακρινό άκρο του τούνελ.
Όταν δεν εμφανίζεται καθόλου utun
Μια κενή λίστα διεπαφών μετά από σύνδεση που φαινόταν επιτυχής συνήθως σημαίνει ότι το τούνελ δεν ξεκίνησε ποτέ, όχι ότι το ifconfig το κρύβει. Ελέγξτε την κατάσταση του ίδιου του πελάτη και μετά του συστήματος: μια επέκταση δικτύου που δεν εγκρίθηκε ποτέ, ή που το macOS απενεργοποίησε μετά από ενημέρωση, δεν αφήνει καμία διεπαφή πίσω της. Η έγκριση ζει στις Ρυθμίσεις Συστήματος κάτω από το Login Items & Extensions, και μια παλιά καταχώριση εκεί αξίζει να ξανα-εναλλαγεί πριν επανεγκαταστήσετε οτιδήποτε.
Η αρίθμηση utun δεν είναι σταθερή μεταξύ επανασυνδέσεων. Μπορεί να πάρετε utun5 εκεί όπου πριν δέκα λεπτά υπήρχε utun4, επειδή η παλιά διεπαφή κατεδαφίζεται και ο πυρήνας δίνει το επόμενο ελεύθερο ευρετήριο. Τα σενάρια που καρφώνουν ένα όνομα σπάνε σιωπηλά εκείνη τη στιγμή· αντιστοιχίστε τη διεύθυνση ή τη διαδρομή αντ' αυτού.
Κρατήστε την πλευρά ανάγνωσης μόνο για ανάγνωση. Το sudo ifconfig utun4 down διακόπτει το τούνελ, και σε προφίλ πλήρους τούνελ παίρνει μαζί και την απομακρυσμένη συνεδρία σας, κάτι που είναι κακή ανταλλαγή όταν απλώς συλλέγατε στοιχεία. Τίποτα από όσα χρειάζεστε εδώ δεν απαιτεί root: η ανάγνωση σημαιών, διευθύνσεων και μετρητών λειτουργεί ως κανονικός χρήστης.
Δουλέψτε τους ελέγχους με σειρά την επόμενη φορά που ένα τούνελ σε Mac θα συμπεριφερθεί άσχημα: επιβεβαιώστε ότι εμφανίστηκε utun με το ifconfig -l, διαβάστε τις σημαίες, τις διευθύνσεις και το MTU του, αποδώστε το σε μια διεργασία, ρωτήστε το route -n get ποια διεπαφή χρησιμοποιεί ο προορισμός και μετά παρακολουθήστε το netstat -ib να κινείται. Κάθε βήμα αποκλείει ένα διαφορετικό επίπεδο, και το πρώτο που επιστρέφει λάθος είναι εκεί όπου ανήκει η διόρθωση.