WSL2에서 Network Bridge 기능 사용

이전 블로그에서 정리했던 내용인데, 윈도우를 포맷한 후 새로 테스트 해본 결과 정리. 별다른 차이 없이 잘됨.


덧#1: 현재 원인은 잘 모르겠는데, 아래와 같이 브릿지로 설정을 해놓으면, 인터넷 업로드 속도 및 노션 등 클라우드 서비스의 속도가 미친듯이 느려지는 상황이 발생합니다. 구글링 해보니, 같은 증상을 호소하는 사람이 다수있네요. 버그인듯한데… 방법을 찾아봐야겠습니다.


WLS2의 서브 머신들의 네트워크는 내부 프라이빗망을 사용한다. 외부 대역과는 분리되어 있다는 의미로, 예를 들어 Ubuntu를 설치하고 ifconfig를 실행해보면,

$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.21.50.26  netmask 255.255.240.0  broadcast 172.21.63.255
        inet6 fe80::215:5dff:fec8:7eef  prefixlen 64  scopeid 0x20<link>
        ether 00:15:5d:c8:7e:ef  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 7  bytes 586 (586.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

와 같이 172.21.50.xx 대역의 아이피를 자동으로 할당받는다.

사용 목적에 따라 현재 사용하는 윈도우 머신의 네트워크를 브릿지하여 외부에서도 접속이 가능할 수 있게끔 할 필요가 있는데, 이를 사용하려면 WSL2의 Bridge 기능을 사용하면 된다.

먼저 윈도우 추가 기능 중 Hyper-V 기능을 활성화한다.

설치를 완료하고, 재부팅.

Hyper-V Manager를 실행한다.

메뉴 > Action > Virtual Switch Manager를 실행한다.

우측 Create virtual switch에서 External를 선택하고, Create Virtual Switch버튼을 누른다.

이름을 적당히 입력하고 (여기선 wsl2-external), Connection type에서는 External network에서 외부망과 연결할 Network 카드를 선택한다. 현재 테스트 환경은 노트북이라 여기에선 노트북의 WiFi 카드를 선택함.

네트워크 설정 과정에서 현재 연결 상태를 변경할 수 도 있다는 경고인데, 그냥 Yes를 눌러 진행한다.

이제 Hyper-V Manager를 종료하고, 사용자 홈 디렉토리 (C:\User\<user-name>\)에 .wslconfig 파일을 생성하고 다음과 같이 입력한다.

[WSL2]
networkingMode = bridged
vmSwitch = wsl2-external

networkingMode를 bridged로 설정하고, vmSwitch에는 전 과정에서 생성한 Virtual Switch 이름을 입력한다.

코맨드 창을 열고, wsl2를 완전히 종료한다.

> C:\Windows\System32\wsl.exe --shutdown

이제 wsl2의 서브 머신, 예를 들면 Ubuntu를 시작해서 ifconfig 명령어를 실행해보면,

$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.237  netmask 255.255.255.0  broadcast 192.168.1.255
        ether 5c:bb:f6:9e:ee:fa  txqueuelen 1000  (Ethernet)
        RX packets 17  bytes 2506 (2.5 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2  bytes 684 (684.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

와 같이 외부망의 IP를 할당받아 사용되는 것을 볼 수 있다.

외부에서 접속도 가능하고, 외부로 나가는 트래픽도 문제가 없음.


Comments

One response to “WSL2에서 Network Bridge 기능 사용”

  1. Nomad Avatar
    Nomad

    No
    [WSL2]
    networkingMode = bridged
    vmSwitch = wsl2-external

    YES
    {
    “networkingMode”: “bridged”,
    “vmSwitch”:”wsl2-external”
    }

Leave a Reply

Your email address will not be published. Required fields are marked *