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

Δύο σημεία παρατήρησης, δύο είδη στοιχείων

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

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

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

Τι μπορεί να αναφέρει μια τοπική διεπαφή πλατφόρμας

Το Android προσφέρει έναν συγκεκριμένο δείκτη. Το αντικείμενο NetworkCapabilities μπορεί να αναφέρει TRANSPORT_VPN, και το hasTransport ελέγχει αν αυτή η μεταφορά υπάρχει στο αντικείμενο. Η εφαρμογή παίρνει το αντικείμενο από την υπηρεσία συνδεσιμότητας και το διαβάζει, υπό την άδεια κατάστασης δικτύου.

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

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

adb shell dumpsys connectivity | grep -i -m5 vpn

Τι μπορεί να δει μια απομακρυσμένη υπηρεσία

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

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

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

ΣτοιχείοΤι απαντάΤι δεν μπορεί να δείξει
Τοπικός δείκτης μεταφοράςΑν αυτό το αντικείμενο δικτύου είναι VPNΠοιος διαχειρίζεται την έξοδο ή πού είναι η συσκευή
Απομακρυσμένη διεύθυνση προέλευσηςΠοια διεύθυνση έφτασε στην υπηρεσίαΑν η συσκευή φέρει και τούνελ
Ωφέλιμο φορτίο εφαρμογήςΤι επέλεξε να στείλει η εφαρμογήΟτιδήποτε δεν έστειλε η εφαρμογή

Γιατί μια αυτοφιλοξενούμενη έξοδος αλλάζει μόνο τη μία πλευρά

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

Η μία πλευρά των στοιχείων κινείται, η άλλη μένει σταθερή. Το χάσμα ανάμεσά τους είναι το σημείο όπου σπάνε οι προσδοκίες.

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

Αποφασίστε με την ερώτηση που θέτετε

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

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

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

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

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