Συνδέετε το VPN του γραφείου και το Android Studio χάνει τον εξομοιωτή που εκτελείται, το adb start-server κολλάει και ένα φυσικό τηλέφωνο σε Wi-Fi πέφτει από τη λίστα συσκευών. Φαίνεται σαν ένα προϊόν να μπλοκάρεται από μία σήραγγα. Στην πράξη τρεις ξεχωριστές διαδρομές αποτυγχάνουν με τρεις τρόπους: η ανακάλυψη συσκευών adb, το εικονικό δίκτυο του εξομοιωτή και ο resolver του κεντρικού υπολογιστή. Η σήραγγα συνήθως κατέχει μόνο την τελευταία, και συχνά μόνο ένα μέρος της.

Τρία socket, τρεις ιδιοκτήτες

Ο διακομιστής adb ακούει στη θύρα 5037 στον κεντρικό υπολογιστή και μιλά με συσκευές μέσω USB ή TCP, με mDNS για ανακάλυψη δικτύου. Ο εξομοιωτής εκτελείται πίσω από τον δικό του εικονικό δρομολογητή: ο φιλοξενούμενος είναι 10.0.2.15, η πύλη του 10.0.2.2 και ο διακομιστής DNS του 10.0.2.3, και η διεργασία του εξομοιωτή τα μετατρέπει όλα σε socket του κεντρικού υπολογιστή. Ο resolver του κεντρικού υπολογιστή είναι το σημείο όπου ο πελάτης VPN εγκαθιστά DNS και τομείς αναζήτησης.

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

Ξεκινήστε με ό,τι βλέπει το adb

Εκτελέστε adb devices πριν αγγίξετε το VPN. Μια κενή λίστα είναι πρόβλημα μεταφοράς, όχι δρομολόγησης, και καμία ρύθμιση σήραγγας δεν θα διορθώσει συσκευή που ο διακομιστής δεν απαρίθμησε ποτέ. Επανεκκινήστε τον διακομιστή καθαρά: πρώτα adb kill-server έπειτα adb start-server, και διαβάστε την έξοδο για τη θύρα που δεσμεύτηκε. Αν η ίδια η εκκίνηση κολλάει, η ανακάλυψη mDNS είναι ο συνήθης ύποπτος σε δίκτυο που φιλτράρει multicast· η τεκμηριωμένη λύση είναι εκκίνηση του διακομιστή με απενεργοποιημένη ανακάλυψη:

ADB_MDNS_OPENSCREEN=0 adb start-server
adb devices

Για φυσική συσκευή το USB είναι η συντομότερη διαδρομή. Αν χρειάζεστε TCP, βάλτε τη συσκευή σε λειτουργία ακρόασης με adb tcpip 5555 και συνδεθείτε στη διεύθυνση και τη θύρα της συσκευής, adb connect 192.0.2.10:5555. Η θύρα 5037 είναι η θύρα του διακομιστή και όχι η θύρα στην οποία ακούει μια συσκευή.

Δοκιμάστε τον εξομοιωτή από μέσα

Ο εξομοιωτής απαντά σε DNS από το 10.0.2.3, και αυτός ο resolver τροφοδοτείται από τη διεργασία του κεντρικού υπολογιστή. Όταν ο πελάτης VPN αλλάζει τον resolver, ο εξομοιωτής μπορεί να τον κληρονομήσει· όταν ο πελάτης φιλτράρει τη διεργασία του εξομοιωτή ή η λίστα προσαρμογέων αλλάξει μετά την εκκίνηση, δεν μπορεί. Διαχωρίστε τα δύο με αριθμητικό στόχο και όνομα από το ίδιο shell. adb shell ping -c 2 10.0.2.2 αποδεικνύει ότι το εικονικό δίκτυο φτάνει στην πλευρά του κεντρικού υπολογιστή. Μια αναζήτηση ονόματος μετά δείχνει αν η επίλυση πέρασε τα όρια.

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

Ελέγξτε τον resolver και τα φίλτρα του πελάτη

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

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

Σειρά ελέγχων και τι σημαίνει κάθε αποτέλεσμα

Δουλέψτε από πάνω προς τα κάτω και σταματήστε στην πρώτη γραμμή που αποτυγχάνει. Κάθε αποτέλεσμα δείχνει άλλον ιδιοκτήτη και κανένα δεν διορθώνεται με επανεγκατάσταση του Android Studio.

ResultLikely ownerNext check
adb devices is empty with USB attachedUSB, driver or adb servercable, authorization prompt, adb kill-server
adb start-server hangsmDNS discoveryADB_MDNS_OPENSCREEN=0
Emulator reaches 10.0.2.2, names failHost resolver to emulator boundaryhost lookup of the same name
Host resolves, emulator still failsEmulator process or client filterrestart emulator, ask IT about virtual adapters
Both fail for internal names onlySplit DNS or search domainresolver and zone configuration

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

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