
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.conf
diesen Inhalt hinzufügen:
[network]
generateResolvConf = true
Und ich muss meins ändern /etc/resolv.conf
in:
nameserver 8.8.8.8
Das funktioniert gut.
Wenn ich mein System jedoch neu starte, WSL herunterfahre oder etwas Ähnliches tue, /etc/resolv.conf
wird es durch den vorherigen Wert überschrieben.
Natürlich, wenn ich /etc/wsl.conf
Folgendes ändere und erneut starte:
[network]
generateResolvConf = false
Der oben erwähnte Fix ist wieder weg.
Wie mache ich meine Änderungen /etc/resolv.conf
in 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.conf
Datei mit dem Befehl unveränderlich zu machen chattr +i
.
Um WSL herunterzufahren, führen Sie es wsl --shutdown
in einer Windows-Eingabeaufforderung aus (dadurch werden alle WSL-Distributionen heruntergefahren).
Natürlich müssen Sie Ihre DNS-Server noch zur /etc/resolv.conf
Datei 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
- Hinzufügen eines Bashrc-Eintrags für den ersten Benutzer
echo "sudo su -" >> ~/.bashrc
- Erstellen eines Sudoers-Eintrags für den ersten Benutzer
sudo su -
echo "username ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/username
- 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