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

Χωρίστε τη διαδρομή από την πολιτική

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

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

Διαβάστε τη διαδρομή σε ένα πέρασμα

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

ip route get 10.20.4.15
ip -brief address show
wg show
sudo ipsec statusall

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

Μια παγίδα ειδική για VPN αξίζει δικό της έλεγχο. Στο WireGuard, το AllowedIPs ενός ομότιμου είναι ταυτόχρονα διαδρομή και κρυπτογραφικό φίλτρο: ένα πακέτο του οποίου η διεύθυνση προέλευσης δεν ταιριάζει με το επιτρεπόμενο σύνολο του ομότιμου απορρίπτεται πριν ερωτηθεί οποιοσδήποτε κανόνας τείχους προστασίας. Έτσι ένα απολύτως σωστό τοπικό τείχος προστασίας μπορεί να βρίσκεται πίσω από μια σιωπηλή απόρριψη που μοιάζει με πολιτική, και η διόρθωση είναι μια γραμμή ρύθμισης κλειδιού και όχι κανόνας.

Διαβάστε την πολιτική στο επίπεδο που απαντά

Όταν η διαδρομή είναι σωστή, διαβείτε την πολιτική από τον κεντρικό υπολογιστή προς τα έξω και προσέξτε το ένα επίπεδο του οποίου οι μετρητές κινούνται:

ss -ltn | grep ':443'
sudo nft list ruleset
sudo iptables -S INPUT
sudo ufw status verbose

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

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

Διαβάστε την απόφαση της πύλης όταν η σήραγγα τελειώνει εκεί

Σε πύλη τοποθεσίας-σε-τοποθεσία ή απομακρυσμένης πρόσβασης, το VPN ταυτοποιεί χρήστη και η πολιτική εξουσιοδοτεί πόρο, και αυτά είναι χωριστές παραχωρήσεις. Χρήστης που επιτρέπεται στη σήραγγα δεν επιτρέπεται αυτόματα σε κάθε εσωτερικό κεντρικό υπολογιστή, και η άρνηση έρχεται συχνά από κανόνα προώθησης ενώ η ίδια η σήραγγα είναι υγιής. Ο ίδιος διαχωρισμός εμφανίζεται στο IPsec, όπου η πολιτική ασφαλείας που επιλέγει την κίνηση διαφέρει από το φίλτρο που την επιτρέπει, και γι' αυτό τα δύο τεκμηριώνονται ως διαφορετικοί μηχανισμοί στο RFC 4301.

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

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

Αλλάξτε το στενότερο επίπεδο και μετά επαληθεύστε

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

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

nc -vz 10.20.4.15 443
curl -v --max-time 5 https://10.20.4.15/

Πριν το κλείσετε:

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

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