77 votes

Comment changer les paramètres DNS pour WSL2?

Autant que j'ai pu le comprendre, le processus officiel pour changer le serveur DNS utilisé par WSL2 sur Windows 10 est détaillé ci-dessous. (WSL2 est la nouvelle version du sous-système Windows pour Linux, qui exécute un vrai noyau Linux dans une machine virtuelle légère sur Windows 10.)

Cependant, ce processus ne fonctionne pas pour moi - j'obtiens un système qui se contente de mettre fin au délai d'attente et ne peut résoudre aucune adresse.

Qu'est-ce que je fais de mal?

Voici le processus tel que je l'ai reconstitué jusqu'à présent :

1. Désactiver la génération de /etc/resolv.conf

En utilisant votre invite de commandes Linux, (j'utilise Ubuntu), modifiez (ou créez) /etc/wsl.conf avec le contenu suivant

[network]
generateResolvConf = false

(Apparemment, il y a un bug dans la version actuelle où tout espace de fin sur ces lignes perturbera les choses.)

2. Redémarrer la machine virtuelle WSL2

Quittez toutes vos invites de commandes Linux et exécutez la commande Powershell suivante

wsl --shutdown

3. Créer un /etc/resolv.conf personnalisé

Ouvrez une nouvelle invite de commandes Linux et cd vers /etc

Si resolv.conf est lié symboliquement à un autre fichier, supprimez le lien avec

rm resolv.conf

Créez un nouveau resolv.conf avec le contenu suivant

nameserver 1.1.1.1

4. Redémarrer la machine virtuelle WSL2

Comme à l'étape #2

5. Démarrer une nouvelle invite de commandes Linux

Profit !

Mise à jour du 18 mars 2020

Mon fichier /etc/hosts contient ceci :

# Ce fichier a été généré automatiquement par WSL. Pour arrêter la génération automatique de ce fichier, ajoutez l'entrée suivante à /etc/wsl.conf :
# [network]
# generateHosts = false
127.0.0.1 localhost
127.0.1.1 [redacted]  bearps-desktop

10.168.244.140  host.docker.internal
10.168.244.140  gateway.docker.internal
127.0.0.1       kubernetes.docker.internal

# Les lignes suivantes sont souhaitables pour les hôtes compatibles IPv6
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Le fichier /etc/switch.conf n'existe pas.

L'outil resolvectl n'est pas sur mon chemin; il n'existe pas à /usr/bin/resolvectl.

De même systemd-resolve n'est pas sur mon chemin; il n'existe pas à /usr/bin/systemd-resolve.

0 votes

Par curiosité, quels sont les contenus de /etc/host, /etc/switch.conf et les résultats de resolvectl status ou systemd-resolve status?

0 votes

Cela fonctionne parfaitement sur Fedora 35 sur WSL2 sur Windows 11.

0voto

user205301 Points 1135

Si vous voulez partager la configuration DNS entre Windows et WSL Linux, laissez autogénération activée.

En tant qu'administrateur Windows, modifiez C:\Windows\System32\drivers\etc\hosts.
Ou exécutez le Shell Linux WSL en tant qu'administrateur Windows (avec clic droit) et modifiez le fichier /mnt/c/Windows/System32/drivers/etc/hosts.

2 votes

Je ne comprends pas votre réponse, qu'est-ce qui devrait être modifié dans le fichier hosts ?

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X