Προώθηση θυρών στο hotspot Android: τα τρία σημεία εισόδου
Το τηλέφωνο, η διαδρομή του παρόχου και η έξοδος VPN δείχνουν διαφορετικά όρια. Βρείτε ποια μηχανή κατέχει το socket που ακούει πριν ανοίξετε θύρα.
Ενεργοποιήσατε το hotspot, συνδέσατε το VPN, ανοίξατε μια θύρα στην εφαρμογή, και η άλλη συσκευή εξακολουθεί να μη συνδέεται. Το κομμάτι που λείπει σχεδόν ποτέ δεν είναι η ίδια η θύρα, αλλά το ποια μηχανή κατέχει το socket που ακούει και ποια διεύθυνση πρέπει να φτάσει η άλλη συσκευή. Ξεκινώ από το τηλέφωνο προς τα έξω, γιατί η οθόνη μπροστά σας λέει ποιο από τα τρία σημεία εισόδου δοκιμάζετε.
Ξεκινήστε από εκεί όπου τρέχει πραγματικά η υπηρεσία
Ανοίξτε την εφαρμογή που πρέπει να δεχτεί τη σύνδεση και διαβάστε τη σελίδα κατάστασής της. Αν λέει ότι ακούει, σημειώστε τη διεύθυνση στην οποία είναι δεσμευμένη, γιατί αυτή η λεπτομέρεια καθορίζει τις περισσότερες περιπτώσεις παρακάτω. Εφαρμογή δεσμευμένη στη 127.0.0.1 είναι προσβάσιμη μόνο από το τηλέφωνο, και ούτε πελάτης hotspot ούτε αντιστοίχιση παρόχου ούτε έξοδος VPN το αλλάζει.
Έπειτα επιβεβαιώστε ποια συσκευή τρέχει την υπηρεσία. Αν είναι το τηλέφωνο, το socket ανήκει σε εκείνη την εφαρμογή· αν είναι φορητός πίσω από το hotspot, ο ακροατής και το τείχος προστασίας ανήκουν στον φορητό και το τηλέφωνο απλώς προωθεί πακέτα. Είναι διαφορετικές σχεδιάσεις, και η ανάμειξή τους είναι ο λόγος που μια θύρα ανοιγμένη στο ένα σημείο δεν κάνει τίποτα στο άλλο.
Σε build με δυνατότητα αποσφαλμάτωσης, το adb shell απαριθμεί sockets μέσω /proc/net/tcp, αλλά για τους περισσότερους η κατάσταση της ίδιας της εφαρμογής είναι η έντιμη πηγή.
Πρώτο σημείο εισόδου: άλλη συσκευή στο hotspot
Αυτή είναι η τοπική περίπτωση και η ευκολότερη. Η άλλη συσκευή φτάνει το τηλέφωνο στη διεύθυνση που βλέπει ως πύλη της, στη θύρα όπου ακούει η εφαρμογή, και τίποτα έξω από το hotspot δεν εμπλέκεται. Δεν χρειάζεται αντιστοίχιση παρόχου, γιατί η κίνηση δεν εγκαταλείπει το τοπικό τμήμα.
Δύο πράγματα το χαλάνε: η εφαρμογή δεσμευμένη στο loopback, ή η πολιτική πελάτη στο τηλέφωνο που δεν επιτρέπει την τοπική σύνδεση. Δοκιμάστε με το δικό της πρωτόκολλο της εφαρμογής και όχι με γυμνό TCP, γιατί ένας ακροατής που δέχεται και μετά απορρίπτει μοιάζει από απόσταση με κλειστή θύρα.
Αν η υπηρεσία τρέχει σε συνδεδεμένο φορητό, η διεύθυνση hotspot του τηλεφώνου δεν είναι καθόλου ο προορισμός· χρειάζεστε τη διεύθυνση του φορητού στη διεπαφή hotspot και ακροατή εκεί.
Δεύτερο σημείο εισόδου: η διαδρομή του παρόχου
Το να φτάσετε το τηλέφωνο από το δίκτυο κινητής είναι άλλο πρόβλημα, και συνήθως δεν δουλεύει για IPv4. Οι πάροχοι βάζουν τις συσκευές πίσω από κοινή μετάφραση, και γι αυτό το RFC 6598 κρατά κοινό εύρος διευθύνσεων ακριβώς για αυτή τη διάταξη. Μια αζήτητη εισερχόμενη σύνδεση δεν έχει αντιστοίχιση για να φτάσει, και καμία τοπική ρύθμιση δεν δημιουργεί μία, γιατί ο μεταφραστής δεν είναι η συσκευή σας.
Η πρόσβαση root δεν το αλλάζει ούτε αυτό· δίνει έλεγχο της στοίβας του τηλεφώνου, όχι του μεταφραστή του παρόχου. Όπου ο πάροχος προσφέρει δημόσιο πρόθεμα IPv6 μπορεί να υπάρχει εισερχόμενη διαδρομή, αλλά ο ακροατής και το τείχος προστασίας χρειάζονται ακόμη ρητή έγκριση.
Τρίτο σημείο εισόδου: η έξοδος VPN
Η διεύθυνση που αναφέρει ένας ιστότοπος όσο το τούνελ είναι ενεργό είναι η διεύθυνση εξόδου για την καλυμμένη εξερχόμενη κίνηση. Δεν είναι διεύθυνση που δέχεται εισερχόμενες συνδέσεις για λογαριασμό σας. Η χρήση της προς τα μέσα απαιτεί λειτουργία που ο πάροχος πραγματικά προσφέρει, όπως προωθημένη θύρα, μαζί με βιώσιμη διαδρομή από την έξοδο προς τον πελάτη.
Ένας τοπικός κανόνας αποδοχής δεν μπορεί να κατασκευάσει αυτή την αντιστοίχιση. Αυτό που κάνει είναι να αλλάζει ποια διαδρομή παίρνουν οι απαντήσεις της εφαρμογής, κάτι που μετράει όταν η εφαρμογή εξαιρείται από το τούνελ: το αίτημα και η απάντηση μπορεί να καταλήξουν σε διαφορετικά δίκτυα και η σύνδεση αποτυγχάνει σαν πρόβλημα τείχους προστασίας.
Δοκιμάστε μία διαδρομή από άκρη σε άκρη και μετά ονομάστε τον ιδιοκτήτη
Γράψτε την τετράδα πριν τη δοκιμή: προοριζόμενη πηγή, διεύθυνση προορισμού, μεταφορά, θύρα και η μηχανή που κατέχει το socket. Αν οποιοδήποτε στοιχείο είναι εικασία, η δοκιμή δεν θα σας πει τίποτα χρήσιμο.
Έπειτα δοκιμάστε αυτή τη μία εξουσιοδοτημένη διαδρομή με την ταυτοποίηση της εφαρμογής άθικτη. Μην δημοσιεύετε ευρύ ακροατή και μην απενεργοποιείτε άσχετους ελέγχους μόνο για να απαντήσει ένας αμφίσημος έλεγχος διεύθυνσης, γιατί και οι δύο αλλαγές επιβιώνουν της δοκιμής.
Το υποσύστημα tethering του Android προωθεί την κατερχόμενη κίνηση στη δική του διαδρομή, ξεχωριστά από τη συνήθη σύλληψη VPN, οπότε ένας περιηγητής που δουλεύει σε συνδεδεμένο φορητό δεν λέει τίποτα για εισερχόμενη πρόσβαση σε υπηρεσία του τηλεφώνου. Πριν πείτε ότι δουλεύει:
- Ο ακροατής είναι σε διεύθυνση που φτάνει ο απέναντι, όχι στο loopback.
- Ο απέναντι χρησιμοποιεί τη διεύθυνση εκείνου του σημείου εισόδου, όχι τη διεύθυνση εξόδου από σελίδα κατάστασης.
- Οποιαδήποτε αντιστοίχιση στον πάροχο είναι υποστηριζόμενη λειτουργία, όχι κανόνας που προσθέσατε τοπικά.
- Αίτημα και απάντηση περνούν από το ίδιο δικτυακό πλαίσιο και η ταυτοποίηση περνά ακόμη.