Συνέδεσα τον πελάτη VPN σε φορητό με Windows 11, το πλακίδιο πήγε στο Connected, άνοιξε ένας εσωτερικός κοινόχρηστος φάκελος και μια δημόσια ιστοσελίδα φόρτωνε ακόμη απευθείας από το Wi-Fi του γραφείου. Αυτό το μείγμα μοιάζει με σπασμένο τούνελ. Είναι η κανονική έξοδος ενός προφίλ που στέλνει μέρος της κίνησης μέσω VPN και αφήνει το υπόλοιπο στον φυσικό προσαρμογέα. Η εξαναγκασμένη σήραγγα αλλάζει ποια προεπιλεγμένη διαδρομή προτιμά τα Windows· δεν διαγράφει πιο ειδικές διαδρομές και δεν υπόσχεται ότι η κίνηση σταματά όταν πέσει η σύνδεση. Ακολουθεί η σειρά με την οποία δουλεύω όταν ένας πελάτης ισχυρίζεται κάλυψη: κατάσταση πελάτη, αποθηκευμένο προφίλ, εφαρμοσμένες διαδρομές, επιλυτής και μετά πραγματικές ροές.

Ξεκινήστε από τον πελάτη και μετά σταματήστε να τον εμπιστεύεστε

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

Αυτό που δεν μπορεί να σας πει ο πελάτης είναι η κάλυψη. Ένα συνδεδεμένο πλακίδιο περιγράφει την κατάσταση του τούνελ, όχι απογραφή προορισμών. Οι πελάτες τρίτων κρατούν επίσης τη δική τους διαμόρφωση, οπότε το εγγενές προφίλ των Windows και κάθε ιδιότητα που θα διαβάσετε από αυτό μπορεί να μην έχουν καμία σχέση με ό,τι εγκατέστησε εκείνος ο πελάτης. Αν το VPN ήρθε μέσω AnyConnect, OpenVPN GUI, WireGuard ή πράκτορα προμηθευτή, οι παρακάτω έλεγχοι PowerShell κατά κύριο λόγο δεν ισχύουν και θα πρέπει να διαβάσετε τις δικές του ρυθμίσεις split-tunnel και δρομολόγησης.

Διαβάστε το αποθηκευμένο προφίλ, όχι το πλακίδιο

Για εγγενές προφίλ Windows (IKEv2, L2TP, SSTP ή ένα που σπρώχνεται από MDM) η αποθηκευμένη απόφαση split-tunnel είναι μία μόνο ιδιότητα:

Get-VpnConnection -Name 'Office' | Select-Object Name, ServerAddress, SplitTunneling, DnsSuffix

Προσθέστε -AllUserConnection όταν το προφίλ δημιουργήθηκε για όλους στη συσκευή. Χωρίς αυτό διαβάζετε τη λίστα του τρέχοντος χρήστη, που μπορεί να είναι κενή ή να κρατά άλλη καταχώριση με παρόμοιο όνομα. Τιμή False στο SplitTunneling σημαίνει ότι το προφίλ αποθηκεύτηκε ως πλήρες τούνελ: τα Windows εγκαθιστούν μια προεπιλεγμένη διαδρομή μέσω του προσαρμογέα VPN. True σημαίνει split tunnel και η κάλυψη εξαρτάται τότε εξ ολοκλήρου από τις διαδρομές και τους κανόνες επίλυσης ονομάτων που σπρώχνει το προφίλ.

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

Συγκρίνετε την αποθηκευμένη τιμή με τον εφαρμοσμένο πίνακα διαδρομών

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

$vpn = Get-NetAdapter | Where-Object InterfaceDescription -match 'VPN|WAN Miniport'
Get-NetRoute -InterfaceIndex $vpn.ifIndex | Sort-Object DestinationPrefix
Find-NetRoute -RemoteIPAddress 10.20.4.15 | Select-Object -First 1

Το Find-NetRoute είναι το χρήσιμο μισό. Απαντά στην ερώτηση που ο πελάτης δεν απαντά ποτέ: για αυτόν τον προορισμό, ποια διεπαφή και ποια διεύθυνση πηγής θα χρησιμοποιήσουν πραγματικά τα Windows; Εκτελέστε το για έναν εσωτερικό κεντρικό υπολογιστή, έναν δημόσιο και ό,τι θεωρείτε σκόπιμη εξαίρεση. Ένα προφίλ πλήρους τούνελ πρέπει να δείχνει τη διεπαφή τούνελ για τη δημόσια διεύθυνση. Ένα προφίλ split tunnel δείχνει συνήθως εκεί τον φυσικό προσαρμογέα, ενώ τα εσωτερικά προθέματα εξακολουθούν να επιλύονται μέσω VPN.

Δύο παγίδες εξηγούν τις περισσότερες αναφορές «δρομολογεί προς λάθος κατεύθυνση». Το πιο ειδικό πρόθεμα κερδίζει πάντα, οπότε ένα /24 στον φυσικό προσαρμογέα κερδίζει μια προεπιλεγμένη διαδρομή στο VPN όσο χαμηλή κι αν είναι η μετρική του τούνελ. Η μετρική λύνει μόνο ισοπαλίες μεταξύ διαδρομών για το ίδιο πρόθεμα. Και τα IPv4 και IPv6 αποφασίζονται χωριστά: ένα προφίλ που καλύπτει 0.0.0.0/0 μπορεί να αφήσει το IPv6 στον τοπικό σύνδεσμο, κάνοντας έναν δικτυακό τόπο διπλής στοίβας να φαίνεται μισο-τουνελαρισμένος. Ελέγξτε το Get-NetRoute -AddressFamily IPv6 πριν συμπεράνετε ότι το τούνελ είναι εντάξει.

What you seeMost likely causeCheck next
Public traffic leaves the physical adapter while SplitTunneling reads FalseA more specific route on that adapter wins over the tunnel defaultFind-NetRoute for the exact destination, then look for a /24 or host route on the physical interface
Internal name fails, internal IP worksNo NRPT rule for that namespace, or a broader rule matches firstGet-DnsClientNrptPolicy and the namespace order
A dual-stack site opens directly while IPv4 uses the tunnelThe profile covers only the IPv4 default routeThe IPv6 route table on both interfaces
Routes look right but one app still goes directThe app uses its own proxy, or the client keeps a per-app listThe app's proxy settings and the client's application list

Ελέγξτε την επίλυση ονομάτων χωριστά με το NRPT

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

Get-DnsClientNrptPolicy -Effective | Select-Object Namespace, NameServers
Get-DnsClientServerAddress -InterfaceIndex $vpn.ifIndex

Όταν ένας κανόνας ταιριάζει με *.corp.example, τα ερωτήματα για αυτόν τον χώρο ονομάτων πηγαίνουν στους διακομιστές DNS του τούνελ ακόμη κι αν η διαδρομή δεδομένων προς αυτούς μένει στον φυσικό προσαρμογέα σε λειτουργία split tunnel. Αυτός είναι ο σχεδιασμός και γι' αυτό μια δοκιμή περιηγητή που ανοίγει μια δημόσια σελίδα δεν σας λέει τίποτα για εσωτερικά ονόματα. Αν ο προσαρμογέας απαριθμεί τους αναμενόμενους διακομιστές αλλά οι αναζητήσεις πηγαίνουν αλλού, συγκρίνετε τη σειρά των κανόνων NRPT και ελέγξτε αν ταιριάζει πρώτος ένας πιο ειδικός χώρος ονομάτων.

Επαληθεύστε τις ροές και μετά αποφασίστε τι ζητήσατε πραγματικά

Περάστε τους προορισμούς σε σταθερή σειρά ώστε τα αποτελέσματα να είναι συγκρίσιμα μεταξύ μηχανημάτων: μια δημόσια διεύθυνση, μια εσωτερική διεύθυνση, ένα εσωτερικό όνομα και μία σκόπιμη εξαίρεση όπως ένας τοπικός εκτυπωτής ή μια βιντεοκλήση. Καταγράψτε τη διεπαφή και τη διεύθυνση πηγής που επιστρέφει το Find-NetRoute για καθεμία. Μετά από οποιαδήποτε αλλαγή πολιτικής, επανασυνδεθείτε και επαναλάβετε τους ίδιους τέσσερις ελέγχους· ο πίνακας διαδρομών μετά την επανασύνδεση είναι η μόνη απόδειξη ότι το νέο προφίλ τέθηκε σε ισχύ.

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

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

  • Όνομα και εύρος προφίλ επιβεβαιωμένα, με -AllUserConnection για προφίλ σε όλο το μηχάνημα.
  • Το SplitTunneling διαβάστηκε και αντιμετωπίστηκε ως διαμόρφωση, όχι ως απόδειξη κάλυψης.
  • Διαδρομές προσαρμογέα τούνελ καταγεγραμμένες χωριστά για IPv4 και IPv6.
  • Το Find-NetRoute εκτελέστηκε για έναν δημόσιο, έναν εσωτερικό και έναν προορισμό εξαίρεσης.
  • Οι κανόνες NRPT ελέγχθηκαν πριν κατηγορηθούν οι διαδρομές για αποτυχία ονόματος.
  • Η απαίτηση αποκλεισμού ξαναδιαβάστηκε: η προτιμώμενη δρομολόγηση δεν είναι το ίδιο με τον επιβεβλημένο αποκλεισμό.

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

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