Ρύθμιση DNS σε προσαρμογέα VPN των Windows με PowerShell και επαλήθευση
Τα Windows συνδέουν το DNS της σήραγγας με τον προσαρμογέα, όχι με το προφίλ VPN. Ρυθμίστε το μετά τη σύνδεση στο PowerShell και ελέγξτε αν η επανασύνδεση το διατηρεί.
Μια σύνδεση VPN των Windows δεν αποθηκεύει διακομιστές DNS στο προφίλ που επεξεργάζεστε στις Ρυθμίσεις. Όταν η σήραγγα ανέβει, ο πελάτης διαπραγματεύεται τη διαμόρφωση IP με την πύλη, η πύλη στέλνει μια λίστα επιλυτών και τα Windows την εφαρμόζουν στον προσαρμογέα της σήραγγας. Αυτός ο προσαρμογέας είναι ξεχωριστή διεπαφή από το Wi-Fi ή το Ethernet σας, και η λίστα ανήκει στη διεπαφή, όχι στο προφίλ. Μόλις ξέρετε ποιο αντικείμενο κατέχει την τιμή, η παράκαμψή της στο PowerShell είναι μία εντολή· το να επιβιώσει η παράκαμψη μιας επανασύνδεσης είναι το κομμάτι που χρειάζεται απόφαση.
Ποιο αντικείμενο κατέχει τη διεύθυνση
Το RAS δημιουργεί τον προσαρμογέα της σήραγγας όταν η σύνδεση πετυχαίνει και τον αφαιρεί όταν η σύνδεση πέφτει. Οι διακομιστές DNS που βλέπετε στο ipconfig /all φτάνουν κατά την ανταλλαγή διαμόρφωσης, δίπλα στις διευθύνσεις IPv4 και IPv6 και στις διαδρομές. Επειδή η τιμή είναι συνδεδεμένη με τη διεπαφή, το Set-DnsClientServerAddress γράφει σε κάτι που υπάρχει μόνο όσο υπάρχει η σύνδεση.
Αυτό το ένα γεγονός εξηγεί το μεγαλύτερο μέρος της σύγχυσης γύρω από το DNS του VPN. Ένα προφίλ μπορεί να επιθεωρηθεί ενώ είναι αποσυνδεδεμένο, αλλά δεν υπάρχει διεπαφή για να δείξει κανείς, οπότε ένα σενάριο σύνδεσης που καλεί την εντολή κατά του ψευδώνυμου VPN αποτυγχάνει πριν συνδεθεί κανείς. Εξηγεί επίσης μια αλλαγή που μοιάζει να επιστρέφει: τίποτα δεν επέστρεψε, η διεπαφή καταστράφηκε και ξαναχτίστηκε με τις τιμές που έστειλε η πύλη.
Βρείτε το ψευδώνυμο πριν αγγίξετε το DNS
Το όνομα του προφίλ και το ψευδώνυμο της διεπαφής είναι συνήθως το ίδιο κείμενο, αλλά δεν είναι το ίδιο αντικείμενο. Get-VpnConnection παραθέτει προφίλ· Get-NetAdapter παραθέτει τις διεπαφές που έχει πραγματικά το Windows. Οι εντολές DNS θέλουν τη δεύτερη, και τα δύο αποκλίνουν συχνότερα απ’ όσο περιμένουν οι άνθρωποι, ειδικά όταν ο πελάτης προσθέτει έναν περιγραφέα όπως «(RAS)» στο όνομα του προσαρμογέα.
Αν το προφίλ δεν υπάρχει, το PowerShell μπορεί να δημιουργήσει εγγενή καταχώριση. Ο τύπος σήραγγας και ο έλεγχος ταυτότητας πρέπει να ταιριάζουν με ό,τι προσφέρει η πύλη, γιατί η αναντιστοιχία εμφανίζεται κατά τη σύνδεση, όχι κατά τη δημιουργία:
Add-VpnConnection -Name "Corporate" -ServerAddress vpn.example.net `
-TunnelType Ikev2 -EncryptionLevel Required `
-AuthenticationMethod Eap -AllUserConnection
Συνδεθείτε μία φορά και μετά διαβάστε το πραγματικό ψευδώνυμο πριν γράψετε οποιαδήποτε εντολή DNS:
rasdial.exe "Corporate"
Get-NetAdapter | Where-Object InterfaceDescription -like "*VPN*"
Get-DnsClientServerAddress -InterfaceAlias "Corporate"
Εφαρμόστε την παράκαμψη με τη σωστή σειρά
Η σειρά μετράει περισσότερο από τη σύνταξη. Ο προσαρμογέας πρέπει να είναι ενεργός, το ψευδώνυμο πρέπει να επιλύεται και ο λογαριασμός πρέπει να επιτρέπεται να αλλάζει ρυθμίσεις διεπαφής. Μια σύνδεση ανά χρήστη δέχεται συνήθως την αλλαγή από τον συνδεδεμένο χρήστη· μια σύνδεση για όλους τους χρήστες που δημιουργήθηκε με -AllUserConnection χρειάζεται γενικά ένα κέλυφος με αυξημένα δικαιώματα.
Η ίδια η εντολή είναι μία γραμμή, τεκμηριωμένη στην αναφορά του Set-DnsClientServerAddress:
Set-DnsClientServerAddress -InterfaceAlias "Corporate" -ServerAddresses 10.20.0.53,10.20.0.54
Get-DnsClientServerAddress -InterfaceAlias "Corporate" -AddressFamily IPv4
Δύο τρόποι αποτυχίας αξίζει να αναγνωρίζονται με μια ματιά. Ένα λάθος ψευδώνυμο παράγει σφάλμα από την εντολή, και αυτό είναι το καλό αποτέλεσμα, γιατί η σιωπή θα ήταν χειρότερη. Μια σωστή εντολή χωρίς ορατό αποτέλεσμα συνήθως σημαίνει ότι κοιτάτε λάθος προσαρμογέα: έναν εναπομείναντα προσαρμογέα σήραγγας από άλλον πελάτη, μια φυσική κάρτα δικτύου με παρόμοια περιγραφή ή έναν δεύτερο εικονικό προσαρμογέα που δημιούργησε εργαλείο δικτύωσης sandbox.
Γιατί μια επανασύνδεση μπορεί να ακυρώσει την αλλαγή
Η παράκαμψη ανήκει σε ένα στιγμιότυπο διεπαφής. Όταν ο πελάτης γκρεμίζει τον προσαρμογέα και τον ξαναχτίζει στην επόμενη σύνδεση, οι τιμές που στάλθηκαν εφαρμόζονται ξανά και η λίστα σας χάνεται. Μερικοί πελάτες δημιουργούν τη διεπαφή από την αρχή σε κάθε σύνδεση· άλλοι την επαναχρησιμοποιούν για όλη τη συνεδρία. Συγκρίνετε το ευρετήριο διεπαφής στο Get-NetAdapter ανάμεσα σε δύο συνδέσεις και θα ξέρετε ποια συμπεριφορά έχετε.
Υπάρχουν τρεις ανθεκτικές απαντήσεις, και το να τις στοιβάζετε δημιουργεί δικά του σφάλματα. Ένα επίθημα DNS ειδικό για τη σύνδεση μαζί με έναν κανόνα NRPT στέλνει μόνο τον εσωτερικό χώρο ονομάτων στον εσωτερικό επιλυτή και αφήνει τα δημόσια ονόματα ήσυχα. Μια ρύθμιση Group Policy ή MDM που εφαρμόζεται στη σύνδεση VPN ορίζει το DNS κατά τη σύνδεση χωρίς κανένα σενάριο. Μια προγραμματισμένη εργασία που αντιδρά στο συμβάν σύνδεσης και ξανατρέχει την εντολή είναι η ωμή επιλογή, αλλά δουλεύει και αφήνει αρχείο καταγραφής. Διαλέξτε έναν ιδιοκτήτη για το DNS και σημειώστε ποιος είναι.
Τα εσωτερικά ονόματα μίας ετικέτας χρειάζονται επίσης λίστα αναζήτησης επιθημάτων. Set-DnsClientGlobalSetting -SuffixSearchList ισχύει για όλο το μηχάνημα, άρα αλλάζει την επίλυση για κάθε προσαρμογέα στο μηχάνημα, συμπεριλαμβανομένου του Ethernet. Δοκιμάστε το σε μηχάνημα εργαστηρίου πριν μπει σε είδωλο.
Επαληθεύστε την επίλυση, όχι μόνο τη ρύθμιση
Ένας επιλυτής που εμφανίζεται σε προσαρμογέα αποδεικνύει μόνο ότι γράφτηκε μια τιμή. Ρωτήστε τον προοριζόμενο διακομιστή απευθείας και μετά ρωτήστε μέσω της κανονικής διαδρομής:
Resolve-DnsName server01.corp.example -Server 10.20.0.53
Resolve-DnsName server01.corp.example
Ο διαχωρισμός σας λέει πού βρίσκεται το σφάλμα. Η άμεση ερώτηση απαντά και η απλή ερώτηση αποτυγχάνει: η ρύθμιση του προσαρμογέα ή η λίστα επιθημάτων δεν ισχύει. Και οι δύο αποτυγχάνουν: ο επιλυτής δεν είναι προσβάσιμος μέσω της σήραγγας, οπότε κοιτάξτε διαδρομές και κανόνες τείχους προστασίας πριν αγγίξετε ξανά το DNS. Η άμεση ερώτηση αποτυγχάνει ενώ η απλή απαντά από αλλού: το split DNS είναι λάθος ρυθμισμένο και ένα εσωτερικό όνομα απαντάται από δημόσιο επιλυτή, που είναι πρόβλημα πολιτικής πριν γίνει πρόβλημα συνδεσιμότητας.
Εκτελέστε τη δοκιμή δύο φορές, μία αμέσως μετά τη σύνδεση και μία μετά από αποσύνδεση και επανασύνδεση, και συγκρίνετε την Get-DnsClientServerAddress έξοδο και των δύο εκτελέσεων. Αν η τιμή που στάλθηκε επιστρέψει στη δεύτερη σύνδεση, η παράκαμψη έζησε και πέθανε με τον προσαρμογέα, και μόνο η διαδρομή NRPT ή πολιτικής από την προηγούμενη ενότητα θα κρατήσει. Κρατήστε και τα δύο αντίγραφα και τις χρονικές σφραγίδες σύνδεσης· λύνουν το ερώτημα αν μένει γρηγορότερα από άλλον γύρο αλλαγών.