WSL- 네트워크 범위
일단 WSL을 사용하려 MS 의 문서와 친해질 필요가 있다. https://learn.microsoft.com/ko-kr/virtualization/hyper-v-on-windows/about/
Windows 10의 Hyper-V 소개
Hyper-V, 가상화 및 관련 기술을 소개합니다.
learn.microsoft.com
블로그의 내용은 WSL1의 내용은 제외하고 WSL2를 기준으로 작성된 점을 미리 말씀드립니다. 솔직히 WSL1은 세상에 너무 일찍 태어난 칠삭둥이 내지는 애초에 태어나서는 안되는 존재로 나는 생각하고 싶다. MS는 WSL1을 만든 직후 WSL2를 만들때는 Hyper-V로 다시 태어났다. 위의 링크는 Hyper-V를 소개한 문서이다. windows 10과 11에서의 Hyper-V와 Windows server의 Hyper-V는 구조가 완전히 다르다. 왜 그런 결정을 MS에서 했을까는 어쩌면 당연해 보인다. Hyper-V를 windows에 답재하게 된 이유도 너무 뻔하다. MS의 돈벌이가 더 이상 OS판매나 Office시리즈를 파는것에 있지 않음을 위 문서를 읽는 다면 알 수 있다. Hyper-V에서 만들어진 VM에서 무언가 개발되고 있다면 더 이상은 azure 에 OS를 설치하고 필요 라이브러리나 프로그램을 설치하지 않고 그대로 올릴 수 있다. 단지 내보내기 기능하나로. 내가 MS의 수장이라도 바로 OK일 것이다. 이것은 소위 우리가 흔히 말하는 생태계 생성이다. 도커니 뭐니 그런 것도 필요가 없다. 이것은 분명 혁명이다. 문제는 MS는 아직 Open project 의 정신은 없다. 다만 완전히 폐쇄적인 애플보다 조금 나은 수준이다. 애플에게는 디스크 클라우드는 있지만 AWS같은 하이퍼바이즈 클라우드는 없다. MS는 아마존보다는 느렸지만 있다. 내가 azure 를 사용해본 느낌은 일단 비쌌다. 난 클라우드를 사용하면 상면을 임대하는 코로케이션 서비스와의 장단점을 솔직히 모르겠다. 외국에 서버를 두어야 하는 경우가 아니면 코로케이션 서비스가 훨씬 저렴하다. 그렇지만 이제 Hyper-V로 인한 개발의 단축은 가히 혁신이다. 단 Windows server의 기준에서다. windows 에게 차별을 준것은 가히 가혹하다. 그 중에 기본 네트워크가 NAT라는 것은 최악의 차별이다. 그렇다고 일반 개발자나 소호 사업자들이 Windows server를 구매할거라는 착각을 하고 있는 것은 아니겠지? 의심할 수 밖에 없다. 현재 버젼의 WSL은 VS code를 사용하는 나에게는 정말 혁명갔다. 그런데 만약에 web,was,aps를 개발하는 개발자도 그럴까? GPU서버를 만들때는 분명 좋았는데 네트워크가 NAT라는 이야기에 흥이 확 사라진다. WSL2의 네트워크가 NAT라는 것은 단점만 있는 것은 아니다. 일단 해킹에 안전하다. WSL의 우분투와 로컬 windows는 가상 IP로 통신을 하고 있다. 여러분 집의 인터넷 공유기를 생각하면 된다. 안에서 밖으로는 나가지만 밖에서 안으로 들어 오려면 불가능하다. 하려면 틔윈IP라는 기술을 사용하거나 포트포워딩을 해야한다. 포트 포워딩은 말 그대로 한 포트 정도는 열어 줄게다. 그런데 WSL은 그 보다도 훨씬 심하다. 방법이 없다. 일단 버젼2에서는 방법이 없다. 하려면 다른 하이퍼바이즈들처럼 GUI툴로 가상H/W를 만들고 NAT로 할지 브릿지모드로 할지 아니면 호스트모드로 할지를 결정할 수 있어야 한다. 하지만 지금은 WSL 우분투는 windows 와 모든 H/W를 같이 사용한다. 공유의 개념이 아닌 샴쌍둥이의 개념이다. 현재로는 방법이 정말없다. Shaun Park님의 블로그(http://shaun289.blogspot.com/2020/06/wsl2-ubuntu-2004.html?m=1) 내용을 참조하여 네트워크를 설정해 보았다. 일단 결론은 안된다. 다른 방법도 시도해보았다. 네트워크 아답트 옵션에서 실제 브릿지를 형성하고 그 브릿지에 wsl의 vmSwitch와 이더넷을 같이 묶었다. 두 아답터 다 인터넷을 사용할 수 없었다. 사용자 폴더에 .wslconfig파일을 생성하는 것은 일부 효과가 있었다. 여기서 netmode=bridged는 효과가 있었지만 wsl2.vmSwitch를 설정해야 한다는 오류가 발생한다. 일부분은 분명 yaml파일을 의미하고 효과가 있었다. 인터넷에 있는 상당부는 wondows server설정이며 그기서는 아답터 브릿지 생성후 아답터를 브릿지에 포함하는 것이 동작한다. 현재까지는 windows10,11에서 정확히 동작하는 모델은 없는것 같고 net명령로 eth0:1을 추가하여 ip를 부여하는 방법은 동작은 하지만 복잡하다. .wslconfig의 전체 기능 분석이 필요해보인다. ms 문서를 뒤지는 작을 진행해야 할듯 하다