WSL 사용시 네트워크 관련 팁 - 2

알림
|
X

페이지 정보

작성자 no_profile platypus 202.♡.70.165
작성일 2024.08.14 19:09
분류 컴퓨터
1,049 조회
9 댓글
8 추천
글쓰기

본문

지난 번에 이어서...


UDP 포트를 사용하는 서버를 위해 구글링을 열심히 해 보았지만,

netsh interface portproxy에 있는 protocol은 TCP만 가능하다,

또는 protocol=udp를 위해서는 Windows Server가 필요하다...등의 쓸데없는 정보가 먼저 검색됩니다.

(나는 Windows 10/11을 쓰면서 WSL을 쓰는데 Windows Server가 무슨 소용인가...)


WSL2는 일단 Hyper-V 기반으로 돌기 때문에 Hyper-V 네트워크 관련 기능을 사용하면 된다고 합니다.


첫번째 방법은 Windows 10/11에서 쉽고 확실하게 동작하는 방법으로,

물리적으로 네트워크 장치 두 개를 쓰는 방법입니다.

(업무용) 랩탑이라면, 보통 WiFi와 Ethernet을 동시에 가지고 있으니,

Windows는 WiFi로 쓰고 WSL Linux에 Ethernet을 할당하는 방법이 있습니다.

데스크탑의 경우 만약 Ethernet 장치가 하나라면 USB-Ethernet 어댑터를 하나 꽂던지,

PCIe 슬롯이 남는 경우 Ethenet 카드를 하나 꽂으면 됩니다. 둘 다 얼마 안 합니다.


먼저 Hyper-V GUI Management Tools를 설치해 줍니다.

명령창에서 optionalfeatures 라고 쳐 주면 Windows Features창이 뜹니다.

(이 창은 WSL을 설치할 때 아마 이미 보셨을 창입니다.)


여기에서 Hyper-V 항목 및 하위 항목을 귀찮으니 걍 다 선택하고 OK를 누르면 설치가 진행되고

이제부터 시작 메뉴에서 Hyper-V Manager를 실행할 수 있습니다.

(명령창 좋아하시는 분은 virtmgmt.msc 를 입력하시면 됩니다.)


그럼 다음의 창이 뜹니다.


여기서 Virtual Switch Manager를 클릭하면 아래와 같은 창이 뜹니다.


Windows 10이라면 빨간 색 부분이 그냥 WSL이라고만 뜨고, Windows 11의 경우 빨간 부분이 없이 Default Switch만 보일 수 있습니다.

일단 창을 닫고 WSL을 한 번 실행 후 다시 열면 빨간 색 부분의 가상 네트워크 스위치가 뜹니다.


일단 Virtual Switch Type에 대해서 구글링을 하면,

아래와 같이 알기 쉬운 그림을 찾을 수 있습니다.


기본값은 Internal로 현재 Windows가 사용하고 있는 네트워크 어댑터(Management OS Virtual Adapter)를 통해서 인터넷이 사용됩니다.

  • External : 우리가 사용해야 하는 것으로 실제 물리적 네트워크 어댑터를 할당해주는 방법입니다.
  • Private : 인터넷 연결없이 해당 스위치 내에서만 네트워크를 사용합니다.


따라서, WSL용 스위치를 선택 후, 이를 External로 바꾸고 현재 Windows가 사용중이 아닌 위에서 추가로 마련한 WSL을 위한 네트워크 어댑터를 할당해 줍니다.

이때 Allow management operating system to share this network adapter를 체크해제하는 것을 추천합니다.

이렇게 설정이 완료되면 Windows에서 ipconfig /all 명령어로 해당 장치가 보이지 않게 됩니다.


이제 WSL 안에서 기본 네트워크 장치 eth0는 새로 추가한 어댑터에 바로 할당이 됩니다.

하지만 기존의 Internal Switch용 IP가 할당되어 있으므로, IP설정을 다시 해 주어야 합니다.

(예: Windows가 공유기에서 받은 IP가 192.168.1.11이고, 공유기 IP는 192.168.1.1, 추가한 어댑터도 공유기에 물려 있다고 가정)

공유기의 DHCP를 써도 되지만, 서버 운용을 위해서는 고정 IP가 여러모로 편합니다.

WSL에서 IP설정을 다시 해 줍니다. 192.168.1.250을 쓰도록 하겠습니다.


# Remove existing internal IP address given by WSL2
sudo ip addr flush dev eth0
# Assign new static IP
sudo ip addr add 192.168.1.250/24 dev eth0
# Add new default route via external router
sudo ip route add default via 192.168.1.1


이제 네트워크가 잘 되는지 WSL에서 ping 8.8.8.8 등으로 체크해줍니다.

잘 된다면 이제 portproxy 같은 것 없이 Windows와 WSL내의 Linux는 동일 네트워크 내에서 (공유기 아래 서브넷) 존재합니다.

따라서, Windows나 같은 네트워크 내 다른 장치에서 192.168.1.250은 WSL Linux를 바로 가르키게 되며,

WSL Linux에서도 192.168.1.11로 Windows로 바로 접근할 수 있습니다.

서로 SSH 접속을 기본 TCP Port 22로 가능합니다. (방화벽을 열어놓았다는 가정 하에)


공유기의 DDNS 기능으로 해당 주소를 Port Forwarding해 놓으시면 외부에서 WSL Linux로 바로 접속도 가능합니다.


UDP포트도 별도의 설정 없이 사용이 가능하죠.

예를 들면, 만약 별도의 DNS서버를 WSL내의 Linux에서 운용하면서 (예를들면 google.com를 naver.com의 IP인 223.130.192.248로 매핑)

nslookup google.com => 원래 구글 IP 반환
nslookup google.com 192.168.1.250 => 네이버 IP 반환

와 같이 테스트할 수 있습니다.


두 번째 방법(네트워크 어댑터가 하나밖에 없을 때)은 다다음 글에서 쓰겠습니다.

다음번 글에는 위에서 했던 짓들을 부팅때 마다 다시 안 해도 되는 방법에 대한 글을 써야겠네요. :)

  • 게시물이 없습니다.
댓글 9 / 1 페이지

humanitas님의 댓글

작성자 humanitas (78.♡.45.236)
작성일 08.14 20:45
강좌 감사합니다. 지난 강좌와 이번 강좌 스크랩합니다.

platypus님의 댓글의 댓글

대댓글 작성자 no_profile platypus (1.♡.31.250)
작성일 08.16 09:30
@humanitas님에게 답글 강좌는 아닙니다. (부끄...)
걍 나이먹어가며 자꾸 까먹는 것들을 노트에 적어뒀던 팁들을 써 본 것 뿐이에요. :)

ifree82님의 댓글

작성자 ifree82 (104.♡.71.29)
작성일 08.15 17:52
좋은 글 감사합니다.

와싸다님의 댓글

작성자 no_profile 와싸다 (110.♡.98.240)
작성일 08.16 09:12
유선랜에 랜 케이블도 공유기로 연결해야 하나요?

platypus님의 댓글의 댓글

대댓글 작성자 no_profile platypus (1.♡.31.250)
작성일 08.16 09:34
@와싸다님에게 답글 둘 다 같은 공유기에 연결하셔도 되고 다른 네트웍에 물려도 됩니다만, 다른 네트웍에 연결하면 그쪽 설정을 쓰셔야겠죠.
(그리고 만약 두 네트웍이 상호 접근이 불가능하다면 IP로는 Windows - WSL간 접근이 불가능하겠죠.)
저렇게 분리해 놓으면 분리된 유선랜은 WSL에서 fully 관리하시면 됩니다. Windows에서는 네트웍 설정에는 관여하지 않도록 숨겨버립니다.

와싸다님의 댓글의 댓글

대댓글 작성자 no_profile 와싸다 (110.♡.98.240)
작성일 08.16 09:45
@platypus님에게 답글 넵. 감사합니다 집에 굴러다니는 랜케이블 있나 봐야 겠네요 ㅎ 매번 포트포워딩 시켰다가 또 특정기능 때문에 netsh interface portproxy reset 하고 끝나면 다시 포워딩 스크립트 실행하는거 번거로웠는데요.

와싸다님의 댓글의 댓글

대댓글 작성자 no_profile 와싸다 (110.♡.98.240)
작성일 08.16 13:40
@와싸다님에게 답글 관리자권한으로 실행 안해서 에러 떴었네요 해결 했습니다! (질문 하나 더요 ㅜㅜ) 설정하고 나서 ping 쓰면 외부 인터넷으로 나가는거 같은데 git pull 했을때 fatal: unable to access가 뜹니다.

platypus님의 댓글의 댓글

대댓글 작성자 no_profile platypus (1.♡.31.250)
작성일 08.16 15:31
@와싸다님에게 답글 아마 DNS서버가 Windows client 가상 주소로 되어있을 겁니다.
cat /etc/resolv.conf 명령으로 확인해 보시고, 공유기 주소로 바꿔주시거나 아예 8.8.8.8같은 걸로 바꿔주세요.

와싸다님의 댓글의 댓글

대댓글 작성자 no_profile 와싸다 (110.♡.98.240)
작성일 08.17 08:24
@platypus님에게 답글 넵 감사합니다!
글쓰기
전체 검색