Pelo que pude descobrir, o processo oficial para alterar qual servidor DNS é usado pelo WSL2 no Windows 10 é detalhado abaixo. (WSL2 é a nova versão do Windows Subsystem for Linux, que executa um kernel Linux real em uma VM leve no Windows 10.)
No entanto, esse processo não funciona para mim - acabo com um sistema que simplesmente expira e não consegue resolver nenhum endereço.
O que estou fazendo errado?
Aqui está o processo como eu o montei até agora:
1. Desligue a geração de/etc/resolv.conf
Usando o prompt do Linux (estou usando o Ubuntu), modifique (ou crie) /etc/wsl.conf com o seguinte conteúdo
[network]
generateResolvConf = false
(Aparentemente, há um bug na versão atual em que qualquer espaço em branco à direita nessas linhas atrapalhará as coisas.)
2. Reinicie a máquina virtual WSL2
Saia de todos os prompts do Linux e execute o seguinte comando do Powershell
wsl --shutdown
3. Crie um costume/etc/resolv.conf
Abra um novo prompt do Linux e cd para/etc
Se resolv.conf
estiver vinculado a outro arquivo, remova o link com
rm resolv.conf
Crie um novo resolv.conf
com o seguinte conteúdo
nameserver 1.1.1.1
4. Reinicie a máquina virtual WSL2
Igual ao passo #2
5. Inicie um novo prompt do Linux.
Lucro!
Atualização em 18 de março de 2020
Meu /etc/hosts
arquivo contém isso:
# This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /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
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
O arquivo /etc/switch.conf
não existe.
A ferramenta resolvectl
não está no meu caminho; não existe em /usr/bin/resolvectl
.
Da mesma forma systemd-resolve
não está no meu caminho; não existe em /usr/bin/systemd-resolve
.