개발/개발 환경

[개발 환경] WSL GitHub clone, 네트워크 실패 시 nameserver 변경 방법

growing-dev 2023. 8. 31. 23:02
반응형

WSL을 새로 설치하다가 git clone을 받았는데 실패하는 경우가 종종 있습니다. 이런 경우 원인이 DNS와 연관된 경우가 많은데 이런 경우에 어떻게 해결하는지 알아보도록 하겠습니다.

 

 

WSL GitHub clone, 네트워크 실패 시 nameserver 변경 방법

 

wsl nameserver 변경

 

 

 어떤 에러가 발생하는지

 

새롭게 설치하거나 네트워크에 문제가 발생하였을 때 git clone을 하면 문제가 발생할 수 있습니다.

Network is unreachable 나 Could not resolve host와

그럴 때 네트워크 문제인지 확인하는 방법이 ping입니다.

ping github.com

아래와 같은 정상적인 응답이 오지 않는다면 DNS 문제임을 의심해보아야 합니다.

ping 정상

 

 왜 발생하는지

 

일반적으로 WSL을 사용하면 IP 주소를 Dynamic 하게 할당합니다. 따라서 WSL을 종료하고 다시 켤 때마다 해당 WSL의 주소는 변경됩니다.

또한 WSL에서는 DNS를 활용하기 위한 nameserver 변수를 자동으로 만듭니다. 이는 /etc/resolv.conf로 확인할 수 있습니다.

growing-dev@DESKTOP-BV8O4K4:~$ cat /etc/resolv.conf
# This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:
# [network]
# generateResolvConf = false
nameserver 172.30.112.1

 

172.30.112.1 이 할당된 주소이며 이는 윈도 터미널 상에서 ipconfig로 확인하였을 때 나오는 값과 일치하는 것을 알 수 있습니다.

WSL IPv4 주소

 

 

 해결 방법

 

문제는 이렇게 자동으로 IP가 생성되고 nameserver가 할당되는데, 원치 않게 제대로 할당되지 않을 수 있습니다.

따라서 이 문제를 해결하려면 강제로 DNS 주소를 할당해주어야 합니다.

아래 순서를 따라서 설정하면 됩니다.

 

1. /etc/wsl.conf 파일에 아래 내용을 추가하여 nameserver 자동 생성을 막습니다.

[network]
generateResolvConf = false

 

2. /etc/resolv.conf 파일에 새로운 nameserver를 할당해 줍니다. 아래 내용은 구글의 DNS를 사용하는 것입니다.

nameserver 8.8.8.8
nameserver 8.8.4.4

 

3. WSL을 종료 후 다시 접속하여 /etc/resolv.conf 가 변경한 값으로 그대로 잘 남아 있는지 확인합니다.

/etc/resolv.conf

 

4. nslookup google.com 명령어로 nameserver를 확인합니다.

nameserver 확인

 

 결론

 

오늘은 WSL에서 Git clone과 같은 동작을 할 때 제대로 동작하지 않는 경우 해결법에 대해서 알아보았습니다. 네트워크가 문제가 되는 경우는 여러 가지 이유가 있는데 항상 원인이 무엇인지 찾기 어려울 때가 많습니다.

자주 발생하는 문제 중 DNS와 관련된 문제를 알아보았고 해결방법을 알아보았으니 즐겁고 쾌적한 개발을 하시길 바랍니다.

반응형