윈도우 하위 리눅스(wsl) 환경에서 hosts 파일을 변경하여 로컬 서버를 동작 시키려고 합니다. 이 경우 windows 어플리케이션 환경에서는 잘 동작하지만 wsl을 사용하는 경우 hosts에 설정한 것과 달리 동작하지 않을 수 있습니다. 왜 안되는지 그 원인과 해결방법을 알아봅니다.


! wsl에서 hosts 문제 원인과 방법은?
먼저 원인은 윈도우 환경에서 설정된 hosts 설정이 wsl 환경에서는 동일하게 동작하지 않기 때문입니다... 즉 wsl에서는 윈도우의 hosts 파일이 동작하지 않기 때문에 wsl 사용 목적의 hosts 설정이 별도로 필요합니다.


@ 그렇다면 해결 방법은?
다행인 점은 윈도우에 설정된 hosts 문법과 동일하게 사용할 수 있어 기존 설정된 hosts 파일을 그대로 사용하는 것이 가능합니다. 다만 wsl의 경우 아래 경로에 새로운 hosts 파일을 생성하거나 아니면 기존 hosts를 복사할 필요가 있습니다.

 /etc/hosts <-- 여기에 hosts를 설정할 것
 

가장 간단한 방법은 기존 설정이 윈도우즈 환경에 존재하는 경우라면 간단하게 복사하여 붙여넣기로 hosts 설정이 가능합니다. 아래와 같이 hosts 복사를 위해서 cp 명령어를 사용하여 실행합니다.
> sudo cp /mnt/c/Windows/System32/drivers/etc/hosts /etc/hosts

위 명령어를 수행하면 windows의 hosts 파일이 /etc/hosts로 복사됩니다. 이제 wsl에서도 hosts가 정상적으로 동작하게 되었습니다.


웹개발 환경을 구축할 경우 로컬 PC에 wsl을 사용하는 경우가 많습니다. web api 등을 호출할 때 특히 hosts 파일 변경을 많이 사용하는데 위 방법을 사용하면 윈도우와 wsl 모두 hosts 파일 사용이 가능하니 알아두시면 좋겠습니다.