WSL2의 XDMCP 접속을 위한 UDP 포워딩 및 자동 실행 설정

WSL2는 NAT를 구성하여 외부에서 이 WSL 리눅스의 xdmcp에 접근할 수 없습니다. 호스트 OS인 윈도우에서 UDP 포워딩을 설정해야 합니다.

  1. 설정 도구
    sudppipe라는 프로그램을 사용하겠습니다.
    http://aluigi.altervista.org/mytoolz/sudppipe.zip

  2. 명령

    sduppipe.exe wsl2_IP_주소 177 177

     

  3. wsl2 리눅스의 IP 주소는 호스트 OS를 재부팅할 때 등 WSL 리눅스기동할 때마다 바뀝니다. 원활한 서비스를 위해 wsl이 재기동될 때마다 udp 포트포워딩을 다시 해야 할 필요가 있습니다.

    C:\Users\test\Desktop\sudppipe>for /F "usebackq delims=" %A in (`wsl hostname -I`) do sudppipe.exe %A-wsl 177 177

     

  4. PC 재부팅 시 자동 실행

    1. wslInit.bat

      @echo off rem Two empty lines are needed after the set command set LF=^ rem Two empty lines are needed above set OUT_STR= for /F "usebackq delims=" %%a in (`tasklist /fi "imagename eq sudppipe.exe" ^| find "PID" ^> nul ^&^& taskkill /IM "sudppipe.exe" /F`) do set OUT_STR=%%a For /f "tokens=1-3 delims=- " %%a in ('date /t') do (set mydate=%%a-%%b-%%c) For /f "tokens=1-2 delims= " %%a in ('time /t') do (set mytime=%%a %%b) echo %mydate% %mytime% > %TEMP%\WSL.log set OUT_STR1= for /F "usebackq delims=" %%a in (`wsl genie -i`) do set OUT_STR1=%%a echo WSL initialization >> %TEMP%\WSL.log if NOT "%OUT_STR%"=="" echo %OUT_STR% >> %TEMP%\WSL.log echo. >> %TEMP%\WSL.log if "%OUT_STR1%"=="" ( echo WSL starts with sytemd^%LF%%LF%The systemd may already be running >>%TEMP%\WSL.log ) else ( echo WSL starts with systemd^%LF%%LF%%OUT_STR1% >>%TEMP%\WSL.log ) echo. >> %TEMP%\WSL.log set wsl2host= for /F "usebackq delims=" %%A in (`hostname`) do set wsl2host=%%A echo UDP portforwarding for XDMCP starts >>%TEMP%\WSL.log c:\users\test\desktop\sudppipe\sudppipe.exe %wsl2host%-wsl 177 177 2>>%TEMP%\WSL.log 1>%TEMP%\WSL-udppipe.log
    2. 시작 프로그램 폴더에 wslInit.vbs 생성

      ※ 시작 프로그램 폴더는 C:\Users\user\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
      ※ 윈도우 시작 시 프로그램을 자동으로 시작하게 하시 위해서 위 wslInit.vbs 스크립트를 작업 스케줄러에 추가할 수 있습니다. 작업 만들 때 트리거를 ‘로그온할 때’로 선택하면 로그인 후 1회만 실행됩니다.

  5. 확인

  6. 참고

    • wsl2 종료

       ※ wsl을 shutdown 등을 통해서 종료한 후 다시 시작할 때, wsl 리눅스의 IP 주소가 바뀌므로 XDMCP를 위한 UDP 포트에 대한 포워딩을 새로 해야 합니다. 위 4.의 wslInit.bat 명령을 다시 실행해야 합니다.

    • systemctl 등의 명령을 사용 조건
      호스트에서 wsl 접근 시:


      wsl내에서:

※ genie 실행 시 상당한 시간이 소요되고 결국 timeout 메시지가 나오는 경우: Re: WSL2 의 XDMCP 설정 - Ubuntu 20.04 | Comment 참조