Ο διακόπτης ασφαλείας μπλοκάρει τον διακομιστή VPN πριν περάσει οποιαδήποτε κίνηση
Ποιο στάδιο μπλοκάρει ένας διακόπτης ασφαλείας: αναζήτηση τελικού σημείου, εξωτερική διαδρομή, διαδρομή επιστροφής και ξεπερασμένες εξαιρέσεις ομοτίμων — με μετρητές αντί για εικασίες.
Οι διακόπτες ασφαλείας αποτυγχάνουν προς μια κατεύθυνση που ο κόσμος δεν περιμένει: είναι φτιαγμένοι να μπλοκάρουν την κίνηση όσο η σήραγγα είναι κάτω, και τα πακέτα που χτίζουν τη σήραγγα είναι τα ίδια κίνηση. Αυτό είναι ολόκληρο το σφάλμα. Ένα σύνολο κανόνων που ρίχνει ό,τι δεν βγαίνει μέσα από τη σήραγγα ρίχνει και τη χειραψία που θα την ανέβαζε, οπότε ο πελάτης ξαναπροσπαθεί σε βρόχο και το σφάλμα ανήκει σε όποιο στάδιο ελέγχεται πρώτο. Πριν διευρύνετε ένα τείχος προστασίας, βρείτε ποιο από τα τρία στάδια απορρίπτεται: η αναζήτηση ονόματος, το εξωτερικό πακέτο προς τον ομότιμο ή η απάντηση που επιστρέφει.
Πώς η σήραγγα και η δική της μεταφορά εξαρτώνται η μία από την άλλη
Διαβάστε έναν πελάτη VPN ως δύο καταστάσεις δικτύου που μοιράζονται μία διαδρομή υποδοχής. Πριν υπάρξει η σήραγγα, ο πελάτης ανοίγει μια υποδοχή στον φυσικό προσαρμογέα και στέλνει κρυπτογραφημένα πλαίσια στη διεύθυνση και τη θύρα του ομοτίμου. Μόνο αφού πετύχει αυτή η ανταλλαγή δημιουργεί τη συσκευή σήραγγας και εγκαθιστά διαδρομές. Ο διακόπτης ασφαλείας είναι μια πολιτική για τη δεύτερη κατάσταση, γραμμένη τόσο ευρεία που ισχύει και για τις δύο.
Οι κανόνες με βάση τη διεπαφή είναι η συνήθης μορφή: δεχτείτε ό,τι βγαίνει μέσα από tun0 ή wg0, ρίξτε το υπόλοιπο της εξόδου. Αυτή η διατύπωση δεν μπορεί να εξαιρέσει τη δική του σύνδεση του πελάτη με τον διακομιστή, οπότε μια σωστή υλοποίηση προσθέτει ρητά αυτή την εξαίρεση, και το ίδιο κάνετε κι εσείς όταν γράφετε κανόνες με το χέρι. Οι κανόνες ανά εφαρμογή στα Windows και στο macOS αποφεύγουν μέρος αυτού ταιριάζοντας διεργασία αντί για διεπαφή, αλλά η διεργασία πρέπει να βγει πριν υπάρξει η σήραγγα.
Τρία στάδια, με τη σειρά που συμβαίνουν
Το πρώτο στάδιο είναι η επίλυση. Όταν το προφίλ αποθηκεύει όνομα κεντρικού υπολογιστή αντί για κυριολεκτική διεύθυνση, ο πελάτης χρειάζεται απάντηση DNS πριν στείλει οτιδήποτε. Ένα προφίλ που στέλνει το DNS στον επιλυτή της σήραγγας δημιουργεί αδιέξοδο: ο επιλυτής είναι προσβάσιμος μόνο μέσα από τη σήραγγα που υποτίθεται ότι ενεργοποιεί η αναζήτηση. Η επίλυση έξω από τη σήραγγα, ή το καρφίτσωμα του τελικού σημείου σε μια διεύθυνση, αφαιρεί την ασάφεια.
Το δεύτερο στάδιο είναι το εξωτερικό πακέτο, που πρέπει να αντέξει πρώτα τη δρομολόγηση και μετά το τείχος προστασίας, με αυτή τη σειρά. Το wireguard-tools αναλαμβάνει το μισό της δρομολόγησης για το WireGuard σημαδεύοντας τα δικά του πακέτα και προσθέτοντας έναν κανόνα πολιτικής ώστε να παρακάμπτουν την προεπιλεγμένη διαδρομή που μόλις εγκατέστησε, ενώ η σελίδα εγχειριδίου του wg-quick περιγράφει αυτόν τον κανόνα και τον πίνακα που χρησιμοποιεί. Ξαναχτίστε αυτή τη δρομολόγηση με το χέρι, ή αφήστε ένα δεύτερο εργαλείο να ξαναγράψει τους κανόνες, και τα σημαδεμένα πακέτα μπορούν να σταλούν πίσω στη σήραγγα που υποτίθεται ότι δημιουργούν.
Το τρίτο στάδιο είναι η διαδρομή επιστροφής. Μια χειραψία χωρίς απάντηση δεν είναι απόδειξη απόρριψης στην έξοδο, είναι εξίσου συμβατή με κανόνα εισόδου του διακομιστή ή με συσκευή NAT που ξέχασε την αντιστοίχιση. Διαχωρίστε τα πριν αγγίξετε τον πελάτη.
| What you see | Stage | Where to look |
|---|---|---|
| The client log repeats a resolve step and no packets appear on the wire | 1, name lookup | Resolver path while the tunnel is down |
| The send counter on the physical adapter stays flat | 2, routing | Peer route and policy rules |
| The send counter rises and a firewall drop counter rises | 2, firewall | Rule order, mark, and interface match |
| Packets leave and nothing comes back | 3, return path | Server input rules, NAT, listening port |
Οι πελάτες καταγράφουν το σύμπτωμα που ανιχνεύουν, όχι το στάδιο που απέτυχε, γι’ αυτό ο πίνακας είναι συνήθως ταχύτερος από το αρχείο καταγραφής.
Οι μετρητές αποφασίζουν ταχύτερα από τα αρχεία καταγραφής
Στο Linux, nft list ruleset ή iptables -vnL OUTPUT εκτυπώνει μετρητή πακέτων ανά κανόνα. Συνδεθείτε μία φορά, αφήστε το να αποτύχει και μετά διαβάστε ξανά τους μετρητές. Κανόνας του οποίου ο μετρητής κουνήθηκε είναι κανόνας που χτύπησε η χειραψία, αν δεν κουνήθηκε τίποτα πουθενά, το πακέτο δεν έφτασε ποτέ στο τείχος προστασίας. Έχω δει σύνολο κανόνων να ρίχνει τη δική του χειραψία, και μόνο οι μετρητές το είπαν.
Για να ξεχωρίσετε το δεν έφτασε ποτέ στο τείχος προστασίας από το δεν έφυγε ποτέ από τον κεντρικό υπολογιστή, παρατηρήστε την ίδια τη διεπαφή. ip -s link show dev wlan0 αναφέρει τα σταλμένα πακέτα, και tcpdump -ni wlan0 udp port 51820 δείχνει τα πλαίσια. Αν μένει επίπεδο όσο ο πελάτης ξαναπροσπαθεί, η βλάβη είναι πάνω από το netfilter: διαδρομή ομοτίμου που λείπει, κανόνας πολιτικής που δείχνει σε συσκευή που δεν υπάρχει ακόμη, ή σφάλμα υποδοχής που ο πελάτης καταπίνει.
Δοκιμάστε τις εξαιρέσεις σε διευθύνσεις τεκμηρίωσης όπως 203.0.113.10, ώστε μια αβλεψία να μην μπορεί να ανιχνεύσει τον κεντρικό υπολογιστή κάποιου άλλου.
Μια ξεπερασμένη εξαίρεση τελικού σημείου διαβάζεται ως διακοπή του διακομιστή
Η πιο παραπλανητική εκδοχή εμφανίζεται αφού αλλάξει η διεύθυνση του ομοτίμου: μια υπηρεσία δυναμικών διευθύνσεων τη μετακίνησε, ο κεντρικός υπολογιστής ξαναχτίστηκε ή η διεύθυνση εξόδου του δικτύου σας είναι διαφορετική. Η εξαίρεση εξακολουθεί να ονομάζει την παλιά διεύθυνση, οπότε τα πακέτα προς τη νέα χτυπούν τον κανόνα απόρριψης. Η ίδια διαμόρφωση δούλευε χθες, και γι’ αυτό ο κόσμος αρχίζει με την αντιμετώπιση προβλημάτων του διακομιστή.
Ένα όνομα κεντρικού υπολογιστή μέσα σε κανόνα τείχους προστασίας δεν σας σώζει. Στο nftables το όνομα επιλύεται όταν φορτώνεται το σύνολο κανόνων, οπότε καρφιτσώνει όποια διεύθυνση υπήρχε εκείνη τη στιγμή και ξεπερνιέται όπως μια κυριολεκτική. Η διαρκής λύση είναι να ενημερώνετε την εξαίρεση όταν αλλάζει το τελικό σημείο και να τη κρατάτε στενή: μία διεύθυνση ομοτίμου, μία θύρα μεταφοράς. Ένα εύρος αρκετά πλατύ για να επιβιώσει μια αλλαγή διεύθυνσης είναι επίσης αρκετά πλατύ για να αφήσει άσχετη κίνηση να βγει.
Όταν ο διακόπτης ασφαλείας τρέχει στον κεντρικό υπολογιστή του διακομιστή
Η ίδια εξάρτηση υπάρχει στο άλλο άκρο, και εκεί είναι πιο εύκολο να χαθεί. Αν το μηχάνημα που λειτουργεί ως διακομιστής VPN σας τρέχει επίσης πελάτη επιφάνειας εργασίας με διακόπτη ασφαλείας, ή προφίλ τείχους προστασίας αντιγραμμένο από φορητό, οι κανόνες απόρριψής του ισχύουν για την υπηρεσία που τερματίζει τις σήραγγες. Οι απαντήσεις στη χειραψία του πελάτη απορρίπτονται, οπότε κάθε πελάτης αποτυγχάνει να συνδεθεί ενώ ο διακομιστής φαίνεται υγιής και η διεπαφή σήραγγάς του μένει αχρησιμοποίητη.
Αυτός ο κεντρικός υπολογιστής χρειάζεται τρεις στενές αποδοχές πριν από την απόρριψη: τη θύρα ακρόασης στη φυσική διεπαφή, τη διεπαφή σήραγγας για αποκρυπτογραφημένη κίνηση και την προώθηση από τη σήραγγα προς ό,τι πρέπει να φτάνουν οι πελάτες. Διαβάστε το εγκατεστημένο σύνολο με nft list ruleset, iptables -S, ή pfctl -sr , πριν αλλάξετε οτιδήποτε, και θυμηθείτε ότι ένα αποθηκευμένο σύνολο κανόνων επιβιώνει από επανεκκίνηση, οπότε ένα λάθος εκεί επιβιώνει της διεργασίας που το έκανε.
Σειρά ανάκτησης που κρατά το μηχάνημα κλειστό
Δουλέψτε προς τα έξω από το προφίλ. Διαβάστε τη διεύθυνση και τη θύρα του ομοτίμου που χρησιμοποιεί ο πελάτης, επιβεβαιώστε ότι το όνομα κεντρικού υπολογιστή επιλύεται χωρίς τη σήραγγα, μετά προσθέστε μία εξαίρεση για αυτή τη διεύθυνση και θύρα μόνο στον φυσικό προσαρμογέα. Συνδεθείτε ξανά και παρακολουθήστε τον μετρητή αποστολής, μια ολοκληρωμένη χειραψία είναι το σήμα ότι το δεύτερο στάδιο διορθώθηκε.
Αφήστε την υπόλοιπη πολιτική απόρριψης στη θέση της όσο δοκιμάζετε. Ένας ακίνδυνος έλεγχος είναι να δοκιμάσετε σύνδεση σε μια άσχετη διεύθυνση τεκμηρίωσης και να επιβεβαιώσετε ότι ακόμη λήγει, κάτι που δείχνει ότι ο διακόπτης ασφαλείας δουλεύει και δεν είναι σβηστός. Σφίξτε την εξαίρεση μόλις σταθεροποιηθεί η σήραγγα, και μην αφήνετε μόνιμη άδεια για όλα στο δυαδικό του πελάτη επειδή είναι βολικό.
Αν η σήραγγα ανέβει και η εφαρμογή εξακολουθεί να αποτυγχάνει, τα υπόλοιπα στάδια δεν είναι αυτό: το διαχωρισμένο DNS, το MTU και η δρομολόγηση ανά εφαρμογή παράγουν το καθένα συνδεδεμένη σήραγγα με σπασμένη κίνηση, και το καθένα έχει διαφορετικό πρώτο έλεγχο.