Εφαρμογή δεμένη σε διεπαφή; Η διαδρομή VPN της δεν είναι η προεπιλεγμένη
Η δέσμευση socket σε συσκευή, διεύθυνση πηγής ή namespace αλλάζει ποια διαδρομή ισχύει. Δοκιμάστε τη σύνδεση της ίδιας της εφαρμογής, όχι έναν έλεγχο IP στον browser.
Μια εφαρμογή στο μηχάνημα βγαίνει μέσω VPN και μια άλλη όχι, και οι δύο χρήστες ορκίζονται ότι δεν άλλαξαν τίποτα. Η διαφορά είναι συχνά μια απόφαση δέσμευσης της ίδιας της εφαρμογής: ένα socket δεμένο σε συσκευή, μια διεύθυνση πηγής που επιλέχθηκε πριν από τη σύνδεση ή ένα namespace με δικό του πίνακα δρομολόγησης. Κάθε μία αλλάζει ποια διαδρομή ισχύει και καμία δεν εμφανίζεται σε έναν γενικό έλεγχο IP στον browser.
Τρεις διαφορετικές δεσμεύσεις, τρία διαφορετικά αποτελέσματα
Η δέσμευση σε συσκευή και η δέσμευση σε διεύθυνση πηγής είναι συγγενείς πράξεις με διαφορετικές συνέπειες. Η δέσμευση συσκευής μπορεί να αναγκάσει την κίνηση να βγει από μία διεπαφή και να παρακάμψει την κανονική αναζήτηση διαδρομής για αυτό το socket. Η δέσμευση διεύθυνσης πηγής περνά ακόμη από την επιλογή διαδρομής, αλλά η επιλεγμένη πηγή μπορεί να ταιριάξει με κανόνα πολιτικής και να στείλει το πακέτο αλλού. Η διάκριση ακούγεται ακαδημαϊκή μέχρι ένας κανόνας να δρομολογεί με βάση την πηγή. Τότε αποφασίζει τα πάντα.
Το namespace δικτύου είναι η τρίτη περίπτωση. Έχει δικές του διεπαφές και δικό του πίνακα δρομολόγησης, οπότε μια εφαρμογή μέσα σε αυτό δεν επηρεάζεται καθόλου από την προεπιλογή του host. Αν αντιμετωπίζουμε και τα τρία ως το ίδιο πράγμα, παράγονται σίγουρες εξηγήσεις που δεν αντέχουν στην πρώτη δοκιμή.
Καθορίστε τι ορίζει πραγματικά η εφαρμογή
Διαβάστε τη διαμόρφωση δικτύου της εφαρμογής ή την τεκμηριωμένη συμπεριφορά της πριν αγγίξετε διαδρομές. Αν εκθέτει επιλογή διεπαφής, πεδίο διεύθυνσης πηγής ή επιλογή namespace, αυτή η ρύθμιση είναι το πρώτο που πρέπει να εξεταστεί. Αν όχι, η δέσμευση μπορεί να είναι εσωτερική και ορατή μόνο μέσω tracing ή των δικών της διαγνωστικών.
Στο Linux, επιλογές socket όπως το SO_BINDTODEVICE έχουν τεκμηριωμένο εύρος και απαιτήσεις δικαιωμάτων, και μια μη προνομιούχα διεργασία μπορεί να μην μπορεί να τις ορίσει καθόλου. Αυτός ο περιορισμός είναι χρήσιμο στοιχείο: αν η επιλογή δεν μπορεί να εφαρμοστεί, η εφαρμογή μάλλον δεν είναι η πηγή της διαφοράς.
Η δρομολόγηση πολιτικής διαβάζει την πηγή
Όταν έχει ρυθμιστεί δρομολόγηση πολιτικής, ένας κανόνας μπορεί να επιλέξει πίνακα με βάση την πηγή του πακέτου. Ένα socket που δεσμεύει διεύθυνση πηγής μπορεί επομένως να ακολουθήσει κανόνα που η προεπιλεγμένη διαδρομή δεν αγγίζει ποτέ, ακόμη και αν δεν ονομάστηκε ρητά καμία διεπαφή.
Αναπαράγετε την αναζήτηση με την ίδια οικογένεια διευθύνσεων, πηγή και namespace που χρησιμοποιεί η εφαρμογή. Μια γενική αναζήτηση διαδρομής από ένα κέλυφος στο namespace του host απαντά σε άλλο ερώτημα, και αυτή η αναντιστοιχία είναι ο συνηθέστερος λόγος που μια λειτουργική διαδρομή φαίνεται χαλασμένη.
Διαχωρισμένη σήραγγα και βοηθητικές διεργασίες
Η διαχωρισμένη σήραγγα ανά εφαρμογή προσθέτει άλλο ένα επίπεδο. Ο πελάτης μπορεί να ταιριάζει το πακέτο ή τη διεργασία της εφαρμογής, και ένας βοηθός που ανοίγει δικό του socket είναι ξεχωριστό υποκείμενο. Ένας εκκινητής και η υπηρεσία υποβάθρου του μπορούν να παράγουν διαφορετικές συνδέσεις κάτω από το ίδιο ορατό όνομα.
Ελέγξτε αν ο κανόνας διαχωρισμένης σήραγγας καλύπτει τη διεργασία που πραγματικά συνδέεται. Αν η εφαρμογή δεσμεύεται σε συγκεκριμένη διεπαφή και ο πελάτης VPN ταιριάζει κατά πακέτο, οι δύο αποφάσεις μπορεί να διαφωνούν χωρίς καμία να είναι λάθος.
Δοκιμάστε την ίδια τη διαδρομή της εφαρμογής
Εκτελέστε ένα νέο αίτημα από την εφαρμογή μετά από κάθε αλλαγή. Ένας browser που δείχνει την έξοδο που θέλατε δεν είναι ισοδύναμη απόδειξη για άλλο πρόγραμμα δεμένο σε άλλη διεπαφή, και οι συνδέσεις στην προσωρινή μνήμη μπορούν να συνεχίσουν να χρησιμοποιούν την παλιά διαδρομή πολύ μετά την αλλαγή μιας ρύθμισης. Κλείστε την παλιά συνεδρία πριν κρίνετε τον νέο κανόνα. Αλλιώς η δοκιμή μετρά το παρελθόν.
Η αναφορά socket του Linux τεκμηριώνει το SO_BINDTODEVICE και τις απαιτήσεις του. Διαβάστε πρώτα τη διαμόρφωση της ίδιας της εφαρμογής, αναπαράγετε την αναζήτηση στο ίδιο πλαίσιο και μόνο τότε αποφασίστε αν πρέπει να αλλάξει η διαδρομή ή η δέσμευση.