Παρακολούθηση ενός πακέτου TPROXY μέχρι τον socket
Ελέγξτε τον socket υποδοχής, το σημάδι πακέτου και την τοπική διαδρομή πολιτικής ως ένα μονοπάτι παράδοσης διαφανούς proxy.
Ένας μετρητής TPROXY μπορεί να αυξάνεται ενώ η εφαρμογή δεν λαμβάνει τίποτα. Ο κανόνας ταίριαξε, αλλά η τοπική παράδοση εξακολουθεί να εξαρτάται από τη δρομολόγηση πολιτικής και από έναν συμβατό socket υποδοχής.
Το Linux TPROXY μπορεί να υποκλέψει κίνηση χωρίς να ξαναγράψει τον προορισμό, όπως κάνει το DNAT. Επομένως τα πακέτα που απευθύνονται σε μη τοπικό προορισμό πρέπει να φτάνουν σε κατάλληλο τοπικό socket.
Ακολουθήστε τη διαδρομή παράδοσης
- Η κίνηση φτάνει στον κεντρικό υπολογιστή υποκλοπής από τη σωστή διεπαφή και οικογένεια διευθύνσεων.
- Ο κανόνας υποκλοπής και το σημάδι πακέτου καθορίζουν την πολιτική τοπικής παράδοσης.
- Ένας αντίστοιχος κανόνας πολιτικής επιλέγει διαδρομή που παραδίδει τα πακέτα τοπικά.
- Ο proxy χρησιμοποιεί υποστηριζόμενο διαφανή ακροατή με την απαιτούμενη επιλογή socket.
Το παράδειγμα IPv4 του πυρήνα απαιτεί υποστήριξη εφαρμογής για IP_TRANSPARENT. Ένας συνηθισμένος ακροατής στην ίδια θύρα, ή μια καθολική ρύθμιση μη τοπικής δέσμευσης, δεν αποδεικνύει αυτή την υποστήριξη.
| Παρατήρηση | Επόμενος έλεγχος |
|---|---|
| Κανένα σχετικό εισερχόμενο πακέτο | Διαδρομή κίνησης και διεπαφή εισόδου |
| Τα πακέτα φτάνουν· ο μετρητής υποκλοπής μένει ακίνητος | Οικογένεια διευθύνσεων, αλυσίδα και συνθήκες αντιστοίχισης |
| Ο κανόνας ταιριάζει· η τοπική παράδοση αποτυγχάνει | Σημάδι και επιλογή διαδρομής πολιτικής |
| Ο socket ακούει· η εφαρμογή δεν βλέπει τίποτα | Δυνατότητα διαφανούς socket και ιδιοκτήτης ακροατή |
| Το αίτημα ξεκινά· οι επόμενες απαντήσεις αποτυγχάνουν | Αντιστοίχιση εγκατεστημένου socket και διαδρομές επιστροφής |
Κρατήστε τη φορτωμένη διαμόρφωση και τον χώρο ονομάτων δικτύου μαζί με κάθε παρατήρηση. Ένας μεταγενέστερος κανόνας μπορεί να ξαναγράψει ένα σημάδι ή να επιλέξει άλλη διαδρομή. Αν η υποκλοπή γίνεται στον κεντρικό υπολογιστή ενώ ο ακροατής τρέχει σε container, μια έγκυρη τοπική διαδρομή του κεντρικού δεν παραδίδει αυτόματα μέσα σε εκείνο το container.
Υπολογίστε τα μεταγενέστερα πακέτα
Το παράδειγμα του πυρήνα περιλαμβάνει αντιστοίχιση socket και διαδρομή DIVERT που σημαδεύει πακέτα των διαφανών socket. Αν την παραλείψετε, η μεταγενέστερη κίνηση μπορεί να μείνει σε άλλη διαδρομή ακόμη και όταν η αρχική υποκλοπή πετύχει.
Χρησιμοποιήστε τη διαφανή λειτουργία που υποστηρίζει η εφαρμογή και την αντίστοιχη τεκμηρίωση του πυρήνα για κάθε οικογένεια διευθύνσεων. Μια εντολή τοπικής διαδρομής IPv4 δεν ρυθμίζει το IPv6, και η υποστήριξη σε μια οικογένεια δεν αποδεικνύει τη συμπεριφορά socket της άλλης.
Το TPROXY επίσης δεν παράγει διαπραγμάτευση SOCKS. Ένα στοιχείο από διαφανές σε SOCKS πρέπει ακόμη να ανακαλύψει τον προορισμό και να διαπραγματευτεί με το upstream του.
Μετάβαση από το REDIRECT
Καταγράψτε πώς η υπάρχουσα εφαρμογή αποκτά τον αρχικό προορισμό. Το REDIRECT αλλάζει τον προορισμό και βασίζεται στον κατάλληλο μηχανισμό ανάκτησης· το TPROXY χρειάζεται το διαφανές socket και τη δρομολόγησή του. Επιλέξτε ανάλογα με την εφαρμογή και την πολιτική διεύθυνσης προέλευσης.
Συνδυάστε τους μετρητές με τη διαδρομή, τη δυνατότητα socket και το αρχείο καταγραφής της εφαρμογής πριν αλλάξετε λειτουργία υποκλοπής. Σε διανομή που παρέχει τα απαραίτητα μέσα, ένα βήμα παράδοσης που λείπει είναι καλύτερη αφετηρία από την επαναμεταγλώττιση του πυρήνα.