Autant que j'aie 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 véritable noyau Linux dans une machine virtuelle légère sur Windows 10.)
Cependant, ce processus ne fonctionne pas pour moi - je me retrouve avec un système qui se contente de dépasser le temps imparti 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ésactivez 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
[réseau]
generateResolvConf = false
(Apparemment, il y a un bug dans la version actuelle où tout espace blanc en fin de ligne posera problème.)
2. Redémarrez la machine virtuelle WSL2
Référez tous vos invites de commandes Linux et exécutez la commande Powershell suivante
wsl --shutdown
3. Créez un /etc/resolv.conf
personnalisé
Ouvrez une nouvelle invite de commandes Linux et accédez à /etc
Si resolv.conf
est lié de manière souple à un autre fichier, supprimez le lien avec
rm resolv.conf
Créez un nouveau resolv.conf
avec le contenu suivant
servers DNS 1.1.1.1
4. Redémarrez la machine virtuelle WSL2
Comme à l'étape #2
5. Démarrez une nouvelle invite de commandes Linux
Profit!
Mise à jour le 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:
# [réseau]
# generateHosts = false
127.0.0.1 localhost
127.0.1.1 [censuré] 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 des machines hôtes IPv6 capables
::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 soitresolvectl status
soitsystemd-resolve status
?0 votes
Cela fonctionne parfaitement sur Fedora 35 sur WSL2 sur Windows 11.