개발팁 & 유틸

Xmanager XDMCP 연결에 실패했습니다 (XDMCP Timeout) 해결하기

넷사랑컴퓨터Xmanager를 사용하여 XDMCP 연결을 시도하려 할 때 다음과 같은 에러 창이 뜨며 진행되지 않는 경우가 있습니다.

“XDMCP 연결에 실패했습니다. 다시 시도하시겠습니까?”

일정 시간동안 응답이 없다가 결국 XDMCP 연결에 실패하게 되는데 그 이유와 해결 방법을 살펴보겠습니다.

XDMCP 연결이 가능하도록 설정하기

먼저 XDMCP가 연결되기 전에 XDMCP를 사용하기 위한 설정이 모두 진행되었는지 확인해주셔야 합니다.

넷사랑컴퓨터 홈페이지XDMCP 사용 설정과 관련된 도움말이 나와있습니다.

현재 사용 중인 서버의 운영체제와 일치한 문서로 설정을 모두 마쳐주셔야 합니다. 위 가이드의 설정대로 하면 특별한 경우가 아니라면 문제 없이 XDMCP 세션에 연결될 것입니다.

그래도 연결이 되지 않는다면, 먼저 에러 로그가 어떻게 나왔는지 확인해주어야 합니다.
상단 메뉴에서 ‘파일 – 로그 – 로그 파일 열기’ 를 선택하여 로그 파일을 열어주세요.

또는 아래 경로로 이동하여 로그 파일을 얻어낼 수 있습니다.

  • C:\Users\[사용자 이름]\Documents\NetSarang Computer\6\Xmanager\Log\ (버전 6 기준)

여기서 X0.log 파일을 열어주시면 됩니다. (로그 파일이 많아지면 숫자가 올라갈 수 있습니다.)

위 두가지 방법 중 하나로 로그 파일을 열었다면, 아래와 같이 보여질 것입니다. (호스트 정보 등의 일부 내용은 가렸습니다.)

Xmanager 6000
Copyright (c) 1997 NetSarang Computer, Inc.
All rights reserved.

UTC Date: Thu Aug 02 07:11:58 2018
Local Date: Thu Aug 02 16:11:58 2018

Compiler version: 170060610
X Server Directory: "C:\Program Files (x86)\NetSarang\Xmanager 6\"
LANG ID: 1042
Session File: [Session File Path]
Connection Method: 1
Xdmcp UDP Port: 177
Xdmcp Host: '[IP Address]'

Server Generation 1
CreateConfig returns a return value: 3
Server profile: %system%\Default Profile.xcf
Desktop composition is enabled.
Default Display Number: 0
Local Time: Thu Aug 02 16:11:58 2018

============ Global Memory Status ==========
  Memory Load               :      87%
  Total Physical Memory     :   24448 Mbytes
  Available Physical Memory :    2946 Mbytes
  Total Page File           :   31122 Mbytes
  Available Page File       :    4758 Mbytes
  Total Virtual             :    4095 Mbytes
  Available Virtual         :    3991 Mbytes
=============================================

<Hardware information>
  Processor architecture: 0
  Number of processors: 4
  Page size: 4096
  Processor type: 586
  Minimum application address: 10000
  Maximum application address: fffeffff
  Active processor mask: 15
  Allocation granularity: 65536
  Processor level: 6
  Processor revision: 0x3c03

<OS Version Information>
  Platform id   : 2
  Major Version : 6
  Minor Version : 2
  Build Number  : 9200
  Description   : ""
  Country Code  : 82
  Country String: 대한민국
  ANSI Code Page: 949
  Language ID   : 18

WinSock Version 2.2 is selected.
Highest Version 2.2
Description: WinSock 2.0
System Status: Running
Max Sockets: 0
Max UDP Datagram: 0
Local Hostname: '[Hostname]'
RGB database: C:\Program Files (x86)\NetSarang\Xmanager 6\rgb\rgb.txt
Local Address: [My IP Address]
Local Address: [My IP Address]
Local Address: [My IP Address]
Local Address: ::1
Local Address: 127.0.0.1
Listening port: 6000
XDMCP Display Number: 0
Xdmcp: sent a QUERY message.
Window Mode:               0
Primary Screen Resolution:         1920 x 1080
Size of Palette:           0
Number of Reserved Colors: 0
Resolution of Color:       24
Depth of Screen:           32
Maximum Cursor Width:      32
Maximum Cursor Height:     32
Frame Width:               8
Frame Height:              8
Border Width:              1
Border Height:             1
Maximum Client Area Width: 1920
Maximum Client Area Height:1027
Icon Width:                32
Icon Height:               32
Small Icon Width:          16
Small Icon Height:         16
Caption Height:            23
Shade Blend Pixel Alpha:   1
DBCS Enabled:              1
GDI batch limit:           20

Mouse buttons: 8
Waveform Output Devices: 0
Mouse wheel present: 1

Monitors: 2
Selected Monitor: V
Same display format: 1
Virtual screen x 0, y 0, w 3520 h 1319
Root Window x 0, y 0, w 1024, h 768
Exact StoreColor: 0
Reverse RGB Order: 0

Screen 0: 1024 x 768, depth 24, dpi 96 x 96
Extension added: SHAPE, proc 128, event 64, error 0
Extension added: Extended-Visual-Information, proc 129, event 0, error 0
Extension added: XInputExtension, proc 130, event 65, error 128
Extension added: XTEST, proc 131, event 0, error 0
Extension added: BIG-REQUESTS, proc 132, event 0, error 0
Extension added: MIT-SUNDRY-NONSTANDARD, proc 133, event 0, error 0
Extension added: DEC-XTRAP, proc 134, event 80, error 133
Extension added: SYNC, proc 135, event 81, error 142
Extension added: XKEYBOARD, proc 136, event 83, error 144
Extension added: XC-MISC, proc 137, event 0, error 0
Extension added: RECORD, proc 138, event 0, error 145
Extension added: DOUBLE-BUFFER, proc 139, event 0, error 146
Extension added: XC-APPGROUP, proc 140, event 0, error 147
Extension added: SECURITY, proc 141, event 84, error 148
Extension added: TOG-CUP, proc 142, event 0, error 0
Extension added: DPMS, proc 143, event 0, error 0
Extension added: XFree86-Bigfont, proc 144, event 0, error 0
Extension added: GLX, proc 145, event 85, error 150
Extension added: XFIXES, proc 146, event 102, error 162
Extension added: RENDER, proc 147, event 0, error 163
Extension added: RANDR, proc 148, event 104, error 0
Extension added: X-Resource, proc 149, event 0, error 0
Extension added: DAMAGE, proc 150, event 105, error 168
Keyboard: Type = 8, Subtype = 0, Function keys = 12
Keyboad Layout: Korean (00000412)
Found a matching keyboard layout: Korean
Model: pc105, Layout: kr, Variant: none, Options: none
Keyboard layout to be used:
Rules: xorg, Model: pc105, Layout: kr, Variant: none, Options: none
Running Xsound...
Lock modifier mask: 0x2
Lock modifier mask: 0x10

Waiting for client connections ...

xmgrRRSetConfig: 1092 x 782
Xdmcp: Timed out, state 3. Retransmissions: 0
Xdmcp: sent a QUERY message.
Xdmcp: Timed out, state 3. Retransmissions: 1
Xdmcp: sent a QUERY message.
Xdmcp: Timed out, state 3. Retransmissions: 2
Xdmcp: sent a QUERY message.
Xdmcp: Timed out, state 3. Retransmissions: 3
MessageBox: Xmanager: XDMCP 연결, XDMCP 연결에 실패했습니다. 다시 시도하시겠습니까?
XDM go to sleep: too many retransmissions
Lock modifier mask: 0x2
Lock modifier mask: 0x10
Low level keyboard proc already hooked.

내용이 꽤 길지만 앞부분은 대부분 시스템 정보이기 때문에 끝부분에 대부분의 오류 메세지가 적혀있을 것입니다.

서버 내 어떤 문제냐에 따라 에러 메세지가 다르게 보여질 수 있습니다. 여기서는 그 중 Xdmcp Timeout 문제에 대해서만 해결 방법을 작성하였습니다.

Xdmcp: Timed out, state 3. Retransmissions: 0 에러

Waiting for client connections ...

xmgrRRSetConfig: 1092 x 782
Xdmcp: Timed out, state 3. Retransmissions: 0
Xdmcp: sent a QUERY message.
Xdmcp: Timed out, state 3. Retransmissions: 1
Xdmcp: sent a QUERY message.
Xdmcp: Timed out, state 3. Retransmissions: 2
Xdmcp: sent a QUERY message.
Xdmcp: Timed out, state 3. Retransmissions: 3
MessageBox: Xmanager: XDMCP 연결, XDMCP 연결에 실패했습니다. 다시 시도하시겠습니까?
XDM go to sleep: too many retransmissions

로그 메세지 하단에 “Xdmcp: Timed out, state 3, Retransmissions: 0” 이 나타난다면, 연결을 시도하다가 지속적인 타임아웃이 발생한 것입니다. Xmanager에서 3번정도 시도한 후 연결에 실패하여 에러 메세지를 띄운 것을 확인할 수 있습니다.

이 문제는 연결하려는 서버에서 대부분 방화벽 설정이 제대로 구성되지 않았을 경우에 발생합니다. 방화벽 소프트웨어는 서버마다 서로 다른 방법을 사용하기 때문에 현재 자신이 어떤 방화벽 체계를 사용하는지 확인해야 할 필요가 있습니다. 대표적으로 iptables, ufw, firewalld와 같은 방화벽이 기본으로 사용되고 있습니다.

먼저 방화벽이 실행 중이고 XDMCP 프로토콜이 허용되지 않았는지 확인해보겠습니다. 각각의 서비스가 모두 실행 중일 수 있으므로 아래 명령어를 통해 어떤 서비스가 사용 중인지 파악해 볼 필요가 있습니다.

현재 구동 중인 방화벽이 iptables라고 가정하고 진행해보겠습니다. 방화벽 상태 확인 및 규칙을 보는 방법은 아래 포스트를 참고해주세요.

리눅스 방화벽 상태 확인 명령어로 실행 중인지 파악하기

# iptables -L | grep xdmcp

위 명령어를 실행했을 때, 아래와 같이 값이 나온다면 현재 xdmcp 포트가 열려있다는 의미입니다.

# iptables -L | grep xdmcp
ACCEPT     udp  --  anywhere             anywhere             udp dpt:xdmcp

# iptables -L | grep x11
ACCEPT     tcp  --  anywhere             anywhere             tcp dpts:x11:x11-ssh-offset

위 두 명령어로 xdmcpx11 프로토콜이 확인되지 않았다면 (결과가 표시되지 않으면) 해당 프로토콜을 사용하는 포트를 열어주어야 합니다.

아래 표를 참고하여 xdmcpx11 프로토콜의 포트를 열어주세요.

포트 이름포트 번호적용범위 - iptables적용범위 - firewalld적용범위 - ufw
xdmcp177 (UDP)177177177
x116000 ~ 6010 (TCP)6000:60106000-6010/tcp6000:6010/tcp

이후 규칙이 제대로 적용되었다면 Xmanager에서 XDMCP 접속을 다시 시도하여 해결할 수 있습니다.

다음으로 디스플레이 매니저(Display Manager)의 정상 구동 여부를 확인해보아야 합니다. 리눅스 운영체제 및 버전 마다 사용 가능한 디스플레이 매니저나 설정 방식이 다르기 때문에 자세한 사항은 관련 도움말을 참조해주셔야 합니다. 아래 내용은 Ubuntu 16.04에서 진행한 내용입니다.

Ubuntulightdm을 사용합니다. service lightdm status (또는 systemctl status lightdm) 명령어로 lightdm 서비스가 구동 중인지 확인해봐야 합니다.

root@myServer:~# service lightdm status
● lightdm.service - Light Display Manager
   Loaded: loaded (/lib/systemd/system/lightdm.service; indirect; vendor preset: enabled)
   Active: inactive (dead) since Fri 2018-08-03 10:05:50 KST; 5min ago
     Docs: man:lightdm(1)
  Process: 1472 ExecStart=/usr/sbin/lightdm (code=exited, status=0/SUCCESS)
 Main PID: 1472 (code=exited, status=0/SUCCESS)

이 서버에서는 Active의 값이 inactive (dead) 로 되어있음을 확인할 수 있습니다. 서비스를 재시작 명령어로 lightdm을 다시 실행해야 합니다.

# service lightdm restart
또는
# systemctl restart lightdm

lightdm이 시작되지 않는다면, 설정 파일에 문제가 발생했거나 패키지 설치가 잘못 되었을 수 있습니다.

먼저 설정 파일에 아래 내용이 정확히 들어있는지 확인해야 합니다. lightdm (Ubuntu 16.04) 기준으로 /etc/lightdm/lightdm.conf 파일이 존재하는지, 해당 파일 내에 아래 내용이 포함되어 있는지 확인합니다.

[XDMCPServer]
enabled=true

설정 파일에 문제가 없다면 패키지를 다시 설치해보는 방법도 있습니다.

# apt remove lightdm
# apt install lightdm

마지막으로 로컬 PC (연결하려는 위치)와 원격 PC(연결 대상) 간의 네트워크 환경을 점검해 볼 필요가 있습니다. 원격 PC로 접속이 가능한 네트워크인지는 다양한 방법을 사용하여 확인할 수 있습니다. 아래는 Windows CMD 명령 중 ping을 사용하여 원격 호스트의 응답을 확인하는 방법입니다.

참고: 이 방법은 원격 서버에서 ping을 차단했을 수 있으므로 권장되지 않습니다.

먼저 정상적으로 연결이 가능한 경우입니다. 매 초 마다 응답 결과가 표시됩니다.

C:\Users\mypc>ping 192.168.xx.xxx
Ping 192.168.xx.xxx 32바이트 데이터 사용:
192.168.xx.xxx의 응답: 바이트=32 시간<1ms TTL=64
192.168.xx.xxx의 응답: 바이트=32 시간<1ms TTL=64

192.168.xx.xxx에 대한 Ping 통계:
    패킷: 보냄 = 2, 받음 = 2, 손실 = 0 (0% 손실),
왕복 시간(밀리초):
    최소 = 0ms, 최대 = 0ms, 평균 = 0ms

그러나 호스트를 찾을 수 없는 경우 다음과 같이 나타납니다.

C:\Users\mypc>ping 192.168.xx.xxx

Ping 192.168.xx.xxx 32바이트 데이터 사용:
192.168.xx.xxx의 응답: 대상 호스트에 연결할 수 없습니다.

연결이 가능한다 하더라도 로컬 PC의 방화벽 정책으로도 연결을 하지 못하는 경우가 있습니다. Windows 방화벽 등을 확인하여 해결해볼 수 있습니다.

이러한 내용으로 XDMCP Timeout 문제를 어느 정도 해결하실 수 있을 것입니다.

JooTC

안녕하세요. 테크놀로지에 관심이 많은 블로거입니다.

View Comments

    • X11 프로토콜의 포트를 열기 위해 방화벽 규칙을 변경해야 합니다.
      사용하시고 계신 리눅스 배포판에 따라 iptables, firewalld, ufw 등의 방화벽 프로그램이 사용되는데요,
      X11이 사용하는 포트는 177/udp 와 6000-6010/tcp 입니다. 다음은 몇가지 예시입니다.

      > iptables 사용 예시
      iptables -A INPUT -p udp -m udp --dport 177 -j ACCEPT
      iptables -A INPUT -p tcp -m tcp --dport 6000:6010 -j ACCEPT

      > ufw 사용 예시
      ufw allow 177/udp
      ufw allow 6000:6010/tcp

      > firewalld 사용 예시
      firewall-cmd --permanent --zone=public --add-port=177/udp
      firewall-cmd --permanent --zone=public --add-port=6000-6010/tcp

Recent Posts

[iOS] Xcode ‘You do not have required contracts to perform an operation’ 해결

Xcode에서 iOS 애플리케이션을 빌드(Archive)하고 App Store Connect에 앱을 업로드하는 도중, 아래와 같은 에러가 발생하면서 더…

1개월 ago

[안드로이드] INSTALL_FAILED_INSUFFICIENT_STORAGE 해결

INSTALL_FAILED_INSUFFICIENT_STORAGE 문제 안드로이드 스튜디오에서 에뮬레이터를 실행하고 개발중인 애플리케이션을 실행하려 하면 로그 창에 아래와 같이 표시되면서…

7개월 ago

Zalgo 텍스트와 이를 방지하는 방법

인터넷 커뮤니티 사이트에서 게시글이나 댓글에 간혹 장난을 목적으로 작성된 특이한 글자를 볼 수 있습니다. 위…

9개월 ago

리눅스 kill, killall 명령어 – 특정 프로세스 종료하기

리눅스 명령어 - kill, killall 리눅스 kill 명령어는 특정 프로세스를 종료해주는 명령어입니다. 백그라운드에서 실행되고 있는…

9개월 ago

JavaScript typeof null이 ‘object’인 이유

JavaScript는 역사가 긴 스크립트 프로그래밍 언어입니다. 세월이 흐르면서 많은 자바스크립트 표준이 만들어졌고, 현재는 많은 문법적…

9개월 ago

Mocha Error: Resolution method is overspecified. 해결 방법

NodeJS 테스트 프레임워크인 Mocha는 비동기 테스트를 지원합니다. 간혹 특정 테스트 스크립트를 작성하고 실행하면 아래와 같이…

9개월 ago