Η δρομολόγηση του υποδικτύου της εφαρμογής είναι το προφανές μέρος ενός split tunnel και δεν είναι όλη η δουλειά. Ο resolver κάθεται συχνά σε διαφορετική διεύθυνση από την εφαρμογή που εξυπηρετεί, οπότε ένα λειτουργικό tunnel μπορεί να αφήσει την αναζήτηση έξω από αυτό. Ένα προφίλ που μεταφέρει το 10.80.0.0/16 και τίποτε άλλο στέλνει το ερώτημα για το 10.90.0.53 μέσω της τοπικής διεπαφής, όπου δεν υπάρχει ιδιωτική ζώνη. Προσθέστε τη διαδρομή προς τον resolver και μετά κοιτάξτε το δεύτερο μισό του προβλήματος: ποιον διακομιστή επιλέγει στην πραγματικότητα ο πελάτης.

Ο μύθος: μία διαδρομή καλύπτει όλη την υπηρεσία

Ένα split tunnel είναι μια λίστα προορισμών που περνούν μέσα από τη σύνδεση, όχι μια περιγραφή υπηρεσίας. Το υποδίκτυο της εφαρμογής και η διεύθυνση του resolver είναι δύο προορισμοί, και ένα προφίλ μπορεί να μεταφέρει τον έναν χωρίς τον άλλον. Όταν συμβεί αυτό, η εφαρμογή είναι προσβάσιμη με διεύθυνση ενώ το όνομά της αποτυγχάνει, κάτι που μοιάζει με βλάβη DNS παρά με κενό δρομολόγησης.

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

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

Καθορίστε ποιες διευθύνσεις πρέπει να μεταφέρει το προφίλ

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

DestinationCoverage this example needs
Application network10.80.0.0/16 through the VPN
Private resolver10.90.0.53/32 through the VPN
Public VPN endpointNormal internet path, outside the tunnel

Συμπεριλάβετε και UDP και TCP για το DNS, αφού από τις υλοποιήσεις αναμένεται να υποστηρίζουν TCP μαζί με UDP, και μια φραγμένη διαδρομή TCP παράγει αργές, μερικές αστοχίες αντί για καθαρές. Αν η ιδιωτική ζώνη εξυπηρετείται και μέσω IPv6, η αντίστοιχη εξαίρεση host χρησιμοποιεί διεύθυνση και πρόθεμα IPv6 και είναι ξεχωριστή εγγραφή.

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

Προσθέστε τη διαδρομή host μέσω του κατόχου της σύνδεσης

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

Add-VpnConnectionRoute -ConnectionName 'Office VPN' -DestinationPrefix '10.90.0.53/32' -WhatIf
Get-VpnConnection -Name 'Office VPN' | Select-Object -ExpandProperty Routes

Η πρώτη εντολή κάνει προεπισκόπηση της αλλαγής χωρίς να εγκαταστήσει τίποτα, και η δεύτερη απαριθμεί τις διαδρομές που μεταφέρει αυτή τη στιγμή το προφίλ. Η αναφορά του Add-VpnConnectionRoute της Microsoft τεκμηριώνει τα εύρη ανά χρήστη και για όλους τους χρήστες· ένα προφίλ για όλους τους χρήστες χρειάζεται δική του παράμετρο εύρους, και μια εντολή ανά χρήστη εναντίον προφίλ για όλους τους χρήστες αποτυγχάνει ή καταλήγει στο λάθος σημείο.

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

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

Ελέγξτε ποιον resolver χρησιμοποίησε στην πραγματικότητα ο πελάτης

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

Get-DnsClientNrptPolicy
Resolve-DnsName app.svc.example -Server 10.90.0.53 -Type A

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

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

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

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