Γιατί το WSL χάνει το όνομα κεντρικού υπολογιστή εργασίας όταν συνδέεται το VPN;
Το ίδιο όνομα λειτουργεί στα Windows και αποτυγχάνει μέσα στο WSL μόλις σηκωθεί η σήραγγα. Ελέγξτε τη λειτουργία DNS της πλατφόρμας και τις παλιές παρακάμψεις πριν προσθέσετε έναν επιλυτή.
Τα Windows επιλύουν τον εσωτερικό κεντρικό υπολογιστή χωρίς κανένα παράπονο, και το ίδιο όνομα αποτυγχάνει μέσα στο WSL τη στιγμή που σηκώνεται η σήραγγα. Η συνηθισμένη επισκευή είναι να γραφτεί ένας δημόσιος επιλυτής μέσα στη διανομή, κάτι που αποκαθιστά την κανονική περιήγηση και κάνει το όνομα κεντρικού υπολογιστή εργασίας αδύνατο να επιλυθεί. Αυτό ανταλλάσσει μια αποτυχία με μια άλλη και κρύβει το επίπεδο που πραγματικά έσπασε. Πριν προσθέσετε ή αφαιρέσετε οποιαδήποτε γραμμή επιλυτή, βρείτε ποιο από τα τρία επίπεδα αποτυγχάνει.
Αποκλείστε πρώτα μια αποτυχία δρομολόγησης
Ρωτήστε το ίδιο πλήρως αναγνωρισμένο όνομα και στις δύο πλευρές, όχι δύο ονόματα που μοιάζουν. Μια επιτυχία στα Windows και μια αποτυχία στο WSL για το ίδιο αλφαριθμητικό είναι η υπογραφή δύο διαδρομών επίλυσης, και ελάχιστα άλλα παράγουν αυτό το μοτίβο τόσο καθαρά. Αν το WSL δεν μπορεί να φτάσει την υπηρεσία ούτε στη γνωστή αριθμητική διεύθυνσή της, υπάρχει και πρόβλημα δρομολόγησης ή φιλτραρίσματος. Σε αυτή την περίπτωση η εργασία στο DNS δεν θα το αποκαλύψει, και το απόγευμα πάει στο λάθος επίπεδο.
Τρία συμπτώματα καλύπτουν τις περισσότερες από αυτές τις περιπτώσεις, και το καθένα δείχνει κάπου αλλού. Διαβάστε τη γραμμή που ταιριάζει πριν ανοίξετε ένα αρχείο ρυθμίσεων:
| Symptom inside WSL | Likely layer | Where to look |
|---|---|---|
| Private name fails while public browsing works | Resolver path | Tunneling mode and the Windows build |
| A name that worked yesterday fails today | Stale override | Generated resolver file, immutable flag, shell profile |
| The name resolves but the service does not | Routing or filtering | The resolved address and the path to it |
Η μεσαία γραμμή είναι αυτή που οι άνθρωποι διαβάζουν λάθος, γιατί η αλλαγή που τη χάλασε έγινε εβδομάδες νωρίτερα και τότε φαινόταν επιτυχημένη. Η τρίτη γραμμή είναι αυτή που οι άνθρωποι διαγιγνώσκουν λάθος, γιατί ένα όνομα που επιλύεται μοιάζει με απόδειξη ότι το δίκτυο είναι υγιές. Και οι δύο γραμμές σάς στέλνουν σε διαφορετική ενότητα παρακάτω.
Η σήραγγα DNS έχει κατώτατο όριο έκδοσης
Η Microsoft τεκμηριώνει μια λειτουργία δικτύωσης του WSL που διοχετεύει αιτήματα DNS στον επιλυτή των Windows μέσω καναλιού εικονικοποίησης. Στις υποστηριζόμενες εκδόσεις Windows 11 είναι ενεργή από προεπιλογή, γι’ αυτό δύο μηχανήματα στο ίδιο εταιρικό δίκτυο συμπεριφέρονται διαφορετικά. Η μεταβλητή είναι ο αριθμός έκδοσης, όχι η εταιρική πολιτική.
Ο οδηγός δικτύωσης του WSL περιγράφει αυτή τη λειτουργία και τις εκδόσεις που την υποστηρίζουν. Το χαρακτηριστικό έχει σημασία γιατί η εταιρική πολιτική DNS ζει συνήθως στον επιλυτή των Windows, και μια διανομή που κληρονομεί τη διαδρομή των Windows κληρονομεί και την πολιτική. Μια διανομή που ρωτά δημόσιο επιλυτή δεν έχει διαδρομή προς ιδιωτικό όνομα, όσο τακτοποιημένη κι αν φαίνεται η δική της ρύθμιση. Αυτός ο μηχανισμός εξηγεί ολόκληρο το σύμπτωμα και εξηγεί γιατί αποτυγχάνει η λύση με τον δημόσιο επιλυτή.
Διαβάστε την έκδοση πριν αλλάξετε οτιδήποτε. Μια ρύθμιση αντιγραμμένη από νεότερη εγκατάσταση δεν αποτελεί απόδειξη ότι μια παλαιότερη την εφαρμόζει. Καταγράψτε τον αριθμό έκδοσης δίπλα στην αλλαγή, γιατί η διαφορά μεταξύ δύο μηχανημάτων είναι σχεδόν πάντα έκδοση και όχι πολιτική.
Οι παλιές παρακάμψεις επιβιώνουν του προβλήματος που έλυσαν
Παλαιότερες συνταγές απενεργοποιούσαν τα παραγόμενα αρχεία επιλυτή, έγραφαν καρφωτά έναν διακομιστή ονομάτων ή κλείδωναν το αρχείο με χαρακτηριστικό αμετάβλητου. Αυτές οι αλλαγές μένουν στη θέση τους πολύ καιρό αφού εξαφανιστεί το πρόβλημα συνδεσιμότητας που τις προκάλεσε, και συνήθως είναι ο λόγος που μια νεότερη ρύθμιση φαίνεται να μην κάνει τίποτα. Επιβιώνουν επίσης από μια επανεγκατάσταση της διανομής με τη μορφή προφίλ κελύφους που ξαναγράφει το αρχείο σε κάθε σύνδεση. Το τελευταίο είναι το δυσκολότερο να βρεθεί, γιατί είναι αόρατο από το αρχείο που όλοι εξετάζουν.
Ψάξτε για ένα χειρόγραφο αρχείο επιλυτή, ένα χαρακτηριστικό αμετάβλητου πάνω του και ένα σενάριο εκκίνησης που το ξαναγράφει. Ελέγξτε τη σημαία αμετάβλητου πριν την επεξεργασία, γιατί μια εγγραφή σε κλειδωμένο αρχείο αποτυγχάνει με τρόπο που διαβάζεται σαν πρόβλημα δικαιωμάτων. Ελέγξτε μετά το προφίλ κελύφους, γιατί ένα σενάριο εκεί επαναφέρει το παλιό περιεχόμενο μέσα σε δευτερόλεπτα από τη διόρθωσή σας.
Η αφαίρεση μιας παράκαμψης έχει συνέπειες, γι’ αυτό καταγράψτε τι αφαιρέσατε και γιατί. Μια διανομή που χρειάζεται πραγματικά στατικό επιλυτή για άλλο σκοπό θα σπάσει όταν επιστρέψει το παραγόμενο αρχείο.
Δύο αρχεία, δύο διαφορετικοί ρόλοι
Τα δύο αρχεία ρυθμίσεων ζουν σε διαφορετικά σημεία και ελέγχουν διαφορετικά πράγματα, και η σύγχυσή τους παράγει αλλαγές που εφαρμόζονται στο λάθος επίπεδο. Το αρχείο στην πλευρά των Windows ορίζει ιδιότητες της εικονικής μηχανής, ενώ το αρχείο στην πλευρά της διανομής ορίζει πώς αυτή η διανομή χτίζει τη δική της ρύθμιση επιλυτή. Κανένα δεν παρακάμπτει το άλλο, γι’ αυτό πρέπει και τα δύο να συμφωνούν.
Για μια εγκατάσταση που υποστηρίζει το χαρακτηριστικό, το απόσπασμα στην πλευρά των Windows είναι σύντομο. Είναι ολόκληρη η αλλαγή σε εκείνη την πλευρά:
[wsl2]
dnsTunneling=trueΑυτό το απόσπασμα ανήκει στο προφίλ χρήστη των Windows και ισχύει για την εικονική μηχανή και όχι για μία διανομή. Η διοχέτευση απαιτεί επίσης η διανομή να μην έχει απενεργοποιήσει την παραγωγή επιλυτή, οπότε το αρχείο στην πλευρά της διανομής πρέπει να αφήσει αυτή τη συμπεριφορά ήσυχη. Αλλάξτε το ένα χωρίς το άλλο και η λειτουργία δεν κάνει τίποτα σιωπηλά, που είναι ο πιο συνηθισμένος τρόπος με τον οποίο αυτή η επισκευή αναφέρεται ως χαλασμένη. Ελέγξτε και τα δύο αρχεία στην ίδια συνεδρία, γιατί δύο αλλαγές με εβδομάδες απόσταση είναι δύο αλλαγές που κανείς δεν μπορεί να αποδώσει.
Επανεκκινήστε και μετά ρωτήστε και από τις δύο πλευρές
Αυτές οι ρυθμίσεις διαβάζονται όταν ξεκινά το περιβάλλον, οπότε ένα νέο κέλυφος μέσα σε μια ενεργή διανομή δεν θα τις φορτώσει ξανά. Τερματίστε το περιβάλλον αντί να επανεκκινήσετε το κέλυφος, και αποθηκεύστε πρώτα τυχόν εργασία σε εξέλιξη, γιατί κάθε διανομή σταματά μαζί του. Μόνο αυτή η παράλειψη εξηγεί τις περισσότερες αναφορές ότι μια αλλαγή δεν έχει αποτέλεσμα.
Στη συνέχεια κάντε την ίδια ερώτηση και από τις δύο πλευρές. Η έξοδος δείχνει επίσης με ποιον επιλυτή κατέληξε στην πραγματικότητα η διανομή:
wsl.exe --shutdown
wsl.exe -e sh -c 'cat /etc/resolv.conf'
wsl.exe -e sh -c 'getent hosts files.corp.example'
wsl.exe -e powershell -Command 'Resolve-DnsName files.corp.example'Η πρώτη εντολή τερματίζει το περιβάλλον, η δεύτερη δείχνει ποιον επιλυτή χρησιμοποιεί τώρα η διανομή, και οι δύο τελευταίες θέτουν την ίδια ερώτηση σε κάθε πλευρά. Συγκρίνετε τις απαντήσεις και όχι την κατάσταση της ρύθμισης. Ένα ερώτημα που εξακολουθεί να αποτυγχάνει μετά από καθαρή επανεκκίνηση με σωστά και τα δύο αρχεία δείχνει στην εταιρική πολιτική επιλυτή, και αυτή η συζήτηση έχει άλλον ιδιοκτήτη.