Χάνονται οι απαντήσεις του Linux VPN; Ελέγξτε το rp_filter και τη διαδρομή
Η επικύρωση προέλευσης IPv4 μπορεί να απορρίψει ένα πακέτο του οποίου η αντίστροφη διαδρομή δεν ταιριάζει με τη λειτουργία. Εξετάστε τη δρομολόγηση και την πραγματική ρύθμιση πριν την απενεργοποιήσετε.
Τα αιτήματα φεύγουν από το μηχάνημα, ο ομότιμος του VPN απαντά, και η απάντηση δεν φτάνει ποτέ στην υποδοχή. Η σήραγγα είναι ενεργή, τα αρχεία καταγραφής του ομοτίμου δείχνουν ότι το πακέτο στάλθηκε, και τίποτα στην εφαρμογή δεν εξηγεί τη σιωπή. Στο Linux ένας από τους συνήθεις υπόπτους είναι το φιλτράρισμα αντίστροφης διαδρομής: ένα εισερχόμενο πακέτο IPv4 μπορεί να απορριφθεί όταν η επικύρωση προέλευσης δεν συμφωνεί με τη διαδρομή που περιμένει ο πυρήνας για αυτή την προέλευση. Η διαδοχική εξέταση σας λέει αν αυτή είναι η αιτία ή μια σύμπτωση. Σας εμποδίζει επίσης να απενεργοποιήσετε έναν έλεγχο ασφαλείας για να διορθώσετε μια διαδρομή που λείπει.
Τι αποφασίζει η επικύρωση προέλευσης
Ο πυρήνας ελέγχει αν η διεύθυνση προέλευσης ενός πακέτου είναι εύλογη για τη διεπαφή από την οποία έφτασε, συμβουλευόμενος τον πίνακα δρομολόγησης για μια διαδρομή επιστροφής σε αυτή την προέλευση. Αν η αντίστροφη διαδρομή δείχνει αλλού, το πακέτο μπορεί να απορριφθεί πριν το δει οποιοσδήποτε κανόνας τείχους προστασίας ή υποδοχή εφαρμογής. Αυτός ο έλεγχος υπάρχει για να κάνει δυσκολότερα ορισμένα μοτίβα πλαστοπροσωπίας, και γι' αυτό οι ασύμμετρες και δρομολογημένες με πολιτική σχεδιάσεις πέφτουν πάνω του, ενώ κάθε συνηθισμένος πελάτης στο ίδιο δίκτυο λειτουργεί καλά. Οι συνηθισμένοι πελάτες έχουν συμμετρική δρομολόγηση, που είναι ακριβώς αυτό που προϋποθέτει ο έλεγχος.
Η σημαντική λέξη είναι εύλογη. Το πακέτο μπορεί να είναι απολύτως νόμιμο και να αποτύχει στον έλεγχο, γιατί δεν ελέγχεται η νομιμότητα.
Διαβάστε την πραγματική λειτουργία, όχι ένα πεδίο
Υπάρχουν τρεις λειτουργίες: απενεργοποιημένη, αυστηρή και χαλαρή. Η αυστηρή επιβάλλει διαφορετική προσδοκία διαδρομής από τη χαλαρή, και η καθολική ρύθμιση αλληλεπιδρά με εκείνες ανά διεπαφή, οπότε η ανάγνωση ενός μόνο αρχείου μπορεί να περιγράψει λάθος τι ισχύει στην πράξη. Διαβάστε και τις δύο, και διαβάστε τις στη διεπαφή που λαμβάνει την απάντηση, όχι στη διεπαφή της προεπιλεγμένης διαδρομής.
sysctl net.ipv4.conf.all.rp_filter
sysctl net.ipv4.conf.<iface>.rp_filter
ip route get <source-of-the-reply>Η αναζήτηση διαδρομής στην τρίτη γραμμή είναι το μέρος που οι άνθρωποι προσπερνούν. Σας λέει τι πιστεύει ο πυρήνας για την προέλευση, και αυτό είναι ακριβώς η είσοδος του ελέγχου.
Βρείτε την αναντιστοιχία πριν αλλάξετε τον έλεγχο
Βρείτε γιατί η απάντηση φτάνει σε αυτή τη διεπαφή και αν η αντίστροφη διαδρομή της υποτίθεται ότι διαφέρει. Ένας κανόνας πολιτικής που στέλνει τα αιτήματα από ένα μονοπάτι ενώ οι απαντήσεις επιστρέφουν από άλλο είναι νόμιμη σχεδίαση, και είναι επίσης η σχεδίαση που απορρίπτει η αυστηρή επικύρωση. Τα σημάδια που χρησιμοποιούνται στη δρομολόγηση με πολιτική μπορεί να μετράνε κι εδώ, γιατί αλλάζουν τι επιστρέφει η αντίστροφη αναζήτηση.
Αν η αντίστροφη διαδρομή απλώς λείπει, η προσθήκη της διορθώνει την αιτία αντί να απενεργοποιεί έναν έλεγχο. Μια διαδρομή που λείπει, μια απόρριψη από το τείχος προστασίας και ένας λάθος επιλογέας κίνησης παράγουν το ίδιο ορατό σύμπτωμα, και μόνο ένα από αυτά αφορά την επικύρωση προέλευσης.
Μην απενεργοποιείτε τους ελέγχους προέλευσης καθολικά ως πρώτη αντίδραση. Αυτό ανταλλάσσει μια συγκεκριμένη διάγνωση με μια ευρεία αλλαγή συμπεριφοράς που θα πρέπει να θυμάστε αργότερα.
Μια επιλεκτική προσαρμογή που μπορείτε να υπερασπιστείτε
Αν μια στενή προσαρμογή είναι πραγματικά απαραίτητη, περιορίστε την στη διεπαφή που τη χρειάζεται, σημειώστε γιατί, και βάλτε την στη διαμόρφωση που κατέχει αυτή τη διεπαφή ώστε να επιβιώσει από επανεκκίνηση. Έπειτα δοκιμάστε ξανά την ακριβή ροή που απέτυχε, από την ίδια προέλευση στον ίδιο προορισμό, αντί για ping σε κάτι βολικό.
Συμπεριλάβετε μια περίπτωση που θα πρέπει να εξακολουθεί να απορρίπτεται. Αν αυτή η περίπτωση τώρα πετυχαίνει, η προσαρμογή αποδυνάμωσε περισσότερα από το ένα μονοπάτι που θέλατε να διορθώσετε.
Κρατήστε το IPv4 και το IPv6 χωριστά
Ένα sysctl που φαίνεται γνώριμο δεν είναι πολιτική για κάθε οικογένεια διευθύνσεων. Το IPv6 έχει τη δική του συμπεριφορά και τις δικές του ρυθμίσεις, και ένα μηχάνημα μπορεί να είναι αυστηρό στη μία οικογένεια και επιεικές στην άλλη χωρίς να το προσέξει κανείς μέχρι να αποτύχει ένας συγκεκριμένος προορισμός. Ελέγξτε και τα δύο αν το φορτίο εργασίας χρησιμοποιεί και τα δύο.
Καταγράψτε τη λειτουργία, τη διεπαφή, την έξοδο της αναζήτησης διαδρομής και τον λόγο της αλλαγής σε ένα σημείο. Το επόμενο άτομο θα βρει τη ρύθμιση και καμία εξήγηση, και θα την αφαιρέσει ή θα την αντιγράψει κάπου όπου δεν ανήκει.