Machen Sie /etc/resolv.conf-Änderungen in WSL 2 dauerhaft

Machen Sie /etc/resolv.conf-Änderungen in WSL 2 dauerhaft

Wenn ich unter WSL 2 versuche, eine Verbindung zu einer Website herzustellen, tritt ein Problem auf:

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

Um dies zu beheben, musste ich /etc/wsl.confdiesen Inhalt hinzufügen:

[network]
generateResolvConf = true

Und ich muss meins ändern /etc/resolv.confin:

nameserver 8.8.8.8

Das funktioniert gut.

Wenn ich mein System jedoch neu starte, WSL herunterfahre oder etwas Ähnliches tue, /etc/resolv.confwird es durch den vorherigen Wert überschrieben.

Natürlich, wenn ich /etc/wsl.confFolgendes ändere und erneut starte:

[network]
generateResolvConf = false

Der oben erwähnte Fix ist wieder weg.

Wie mache ich meine Änderungen /etc/resolv.confin WSL 2 dauerhaft?

Antwort1

Ich habe diese Lösung gefundenHier

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

Antwort2

Ich habe versucht, zu kommentierensnuczeks Antwortaber nicht genug Ansehen haben.

Von demVerknüpfte Lösungin ihrer Antwort und fügten hinzu:

[network]
generateResolvConf=false

verhindert /etc/wsl.conf, dass WSL die Datei automatisch generiert, aber nur, wenn es einmal heruntergefahren wurde. Sobald dies erledigt ist, wird die Konfiguration berücksichtigt und es ist nicht erforderlich, die /etc/resolv.confDatei mit dem Befehl unveränderlich zu machen chattr +i.

Um WSL herunterzufahren, führen Sie es wsl --shutdownin einer Windows-Eingabeaufforderung aus (dadurch werden alle WSL-Distributionen heruntergefahren).

Natürlich müssen Sie Ihre DNS-Server noch zur /etc/resolv.confDatei hinzufügen (zum Beispiel):

nameserver 1.1.1.1
nameserver 1.0.0.1

Antwort3

Mit diesen Schritten wird sichergestellt, dass/etc/resolv.confist richtig konfiguriert mit demNameserver 8.8.8.8jedes Mal, wenn die WSL startet

  1. Hinzufügen eines Bashrc-Eintrags für den ersten Benutzer
echo "sudo su -" >> ~/.bashrc
  1. Erstellen eines Sudoers-Eintrags für den ersten Benutzer
sudo su -
    
echo "username ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/username
  1. Hinzufügen eines Bashrc-Eintrags für den Root-Benutzer
echo "nameserver 8.8.8.8" > /etc/resolv.conf

Notiz:Dadurch wird der Inhalt der/etc/resolv.confDatei. Sie könnensedBefehl zum Durchführen spezifischer Änderungen nach Bedarf

verwandte Informationen