Hacer que los cambios en /etc/resolv.conf sean permanentes en WSL 2

Hacer que los cambios en /etc/resolv.conf sean permanentes en WSL 2

En WSL 2, cuando intento conectarme a un sitio web, aparece un problema:

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

Ahora, para solucionar este problema, tuve que agregar /etc/wsl.confeste contenido:

[network]
generateResolvConf = true

Y necesito cambiar mi /etc/resolv.confa:

nameserver 8.8.8.8

Esto funciona bien.

Sin embargo, cuando reinicio mi sistema, cuando apago wsl o hago algo similar, /etc/resolv.confse sobrescribe con el valor anterior.

Por supuesto, si cambio /etc/wsl.confa lo siguiente y reinicio nuevamente:

[network]
generateResolvConf = false

La solución mencionada anteriormente desapareció nuevamente.

Entonces, ¿cómo hago que mis cambios sean /etc/resolv.confpermanentes en WSL 2?

Respuesta1

encontré esta soluciónaquí

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

Respuesta2

Intenté comentarla respuesta de snuczekpero no tengo suficiente reputación.

Desde elsolución vinculadaen su respuesta, agregando:

[network]
generateResolvConf=false

Esto /etc/wsl.confimpide que wsl genere automáticamente el archivo, pero solo una vez que se ha cerrado una vez. Una vez hecho esto, se respetará la configuración y no es necesario hacer que el /etc/resolv.confarchivo sea inmutable usando el chattr +icomando.

Para cerrar wsl, ejecútelo wsl --shutdownen el símbolo del sistema de Windows (esto cierra todas las distribuciones de WSL).

Por supuesto, aún necesitarás agregar tus servidores DNS al /etc/resolv.confarchivo (por ejemplo):

nameserver 1.1.1.1
nameserver 1.0.0.1

Respuesta3

Estos pasos asegurarán que/etc/resolv.confestá configurado correctamente con elservidor de nombres 8.8.8.8todas y cada una de las veces que comienza la wsl

  1. Agregar entrada bashrc para el usuario inicial
echo "sudo su -" >> ~/.bashrc
  1. Creando una entrada sudoers para el usuario inicial
sudo su -
    
echo "username ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/username
  1. Agregar entrada bashrc para usuario root
echo "nameserver 8.8.8.8" > /etc/resolv.conf

Nota:Esto anulará el contenido del/etc/resolv.confarchivo. Puedes usarsedcomando para hacer cualquier modificación específica según sea necesario

información relacionada