Torne as alterações do /etc/resolv.conf permanentes no WSL 2

Torne as alterações do /etc/resolv.conf permanentes no WSL 2

No WSL 2, quando tento me conectar a um site, recebo um problema:

$ ping www.google.com
ping: www.google.com: Temporary failure in name resolution

Agora, para consertar isso, tive que adicionar /etc/wsl.confeste conteúdo:

[network]
generateResolvConf = true

E preciso mudar meu /etc/resolv.confpara:

nameserver 8.8.8.8

Isso funciona bem.

No entanto, quando eu reinicio meu sistema, quando encerro o wsl ou faço algo semelhante, /etc/resolv.confele é substituído pelo valor anterior.

Claro, se eu mudar /etc/wsl.confpara o seguinte e reiniciar novamente:

[network]
generateResolvConf = false

A correção mencionada acima desapareceu novamente.

Então, como faço para tornar minhas alterações /etc/resolv.confpermanentes no WSL 2?

Responder1

Eu encontrei esta soluçãoaqui

sudo rm /etc/resolv.conf
sudo bash -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf'
sudo bash -c 'echo "[network]" > /etc/wsl.conf'
sudo bash -c 'echo "generateResolvConf = false" >> /etc/wsl.conf'
sudo chattr +i /etc/resolv.conf

Responder2

tentei comentarresposta de Snuczekmas não têm reputação suficiente.

Desolução vinculadaem sua resposta, acrescentando:

[network]
generateResolvConf=false

isso /etc/wsl.confimpede que o wsl gere automaticamente o arquivo, mas apenas depois de ter sido encerrado uma vez. Feito isso, a configuração será respeitada e não é necessário tornar o /etc/resolv.confarquivo imutável através do chattr +icomando.

Para desligar o wsl, execute wsl --shutdownem um prompt de comando do Windows (isso desliga todas as distribuições WSL).

É claro que você ainda precisará adicionar seus servidores DNS ao /etc/resolv.confarquivo (por exemplo):

nameserver 1.1.1.1
nameserver 1.0.0.1

Responder3

Estas etapas garantirão que/etc/resolv.confestá configurado corretamente com oservidor de nomes 8.8.8.8toda vez que o wsl começa

  1. Adicionando entrada bashrc para usuário inicial
echo "sudo su -" >> ~/.bashrc
  1. Criando entrada sudoers para o usuário inicial
sudo su -
    
echo "username ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/username
  1. Adicionando entrada bashrc para usuário root
echo "nameserver 8.8.8.8" > /etc/resolv.conf

Observação:Isso substituirá o conteúdo do/etc/resolv.confarquivo. Você pode usarsedcomando para fazer qualquer modificação específica conforme necessário

informação relacionada