[WSL2] network is unreachable 인터넷 안됨 해결하기 (sudo apt-get, wget 등등 안될때)


이미지 출처 - https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux

느려터진 VMWare 를 사용하다가 이번에 처음으로 WSL2 + VSCode SSH 원격 실행을 통한 UNIX 시스템 프로그래밍 실습 환경을 도입했습니다. WSL2 설치 하는건 그렇게 어렵지 않았는데 설치하고 나니깐 인터넷이 안되는 문제가 발생합니다.

 

sudo apt-get install 명령어는 고사하고 wget 명령어도 당연히 먹지 않습니다. 인터넷에 관련된 모든 명령어가 먹지 않더라구요? 처음엔 상당히 당황했는데 열심히 구글링한 결과 역시 어떤 선지자님이 솔루션을 제공하고 있었습니다.

 

/etc/resolv.conf

간단하게 위 파일에 들어가서 WSL이 자동으로 설정하고 있는 DNS 서버 주소를 구글(8.8.8.8)이나 클라우드 플레어(1.1.1.1) 등의 것으로 바꿔주면 끝나는 것이였습니다.

 

기존에 WSL이 자동으로 생성하고 있는 DNS 서버의 경우 자신의 IP로 설정이 되는데 외부 DNS 서버로 접속해서 IP를 찾아야 할 것을 본인 컴퓨터로 메아리 치듯이 찾는 어이 없는 상황이 발생하고 있는 것 이였습니다 ㅡㅡ;;

 

이 방법으로 위 파일의 DNS 서버를 수정해준 결과 당연히 인터넷은 돌아왔습니다만 WSL를 재시작하고 나니 또 다시 원래대로 파일이 재설정 되어 버리는 문제가 발생했습니다.

 

깃허브 등지를 돌아다닌 끝에 해결 명령어를 정리해 봅니다.

 

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

다음 명령어를 차례대로 입력해주시면 됩니다. 이 명령어를 전부 실행하게 되면 기존에 /etc/resolv.conf 을 제거한 후 /etc/resolv.conf 와 /etc/wsl.conf 에 파일 내용 쓰기를 진행합니다.

 

/etc/resolv.conf 에 기록되는 내용의 경우 nameserver 8.8.8.8 로 기록하는데 기본 구글 DNS 서버로 등록합니다. 만약에 구글 DNS 대신에 다른 DNS 서버를 사용하시면 저 부분을 바꿔주시구요.

 또 마지막에 chatter 명령을 통해 /etc/resolv.conf 에 +i 옵션을 주는데 불변 속성을 주어서 소유자가 root 일지라도 파일의 변경이나 삭제가 불가능하게 합니다.

 

sudo chattr -i /etc/resolv.conf #불변성 취소

만약에 나중에 /etc/resolv.conf 를 수정하거나 삭제하고 싶으시다면 위 명령어를 통해서 불변성 옵션을 -i 로 빼주시면 됩니다.

 

정상적으로 설정이 완료되었다면 /etc/resolv.conf 의 내용은 이렇게 작성되며 WSL 을 재시작해도 그대로 유지되는걸 확인할 수 있습니다. 

 

당연하지만 인터넷이 잘 됩니다. 작동하지 않던 wget이나 apt-get 명령어가 매우 잘 작동합니다!

사실 왜 WSL이 DNS 서버 주소를 이렇게 이상하게 자동 생성하는진 잘 모르겠습니다. 인터넷엔 이런 문제를 잘 나오지 않는 것으로 보아 뭔가 제가 설치를 잘못했을수도..?

 

그나저나 Windows Terminal 이거 진짜 이쁘네요

 

현재 이 VSCode 창은 윈도우 안에서 돌아가고 있고, Remote - SSH 확장을 통해 WSL 시스템과 연결되어 있습니다.

코드 실행은 실제로 SSH를 통해 리눅스 환경에서 실행되므로 UNIX의 시스템 콜을 사용할 수 있습니다 오오미.

속도도 아주 빠르고 VMWare 같은걸 따로 안키고 VSCode 안에서 모든걸 할 수 있다는게 정말 마음에 드네요 ㅎㅎ.

나중에 한번 WSL2 설치 가이드나 적어봐야겠습니다.

COMMENT WRITE