WSL2 의 XDMCP 설정 - Ubuntu 20.04

개요

Ubuntu20.04 이후의 리눅스의 경우 XDMCP를 원활하게 사용하기 위해서는 Systemd를 통한 구동이 필요합니다. Systemd 서비스는 WSL2부터 사용이 가능한데요. 다음은 Windows 시스템에 WSL2를 설치 혹은 업그레이드하는 방법과 WSL2에서 XDMCP를 구성하고 구동하는 방법에 대한 안내이니다.
(빠른 안내를 위해서는 이 문서 마지막의 ‘단계별 빠른 안내’를 참고하세요)

WSL(1)과 WSL2의 차이

WSL1과 WSL2의 차이는 다음 글을 참고하시기 바랍니다.

https://learn.microsoft.com/ko-kr/windows/wsl/compare-versions

기능

WSL 1

WSL 2

기능

WSL 1

WSL 2

Windows와 Linux 통합

빠른 부팅 시간

기존 Virtual Machines보다 작은 리소스 공간

현재 버전의 VMware 및 VirtualBox에서 실행

관리 VM

전체 Linux 커널

전체 시스템 호출 호환성

OS 파일 시스템 간 성능

(출처: Microsoft 문서(https://learn.microsoft.com/ko-kr/windows/wsl/compare-versions ))

 

이 차이들 중에서 XDMCP 사용에 영향을 주는 부분은 WSL2가 리눅스 커널을 좀 더 독립적이고 안정적으로 사용하기 위해 변경한 부분 때문에 발생하는 네트워크 구조인데요.

WSL2를 구성하면 WSL2의 네트워크는 그 컨테이너인 윈도우10(이하 호스트)의 네트워크와 분리되어 윈도우10 내의 NAT 망에 들어가게 됩니다.

예를 들면,

 

WSL1

WSL2

 

WSL1

WSL2

Windows 10(호스트 머신)

192.168.11.146

192.168.11.146

 

↑O↓O

↑O↓O

WSL 리눅스 시스템

192.168.11.147

172.18.117.20

 

↑O↓O

↑X↓O

외부 윈도우

192.168.11.9

192.168.11.9

WSL2의 경우 호스트에서 WSL2로 XDMCP 접근이 가능하지만, 호스트 외부에서 WSL2로 XDMCP 접근을 할 수 없습니다. 이는 NAT 안에 놓인 XDMCP 서버에 접근을 하지 못하는 이유와 같습니다.

WSL2 설치 혹은 업그레이드

WSL1에서 하는 업그레이드나 WSL2의 바로하는 설치에 대해서는 다음 글을 참고하시기 바랍니다.

https://learn.microsoft.com/ko-kr/windows/wsl/install#upgrade-version-from-wsl-1-to-wsl-2

 Windows 10의 리눅스 서브시스템 사용하기(SSH 설정 및 접속)

https://learn.microsoft.com/ko-kr/windows/wsl/troubleshooting

XDMCP 데몬 설치 및 설정

다음 글을 참조하시기 바랍니다.

Windows 10의 리눅스용 Windows 하위 시스템 (WSL) 의 XDMCP 설정 - Ubuntu 18.04

Systemd 설치 및 구동

아래 과정은 Windows 10 사용자일 경우에 해당합니다. Windows 11 사용자라면 다음 글을 참고하세요.

https://devblogs.microsoft.com/commandline/systemd-support-is-now-available-in-wsl/

 

  1. 호스트에서 systemd를 설치하기 위한 설정은 다음 글을 참고하시기 바랍니다.
    https://gist.github.com/djfdyuruiry/6720faa3f9fc59bfdf6284ee1f41f950

  2. 구동
    호스트에서 WSL 구동 명령인 wsl 대신 다음 명령을 사용해야 합니다.

    C:\WINDOWS\system32>wsl genie -s

  3. XDMCP 서비스를 위한 systemd 명령

    test@win10-20h2-hdj-wsl:~$ sudo systemctl enable dbus; sudo systemctl start dbus test@win10-20h2-hdj-wsl:~$ sudo systemctl enable lightdm; sudo systemctl start lightdm

    ※ enable: 시스템 시작 시 서비스를 자동 실행하도록 등록, start: 서비스 즉시 실행

 

Xmanager XDMCP 접속 - WSL 컨테이너인 윈도우에서 하는 접속

  1. Xmanager 쿼리 접속
    필요한 설정을 마치고 lightdm 데몬을 구동하게 되면 Xmanager 창에 XDMCP 접속이 가능한 호스트 목록에 WSL 시스템이 보입니다.

     

  2. WSL에 접속하기 위해 이 아이콘을 더블 클릭 하거나 주소 창에 해당 WSL의 IP 주소를 입력합니다.

Xmanager XDMCP 접속 - WSL 컨테이너인 윈도우 외부에서 하는 접속

  1. WSL이 설치된 PC가 아닌 다른 PC에서 이 WSL 리눅스에 접속하기 위해서 호스트 OS의 방화벽 설정에서 UDP 177번을 허용해야 합니다.

     

  2. UDP 포트포워딩: 호스트에서하는 설정
    WSL2는 NAT를 구성하여 외부에서 이 WSL 리눅스에 접근할 수 없습니다. 호스트 OS인 윈도우에서 UDP 포워딩을 설정해야 합니다. 다음 글을 참조하시기 바랍니다.
    WSL2의 XDMCP 접속을 위한 UDP 포워딩 및 자동 실행 설정

  3. Xmanager 실행

    위 화면에서는 XDMCP 브로드캐스트에 응답한 호스트의 이름에 ‘-wsl’이라고 되어 있는 것으로 보아 wsl 리눅스 시스템을 가리키고 있지만 IP 주소는 그 시스템의 호스트 OS의 IP 주소임을 알 수 있습니다.

단계별 빠른 안내

  1. WSL2 설치 혹은 WSL1에서 업그레이드
    https://learn.microsoft.com/ko-kr/windows/wsl/install#upgrade-version-from-wsl-1-to-wsl-2

  2. XDMCP 데몬으로서 lightdm 설치 및 설정
    Windows 10의 리눅스용 Windows 하위 시스템 (WSL) 의 XDMCP 설정 - Ubuntu 18.04

    test@win10-20h2-hdj-wsl:~$ sudo apt-get update && sudo apt install lightdm

     

  3. 사용자 데스크톱 설치

  4. lightdm 데몬 구동

  5. Systemd 설치
    https://gist.github.com/djfdyuruiry/6720faa3f9fc59bfdf6284ee1f41f950

     

  6. Systemd 구동
    호스트에서 WSL 구동 명령인 wsl 대신 다음 명령을 사용해야 합니다.

    ※ wsl 프롬프트가 나올 때까지 시간이 많이 소요되고 ‘Timed out waiting for systemd to enter running state.’ 메시지가 나오는 경우: wsl의 서비스의 일부가 제대로 구동되지 않아 생기는 문제입니다. 이 문서의 덧글을 확인해 보시고 문제를 해결하시기 바랍니다.

  7. XDMCP 서비스를 위한 systemd 명령

     

  8. WSL 윈도우 외부에서 WSL 리눅스의 XDMCP 접속을 위한 UDP 포워딩

     

  9. WSL PC의 윈도우 방화벽 설정에서 다음 포트 허용
    UDP 포트 177번 : 원격에서 XDMCP 접속
    TCP 포트 22번 : 원격에서 SSH접속 또는 Secure XDMCP 접속

  10. Xmanager에서 접속