Το τούνελ έφυγε, το εικονίδιο δικτύου φαίνεται κανονικό και τίποτα δεν φορτώνει. Αποσυνδέσατε το VPN, το απεγκαταστήσατε ή επανεκκινήσατε, και ο αποκλεισμός που έπρεπε να σας προστατεύσει κατά τη διάρκεια μιας διακοπής στέκει ακόμη. Το παράθυρο του πελάτη δεν μπορεί να το εξηγήσει, γιατί ο πελάτης δεν είναι αυτό που σας αποκλείει: η απόφαση γράφτηκε στον πυρήνα στο όνομά σας και δεν έμεινε τίποτα για να την αφαιρέσει. Στα Windows αυτή η κατάσταση βρίσκεται στην Πλατφόρμα Φιλτραρίσματος των Windows· στο Linux είναι ένα σύνολο κανόνων σε iptables ή nftables, συχνά με ένα στιγμιότυπο που επαναλαμβάνεται κατά την εκκίνηση. Αυτό που ακολουθεί είναι η σειρά που χρησιμοποιώ: διαβάστε την κατάσταση, διαγράψτε το στενότερο αντικείμενο που εξηγεί την αποτυχία και μετά βρείτε ό,τι συνεχίζει να το επαναφέρει.

Ο διακόπτης ασφαλείας είναι κατάσταση πυρήνα, όχι ρύθμιση

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

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

Διαβάστε την κατάσταση WFP πριν διαγράψετε οτιδήποτε

Τα Windows παρέχουν τα εργαλεία που χρειάζεστε. Εκτελέστε ένα αναβαθμισμένο παράθυρο εντολών και αποτυπώστε την κατάσταση της πλατφόρμας· το αρχείο καταλήγει ως wfpstate.xml στον κατάλογο εργασίας.

netsh wfp show state
netsh wfp show filters
Get-Service bfe

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

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

netsh advfirewall show allprofiles
Get-NetFirewallProfile | Select-Object Name,Enabled,DefaultInboundAction

Όταν τα ενσωματωμένα προφίλ είναι ενεργά και κανένας κανόνας δεν ταιριάζει με την κίνηση που αποτυγχάνει, ο αποκλεισμός προέρχεται από προμηθευτή τρίτου μέρους και όχι από το τείχος προστασίας των Windows. Αυτή η διάκριση καθορίζει ποιο εργαλείο θα χρησιμοποιήσετε για την επιδιόρθωση.

Διαβάστε τους κανόνες του Linux στη σύνταξη με την οποία θα διαγράψετε

Το iptables -S τυπώνει κανόνες στην ίδια μορφή που χρησιμοποιείται για την προσθήκη τους, γεγονός που κάνει την έξοδο άμεσα επαναχρησιμοποιήσιμη για διαγραφή. Το iptables -L -v -n προσθέτει μετρητές πακέτων, και αυτοί οι μετρητές σας λένε αν ένας κανόνας ταιριάζει πραγματικά με τα αποτυχημένα αιτήματά σας ή απλώς κάθεται στην αλυσίδα.

sudo iptables -S
sudo ip6tables -S
sudo iptables -t nat -S

Διαβάστε τις πολιτικές των αλυσίδων, όχι μόνο τους κανόνες: το -P OUTPUT DROP αποκλείει την κίνηση ακόμη και όταν κανένας κανόνας δεν ταιριάζει. Εξετάστε το IPv6 ξεχωριστά, γιατί ένας πελάτης που εγκαθιστά και τις δύο οικογένειες μπορεί να αφήσει τον αποκλεισμό IPv6 στη θέση του αφού εξαφανιστούν οι κανόνες IPv4, και τότε το σύμπτωμα εξαρτάται από την οικογένεια που προτιμά μια εφαρμογή. Όπου χρησιμοποιείται nftables, εκτελέστε και το nft list ruleset· τα δύο εργαλεία συνυπάρχουν μέσω ενός επιπέδου συμβατότητας, και μια λίστα δεν δείχνει απαραίτητα κάθε κανόνα που μπορεί να απορρίψει ένα πακέτο.

Διαγράψτε το στενότερο αντικείμενο που εξηγεί την αποτυχία

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

Get-ScheduledTask | Where-Object TaskName -like '*vpn*'
Get-Service | Where-Object DisplayName -like '*vpn*'

Τα επίμονα φίλτρα είναι η τελευταία λύση. Βρίσκονται κάτω από το HKLM\SYSTEM\CurrentControlSet\Services\BFE\Parameters\Policy\Persistent\Filter, μία τιμή ανά φίλτρο με κλειδί GUID. Εξαγάγετε πρώτα το κλειδί, καταγράψτε τα GUID που αφαιρείτε, διαγράψτε μόνο τις τιμές που ανήκουν στον αποχωρήσαντα πελάτη και μετά επανεκκινήστε ώστε ο μηχανισμός να ξαναχτίσει την κατάστασή του. Μη διαγράψετε ολόκληρο το κλειδί και μην απενεργοποιήσετε το Base Filtering Engine: το τείχος προστασίας των Windows και το Defender εξαρτώνται από αυτό, και θα ανταλλάσσατε μια διακοπή με μια χειρότερη.

reg export "HKLM\SYSTEM\CurrentControlSet\Services\BFE\Parameters\Policy\Persistent" C:\temp\bfe-backup.reg

Στο Linux, πάρτε τη γραμμή που τυπώνει το iptables -S και αντικαταστήστε το -A με το -D. Η διαγραφή του ενός κανόνα που εντοπίσατε είναι καλύτερη από το άδειασμα μιας αλυσίδας, γιατί αφήνει την πολιτική σας άθικτη.

sudo iptables -D OUTPUT -p udp -j REJECT

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

Βρείτε τον ιδιοκτήτη που το επαναφέρει

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

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

Επαληθεύστε με πραγματική κίνηση, όχι με ένα ping

Δοκιμάστε μια αναζήτηση ονόματος, μια σύνδεση TCP και μια νέα συνεδρία προγράμματος περιήγησης, μετά επανεκκινήστε και επαναλάβετε τους ίδιους τρεις ελέγχους. Ένα ping που λειτουργεί ενώ το HTTPS αποτυγχάνει δείχνει φίλτρο επιπέδου μεταφοράς και όχι το δίκτυο, και ένας αποκλεισμός που επανεμφανίζεται μόνο μετά την επανεκκίνηση δείχνει έναν ιδιοκτήτη που δεν έχετε βρει ακόμη.

Κρατήστε τα στοιχεία: το εξαγόμενο κλειδί BFE ή την έξοδο του iptables -S που καταγράφηκε πριν από την αλλαγή. Πριν το χαρακτηρίσετε διορθωμένο, επιβεβαιώστε το επίπεδο από το οποίο αφαιρέσατε το αντικείμενο, τον ιδιοκτήτη που θα μπορούσε να το επανεγκαταστήσει, την κατάσταση μετά από μία καθαρή επανεκκίνηση και ότι η συνηθισμένη περιήγηση λειτουργεί χωρίς καμία διεργασία VPN σε λειτουργία. Η σελίδα εγχειριδίου iptables(8) έχει την ακριβή σύνταξη διαγραφής και πολιτικής αν γράφετε σενάριο τον καθαρισμό.

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