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 deresolvectl status
ousystemd-resolve status
?0 votes
Cela fonctionne parfaitement sur Fedora 35 sur WSL2 sur Windows 11.