환경 및 요구 사항 :
- 회사 :
WiFi(인터넷), Ethernet(내부망) , Ethernet 은 USB HUB+GiGabit Switch = 가상 스위치 (WSL_W)
- 집 :
WiFi(내부망), Ethernet(외부망) , Ethernet 은 USB HUB+GiGabit Switch = 가상 스위치(WSL)
- 문제 점 :
mirror 방식으로 사용하면 문제 발생 (네트웍 카드가 너무 많아서 문제가 발생 함)
bridge 로 하면 문제는 없으나 사용자의 홈디렉토리의 .wslconfig 의 vmSwitch 값을 자꾸 변경해 줘야 합니다.
[wsl2]
memory=8GB
processors=4
swap=1GB
localhostforwarding=true
networkingMode=bridged
vmSwitch=WSL_W
#vmSwitch=WSL
위의 불편을 해소하기 위해 ChatGPT의 도움을 빌림. Power Shell 스크립트를 생성(첨부파일 참조)
위의 파일이 정상 동작하기 위해서는 "Hyper-V 관리자" 의 가상 스위치 관리자에서 아래의 그림과 같이 각 각 WSL, WSL_W 의 가상 스위치를 만듭니다.

첨부 파일을 "C:\Scripts" 디렉토리에 저장 합니다. (원하는 디렉토리에 저장해도 상관 없음)
작업 스케줄러를 열고 "WSL vmSwitch Auto" 로 작업을 생성합니다.

트리거 설정은 "로그온 시" 와 이벤트 상태 두 개를 추가합니다.

이벤트 상태의 경우 사용자 지정 필터로 설정하고 XML 을 입력 하면 됩니다.

<QueryList>
<Query Id="0" Path="Microsoft-Windows-NetworkProfile/Operational">
<Select Path="Microsoft-Windows-NetworkProfile/Operational">
*[System[Provider[@Name='Microsoft-Windows-NetworkProfile'] and (EventID=10000 or EventID=10001)]]
</Select>
</Query>
</QueryList>
동작 속성은 아래와 같이 입력합니다.
프로그램/스크립트 = powershell.exe
인수 추가 옵션 = -NoProfile -ExecutionPolicy Bypass -File "C:\Script\wsl-set-vmswitch.ps1"
시작위치 [선택사항] = C:\Script

위와 같이 설정 한 후 WSL 을 재시작 하면 됩니다.
위 스크립트가 정상 동작할 경우 사용자의 네트웍 스위치의 상태가 변경 될 때 마다 .wslconfig 의 내용이 변경 되고 또한 log 도 같은 디렉토리에 생성될 것입니다.
log 는 최초 "wsl-vmswitch.log" 란 이름으로 더미 텍스트 파일을 만들어 주면 됩니다.
|