
WSL 2에서 웹 사이트에 연결하려고 하면 다음과 같은 문제가 발생합니다.
$ ping www.google.com
ping: www.google.com: Temporary failure in name resolution
/etc/wsl.conf
이제 이 문제를 해결하려면 다음 내용을 추가해야 했습니다 .
[network]
generateResolvConf = true
그리고 다음과 같이 변경해야 합니다 /etc/resolv.conf
.
nameserver 8.8.8.8
이것은 잘 작동합니다.
그러나 시스템을 다시 시작하거나 wsl을 종료하거나 유사한 작업을 수행하면 /etc/resolv.conf
이전 값으로 덮어쓰여집니다.
물론, /etc/wsl.conf
다음과 같이 변경하고 다시 시작하면:
[network]
generateResolvConf = false
위에서 언급한 수정 사항이 다시 사라졌습니다.
/etc/resolv.conf
그러면 WSL 2에서 변경 사항을 영구적으로 적용하려면 어떻게 해야 합니까 ?
답변1
이 해결책을 찾았습니다여기
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
답변2
댓글을 달려고 했는데snuczek의 답변하지만 평판이 부족해요.
로부터연결된 솔루션그들의 답변에 다음을 추가했습니다.
[network]
generateResolvConf=false
wsl이 파일을 자동으로 생성하는 것을 /etc/wsl.conf
중지하지만 한 번 종료된 후에만 가능합니다. 완료되면 구성이 존중되며 명령 /etc/resolv.conf
을 사용하여 파일을 변경할 수 없게 만들 필요가 없습니다 chattr +i
.
wsl을 종료하려면 wsl --shutdown
Windows 명령 프롬프트에서 실행하세요(이렇게 하면 모든 WSL 배포가 종료됩니다).
물론 DNS 서버를 파일에 추가해야 합니다 /etc/resolv.conf
(예:).
nameserver 1.1.1.1
nameserver 1.0.0.1
답변3
이러한 단계는 다음을 보장합니다./etc/resolv.conf다음과 같이 올바르게 구성되었습니다.네임서버 8.8.8.8wsl이 시작될 때마다
- 초기 사용자를 위한 bashrc 항목 추가
echo "sudo su -" >> ~/.bashrc
- 초기 사용자를 위한 sudoers 항목 생성
sudo su -
echo "username ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/username
- 루트 사용자에 대한 bashrc 항목 추가
echo "nameserver 8.8.8.8" > /etc/resolv.conf
메모:이는/etc/resolv.conf파일. 당신이 사용할 수있는sed필요에 따라 특정 수정을 수행하는 명령