WSL 2에서 /etc/resolv.conf 변경 사항을 영구적으로 적용

WSL 2에서 /etc/resolv.conf 변경 사항을 영구적으로 적용

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 --shutdownWindows 명령 프롬프트에서 실행하세요(이렇게 하면 모든 WSL 배포가 종료됩니다).

물론 DNS 서버를 파일에 추가해야 합니다 /etc/resolv.conf(예:).

nameserver 1.1.1.1
nameserver 1.0.0.1

답변3

이러한 단계는 다음을 보장합니다./etc/resolv.conf다음과 같이 올바르게 구성되었습니다.네임서버 8.8.8.8wsl이 시작될 때마다

  1. 초기 사용자를 위한 bashrc 항목 추가
echo "sudo su -" >> ~/.bashrc
  1. 초기 사용자를 위한 sudoers 항목 생성
sudo su -
    
echo "username ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/username
  1. 루트 사용자에 대한 bashrc 항목 추가
echo "nameserver 8.8.8.8" > /etc/resolv.conf

메모:이는/etc/resolv.conf파일. 당신이 사용할 수있는sed필요에 따라 특정 수정을 수행하는 명령

관련 정보