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

Χαρτογραφήστε τα άλματα πριν εκτελέσετε οτιδήποτε

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

HopOwnerWhat it decides
Application requestThe appDestination, resolver, address family
Capture servicePhone VpnService appWhich traffic enters the relay at all
ADB relayHost processForwarding phone flows to host sockets
Host egressHost routing and VPNExit address and host policy

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

Προετοιμάστε τον αναμεταδότη πριν αγγίξετε το τηλέφωνο

Gnirehtet είναι το τεκμηριωμένο παράδειγμα αυτής της αρχιτεκτονικής: πελάτης της υπηρεσίας VPN χωρίς root στο τηλέφωνο συν ένας αναμεταδότης που μεταφέρεται μέσω ADB στον υπολογιστή, με υποστήριξη TCP και UDP πάνω από IPv4. Το αποθετήριό του αναφέρει επίσης ότι το έργο δεν συντηρείται πλέον ενεργά, οπότε αντιμετωπίστε το ως σχεδιαστική αναφορά και λειτουργικό εργαλείο για εργαστήριο, όχι ως υποστηριζόμενο προϊόν για τυποποίηση σε διαχειριζόμενο στόλο.

adb devices
adb shell getprop ro.build.version.release
gnirehtet run

Εκτελέστε πρώτα adb devices. Ένα τηλέφωνο που δεν έχει δεχτεί το κλειδί αποσφαλμάτωσης του υπολογιστή αναφέρεται ως μη εξουσιοδοτημένο, και ο αναμεταδότης δεν θα συνδεθεί μέχρι να γίνει δεκτό το αίτημα στη συσκευή. gnirehtet run εγκαθιστά τον πελάτη, ξεκινά τον αναμεταδότη και ενεργοποιεί τη σύλληψη· σε έκδοση που χωρίζει τα βήματα, χρησιμοποιήστε αντί γι’ αυτό τις τεκμηριωμένες υποεντολές install, relay και start.

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

Επαναφέρετε το VPN του υπολογιστή στη διαδρομή

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

ip route get 1.1.1.1
curl -4 https://ifconfig.me
sudo ss -tnp | grep -i relay

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

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

Επαληθεύστε κάθε άλμα ξεχωριστά

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

adb shell dumpsys connectivity | grep -i -A3 vpn
adb logcat -s GnirehtetRelay:V Gnirehtet:V

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

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

Αποσυναρμολογήστε και επιλέξτε τη συμπεριφορά αποτυχίας

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

gnirehtet stop
gnirehtet uninstall
adb kill-server

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

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

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