Διαδρομή VPN ή κανόνας τείχους προστασίας: ποιο πετάει το πακέτο;
Η διαδρομή επιλέγει μονοπάτι και το φίλτρο αποφασίζει την άδεια. Ελέγξτε και τα δύο για την ίδια πηγή, προορισμό και κατεύθυνση πριν διευρύνετε έναν κανόνα τείχους προστασίας.
Δύο ανεξάρτητες αποφάσεις συμβαίνουν στο ίδιο πακέτο και οποιαδήποτε από τις δύο μπορεί να τερματίσει το αίτημα σιωπηλά. Η αναζήτηση δρομολόγησης επιλέγει διεπαφή και επόμενο άλμα, μετά το φίλτρο πακέτων αποφασίζει αν επιτρέπεται αυτός ο συνδυασμός. Μια λήξη χρόνου σας λέει ότι μία από τις δύο αρνήθηκε, όχι ποια. Περάστε τα στάδια με σειρά και η επισκευή συνήθως παύει να είναι εικασία.
Δύο αποφάσεις, ένα πακέτο, δύο ιδιοκτήτες
Η αναζήτηση δρομολόγησης συμβουλεύεται πρώτα τους κανόνες πολιτικής, μετά τον πίνακα στον οποίο δείχνουν, και επιλέγει το πιο συγκεκριμένο πρόθεμα που ταιριάζει στον προορισμό. Ένας πελάτης που εγκατέστησε διαδρομή σήραγγας κατέχει αυτή την απόφαση και τίποτα σε έναν κανόνα τείχους προστασίας δεν μπορεί να την υποκαταστήσει. Όταν η αναζήτηση δείχνει κάπου απρόσμενα, κάθε επόμενο στάδιο δουλεύει με το λάθος πακέτο.
Το φιλτράρισμα είναι ξεχωριστό. Σε οικοδεσπότη Linux τα άγκιστρα του netfilter χωρίζουν την κίνηση ανάλογα με το για ποιον είναι το πακέτο: η έξοδος φεύγει από το μηχάνημα, η είσοδος τερματίζεται σε αυτό, η προώθηση περνά από μέσα του. Μια πύλη που δέχεται πελάτες VPN και τους δρομολογεί σε LAN χρειάζεται τη διαδρομή προώθησης, και αυτή είναι ακριβώς η αλυσίδα που οι περισσότερες προεπιλεγμένες ρυθμίσεις αφήνουν κενή.
Η επιλογή πηγής ανήκει στην ίδια απόφαση και εκεί κρύβονται οι περισσότερες αναντιστοιχίες. Ο πυρήνας επιλέγει διεύθυνση πηγής από τη διεπαφή εξόδου εκτός αν η διαδρομή ορίσει μία, οπότε ένας κανόνας φίλτρου γραμμένος για το υποδίκτυο LAN δεν ταιριάζει ποτέ με πακέτο που φεύγει με τη διεύθυνση της σήραγγας.
Διαβάστε τι επέλεξε στην πραγματικότητα η αναζήτηση
Εκτυπώστε την απόφαση αντί να τη συμπεράνετε. Η παρακάτω εντολή επιλύει τη διαδρομή που θα χρησιμοποιούσε ο πυρήνας για αυτόν τον προορισμό, μαζί με τη διεπαφή και την πηγή που θα επέλεγε:
ip route get 10.8.0.5 ip route get 10.8.0.5 from 192.0.2.44 ip rule show ip route show table all | sed -n '1,40p'
Οι πελάτες VPN εγκαθιστούν συχνά κανόνες πολιτικής σε προτεραιότητες κάτω από τον κύριο πίνακα, οπότε ένας καθαρός κύριος πίνακας δεν αποδεικνύει τίποτα από μόνος του. Συγκρίνετε τις προτεραιότητες των κανόνων με τους πίνακες που επιλέγουν και ελέγξτε αν η διαδρομή της σήραγγας επιβιώνει από επανασύνδεση αντί να προστίθεται με το χέρι μία φορά.
Το IPsec βάσει πολιτικής προσθέτει ένα τρίτο στάδιο αντιστοίχισης που η δρομολόγηση δεν καλύπτει, όπως περιγράφουν οι σημειώσεις προώθησης του strongSwan για ρυθμίσεις σήραγγας και μεταφοράς. Η πολιτική ασφαλείας επιλέγει κίνηση κατά πρόθεμα και πρωτόκολλο, ενώ η διαδρομή αποφασίζει μόνο πού θα πήγαινε ένα πακέτο χωρίς προστασία. Ένα υποδίκτυο που δρομολογείται αλλά δεν έχει αντίστοιχο επιλογέα είτε μένει απροστάτευτο είτε απορρίπτεται, ανάλογα με τη ρύθμιση, και κανένα από τα δύο αποτελέσματα δεν μοιάζει με πρόβλημα τείχους προστασίας. Εκτυπώστε την πολιτική και συγκρίνετε τους επιλογείς της με τα προθέματα που περιμένατε να μεταφέρει η σήραγγα.
Το φιλτράρισμα εφαρμόζεται σε άγκιστρο, όχι σε διαδρομή
Ένας κανόνας που επιτρέπει τον ακροατή VPN είναι κανόνας για κίνηση που απευθύνεται στην ίδια την πύλη. Δεν λέει τίποτα για πελάτες που φτάνουν σε οικοδεσπότες πίσω από αυτή την πύλη, γιατί η προωθούμενη κίνηση διασχίζει διαφορετική αλυσίδα. Το να διαβάζει κανείς το σύνολο κανόνων ως έναν επίπεδο κατάλογο είναι ο συνηθισμένος λόγος που ένας σωστός στην όψη κανόνας δεν ενεργοποιείται ποτέ.
Οι μετρητές λύνουν το ερώτημα γρήγορα. Ένας κανόνας με μηδενικό μετρητή πακέτων δεν επιτεύχθηκε ποτέ, κάτι που δείχνει λάθος αλυσίδα, λάθος διεπαφή ή προγενέστερη απόρριψη. Ένας κανόνας με αυξανόμενο μετρητή υπό πολιτική απόρριψης είναι το όριο που ψάχνατε, και το πακέτο πετιέται αντί να δρομολογηθεί λάθος.
Στείλτε έναν ανιχνευτή μέσα από τη διαδρομή που χρησιμοποιεί ο πελάτης
Οι δοκιμές που εκτελούνται στην ίδια την πύλη περνούν από έξοδο και είσοδο, με τη δική της διεύθυνση πηγής. Αυτή είναι διαφορετική διαδρομή από το προωθούμενο αίτημα ενός πελάτη, οπότε ένα επιτυχές τοπικό curl αποδεικνύει λιγότερα απ' όσα φαίνεται. Δοκιμάστε από το μηχάνημα που αποτυγχάνει ή καρφώστε ρητά τη διεπαφή και την πηγή.
nc -vz -w 3 10.8.0.5 443 ping -c 3 -W 1 10.8.0.5 tcpdump -ni any host 10.8.0.5 and port 443 iptables -vnL FORWARD --line-numbers nft list ruleset | sed -n '1,60p'
Μια καταγραφή και στα δύο άκρα χωρίζει τις υπόλοιπες περιπτώσεις. Ένα SYN που φεύγει από τον πελάτη και δεν φτάνει ποτέ σημαίνει δρομολόγηση, κρυπτογράφηση ή λίστα πρόσβασης ανάντη. Ένα SYN που φτάνει και δεν παίρνει απάντηση σημαίνει την υπηρεσία ή το φίλτρο του οικοδεσπότη της, και η σήραγγα δεν ήταν ποτέ το πρόβλημα.
Η κίνηση επιστροφής αξίζει δική της ματιά. Η ασύμμετρη δρομολόγηση μαζί με φιλτράρισμα αντίστροφης διαδρομής πετάει απαντήσεις που φτάνουν στη λάθος διεπαφή, κάτι που εμφανίζεται ως μονόδρομη σύνδεση αντί για κλειστή θύρα. Ελέγξτε την τιμή sysctl πριν κατηγορήσετε το τείχος προστασίας για σύμπτωμα που δεν προκάλεσε.
Η καταγραφή λειτουργεί ως δεύτερη γνώμη, όχι ως πρώτο βήμα. Μια προσωρινή δήλωση καταγραφής στην αλυσίδα προώθησης ονομάζει τη διεπαφή και τις διευθύνσεις που την χτύπησαν, και αφαιρείται εύκολα μετά. Αν την αφήσετε μόνιμα, έχετε φτιάξει πρόβλημα όγκου καταγραφών αντί για απάντηση.
Βάλτε κάθε αλλαγή εκεί όπου επιβιώνει από επανασύνδεση
Μια διαδρομή που προστέθηκε με ip route add ζει μέχρι να πέσει η διεπαφή. Αποθηκεύστε την στο προφίλ σύνδεσης: το NetworkManager δέχεται πρόσθετες διαδρομές στη σύνδεση και το netplan τις διατηρεί ανάμεσα σε εκκινήσεις. Ο ίδιος κανόνας ισχύει για εξαίρεση τείχους προστασίας στην πλευρά του πελάτη, που εξαφανίζεται μετά την επόμενη επαναφόρτωση.
Οι κανόνες στην πλευρά του διακομιστή ανήκουν στο αρχείο ρυθμίσεων που φορτώνει η υπηρεσία κατά την εκκίνηση, όχι σε διαδραστική συνεδρία που τελειώνει όταν την κλείσετε. Γράψτε τον κανόνα, επαναφορτώστε και επιβεβαιώστε ότι ο μετρητής κινήθηκε, γιατί μια επαναφόρτωση που απέρριψε τη σύνταξη αφήνει σιωπηλά το παλιό σύνολο κανόνων στη θέση του.
Έπειτα επαναλάβετε το αρχικό αίτημα της εφαρμογής από άκρη σε άκρη και καταγράψτε ποιο επίπεδο άλλαξε. Μια διόρθωση διαδρομής που χρειαζόταν και αλλαγή φίλτρου θα αποτύχει ακόμη, και η δεύτερη αποτυχία διαβάζεται πολύ πιο εύκολα όταν ξέρετε ότι η πρώτη έφυγε. Σημειώστε την ημερομηνία και την έκδοση του πελάτη δίπλα στο αποτέλεσμα, αφού οι προεπιλογές δρομολόγησης και φιλτραρίσματος κινούνται και οι δύο μεταξύ εκδόσεων. Κρατήστε αυτή τη σημείωση στο δελτίο ώστε ο επόμενος να ξεκινήσει εκεί που σταματήσατε αντί να επαναλάβει την πορεία δύο σταδίων.