WSL을 새로 설치하다가 git clone을 받았는데 실패하는 경우가 종종 있습니다. 이런 경우 원인이 DNS와 연관된 경우가 많은데 이런 경우에 어떻게 해결하는지 알아보도록 하겠습니다.
WSL GitHub clone, 네트워크 실패 시 nameserver 변경 방법
어떤 에러가 발생하는지
새롭게 설치하거나 네트워크에 문제가 발생하였을 때 git clone을 하면 문제가 발생할 수 있습니다.
Network is unreachable 나 Could not resolve host와
그럴 때 네트워크 문제인지 확인하는 방법이 ping입니다.
ping github.com
아래와 같은 정상적인 응답이 오지 않는다면 DNS 문제임을 의심해보아야 합니다.
왜 발생하는지
일반적으로 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로 확인하였을 때 나오는 값과 일치하는 것을 알 수 있습니다.
해결 방법
문제는 이렇게 자동으로 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 가 변경한 값으로 그대로 잘 남아 있는지 확인합니다.
4. nslookup google.com 명령어로 nameserver를 확인합니다.
결론
오늘은 WSL에서 Git clone과 같은 동작을 할 때 제대로 동작하지 않는 경우 해결법에 대해서 알아보았습니다. 네트워크가 문제가 되는 경우는 여러 가지 이유가 있는데 항상 원인이 무엇인지 찾기 어려울 때가 많습니다.
자주 발생하는 문제 중 DNS와 관련된 문제를 알아보았고 해결방법을 알아보았으니 즐겁고 쾌적한 개발을 하시길 바랍니다.
'개발 > 개발 환경' 카테고리의 다른 글
[Docker] 도커를 활용하여 Jenkins 설치 해보기 in WSL (0) | 2024.07.08 |
---|---|
[개발 환경] make, Makefile 기본 구조, 작성 방법 (0) | 2023.12.01 |
[개발 환경] WSL 문제 발생 시 추가로 설치하는 방법 (0) | 2023.08.31 |
[컴파일러] LLVM, Clang 설치 방법, 명령어 및 버전 변경 방법 (0) | 2023.08.28 |
[Linux] Ubuntu apt 명령어 종류, 예제 및 사용 방법 (0) | 2023.08.28 |