Debian 10.x XDMCP 설정

Debian 10.x 버전에서 Xmanager 6 이하 버전 또는 Xmanager 7 클래식을 사용하여 XDMCP 접속을 위한 설정법입니다.

Xmanager 7 기본 X 서버를 사용하기 위해서는 다음 문서를 참고하세요

Xmanager 7을 위한 XDMCP 설정


적용되는 버전

Debian 10.02

Debian 10.03

Debian 10.04

Debian 10.05

Debian 10.06

Debian 10.07

Debian 10.08

Debian 10.09


Debian 10.x는 XDMCP 데몬으로 기본으로 gdm(버전 3)을 사용합니다.

gdm3 데몬은 원격 접속을 위한 XDMCP에 맞지 않습니다. X11 프로토콜이 아닌 Wayland를 사용하려고 한다거나 로그인 후 화면 출력이 콘솔에 뿌려진다거나 하는 문제가 있습니다.

디스플레이 매니저로 gdm3 대신 lightdm을 추가 설치하고 데스크톱 사용자 환경으로 기본 Gnome 데스크톱이 아닌 Xfce를 설치하여 이 문제를 해결할 수 있습니다.

Xmanager 7의 경우는 사용자 데스크톱으로 Gnome 데스크톱도 가능하지만 Xmanger 7 Classic이나 Xmanager 6는 사용자 데스크톱 환경으로 Xfce 등을 사용하여야 합니다.


인터넷 접속 여부 등 실제 사용 환경과 다소 차이가 있을 수 있으며 다음 안내에 따라 변경한 시스템에서 생기는 문제에 대해서는 전적으로 사용자에게 있습니다.

다음은 모두 root의 권한(혹은 sudo 명령 실행)으로 진행합니다.


XDMCP 설정

  1. lightdm 설치

    $ sudo apt install lightdm
  2. 설치 시 기본 디스플레이를 어떤 것으로 사용할 것인지 묻는 화면에서 'lightdm'을 선택합니다.



  3. lightdm 환경 설정
    /etc/lightdm/lightdm.conf 파일을 수정하여(없으면 생성합니다) 다음 내용을 추가하거나 변경합니다.

    [XDMCPServer]
    enabled=true
  4. 방화벽 설정

    $ sudo systemctl stop ufw 또는 sudo systemctl stop firewalld
    • PC에서 UNIX/Linux 방향으로 UDP 177번 포트 개방
    • UNIX/Linux에서 PC 방향으로 TCP 6000~6010번 포트 개방


    (방화벽에 대한 자세한 사항은 해당 OS의 매뉴얼을 참조하시거나 Debian 공급사의 기술지원을 받으셔야 합니다. 문제의 원인 파악을 위해서 일시적으로 방화벽을 제거하시고자 할 경우 'iptables -F' 명령을 사용해 보십시오. 그리고 Debian의 경우 기본값으로는 iptables가 구동하고 있지 않습니다. iptables -L 명령으로 구동 여부를 확인해 보십시오.)


  5. XDMCP 서비스 데몬 교체 및 재구동
    (disable, enable은 OS 구동 시 자동 실행 여부를 정하는 systemctl의 부가적 명령입니다. stop, start 명령은 XDMCP 데몬의 상태를 즉각적으로 변경합니다)

    $ sudo systemctl disable gdm3
    $ sudo systemctl stop gdm3
    $ sudo systemctl enable lightdm
    $ sudo systemctl start lightdm
  6. 동일한 사용자로 하는 멀티 세션을 위한 설정
    기본 설정 상태로는 동일한 사용자로 여러 개의 XDMCP 세션을 만들 수 없습니다. 동일한 사용자로 로그인을 할 경우 데스크톱 화면이 제대로 안 나오거나 세션이 저절로 닫힙니다. 이는 Gnome 사용자 환경에 사용하는 DBUS 통신과 관련된 문제입니다. 세션마다 DBUS와 통신이 될 수 있도록 필요한 설정을 하거나 사용자 데스크톱으로 Gnome이 아닌 Xfce와 같은 다른 데스크톱 사용자 환경을 사용해 보시기 바랍니다.
    /etc/X11/Xsession.d/75dbus_dbus-launch 파일을 아래와 같이 STARTDBUS가 항상 yes를 유지하도록 합니다.
    (위 파일 이름에 있는 75는 패키지나 버전에 따라 달라질 수 있습니다)

    # $Id:$
    # In order to activate the session bus at X session launch
    # simply place use-session-dbus into your /etc/X11/Xsession.options file
    #
    
    STARTDBUS=
    DBUSLAUNCH=/usr/bin/dbus-launch
    
    if has_option use-session-dbus; then
      if [ -z "$DBUS_SESSION_BUS_ADDRESS" ] && [ -x "$DBUSLAUNCH" ]; then
        STARTDBUS=yes
      fi
    fi
    
    STARTDBUS=yes
    
    if [ -n "$STARTDBUS" ]; then
      # Note that anything that is D-Bus-activated between here and
      # 95dbus_update-activation-env will not have the complete environment
      # set up by Xsession.d, unless the Xsession.d snippet that sets the
      # environment variable also calls dbus-update-activation-environment.
      # See <https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=815503>
      eval $($DBUSLAUNCH --exit-with-session --sh-syntax)
    
    
  7. Xmanager 세션 생성
    Lightdm의 경우 XDMCP 브로드캐스트에 응답을 안하는 경우가 있어 Xmanager 버전에 따라서는 Xmanager 세션 리스트에 나타나지 않을 수 있습니다. Xmanager에서 새로 만들기를 통해 XDMCP 고정 세션을 만들거나 주소창에서 IP 주소나 호스트 이름을 직접 입력하여 접속해보십시오.


사용자 데스크톱 환경으로 Xfce 추가 설치

  1. 새로운 사용자 데스크톱 환경 설치.
    - Xfce 설치

    $ sudo apt-get update
    $ sudo apt-get install xfce4
  2. 새로운 데스크톱 환경 적용: xdmcp 데몬 재기동

    $ sudo systemctl restart lightdm
  3. Xmanager 접속 후 로그인 화면에서 xfce세션을 선택합니다. Xmanager 7의 경우 Gnome 데스크톱을 지원합니다만 다중 세션이 안되는 문제와 리소스 과다 사용 등의 문제가 있어 권하지 않습니다.


서비스 구동 및 정상 작동 여부 확인 방법

  1. lightdm 구동 및 서비스 여부 확인

    # ps -aef |grep sbin\/lightdm|grep -v grep
    root     24568     1  0 15:51 ?        00:00:00 /usr/sbin/lightdm
    # netstat -anep |grep \:177[^0-9]
    udp        0      0 0.0.0.0:177             0.0.0.0:*                           0          18166350   24929/lightdm       
    udp6       0      0 :::177                  :::*                                0          18166351   24929/lightdm => IPv6가 적용 중이지 않을 경우 안 나올 수 있습니다.
  2. 방화벽 확인
    방화벽이 작동하지 않고 있는 아래와 같은 결과가 나오거나 방화벽을 작동해야 한다면 Iptables 매뉴얼을 참고하시어 udp 177번이 허용 상태인 결과가 나오게 해야 합니다.

    root@uby:~# iptables -L -n
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination         
    
    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination         
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination다.
  3. Xfce 설치 및 적용 확인