넷사랑컴퓨터의 Xmanager를 사용하여 XDMCP 연결을 시도하려 할 때 다음과 같은 에러 창이 뜨며 진행되지 않는 경우가 있습니다.
“XDMCP 연결에 실패했습니다. 다시 시도하시겠습니까?”
일정 시간동안 응답이 없다가 결국 XDMCP 연결에 실패하게 되는데 그 이유와 해결 방법을 살펴보겠습니다.
먼저 XDMCP가 연결되기 전에 XDMCP를 사용하기 위한 설정이 모두 진행되었는지 확인해주셔야 합니다.
넷사랑컴퓨터 홈페이지에 XDMCP 사용 설정과 관련된 도움말이 나와있습니다.
현재 사용 중인 서버의 운영체제와 일치한 문서로 설정을 모두 마쳐주셔야 합니다. 위 가이드의 설정대로 하면 특별한 경우가 아니라면 문제 없이 XDMCP 세션에 연결될 것입니다.
그래도 연결이 되지 않는다면, 먼저 에러 로그가 어떻게 나왔는지 확인해주어야 합니다.
상단 메뉴에서 ‘파일 – 로그 – 로그 파일 열기’ 를 선택하여 로그 파일을 열어주세요.
또는 아래 경로로 이동하여 로그 파일을 얻어낼 수 있습니다.
여기서 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 문제에 대해서만 해결 방법을 작성하였습니다.
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
위 두 명령어로 xdmcp와 x11 프로토콜이 확인되지 않았다면 (결과가 표시되지 않으면) 해당 프로토콜을 사용하는 포트를 열어주어야 합니다.
아래 표를 참고하여 xdmcp 및 x11 프로토콜의 포트를 열어주세요.
포트 이름 | 포트 번호 | 적용범위 - iptables | 적용범위 - firewalld | 적용범위 - ufw |
---|---|---|---|---|
xdmcp | 177 (UDP) | 177 | 177 | 177 |
x11 | 6000 ~ 6010 (TCP) | 6000:6010 | 6000-6010/tcp | 6000:6010/tcp |
이후 규칙이 제대로 적용되었다면 Xmanager에서 XDMCP 접속을 다시 시도하여 해결할 수 있습니다.
다음으로 디스플레이 매니저(Display Manager)의 정상 구동 여부를 확인해보아야 합니다. 리눅스 운영체제 및 버전 마다 사용 가능한 디스플레이 매니저나 설정 방식이 다르기 때문에 자세한 사항은 관련 도움말을 참조해주셔야 합니다. 아래 내용은 Ubuntu 16.04에서 진행한 내용입니다.
Ubuntu는 lightdm을 사용합니다. 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 문제를 어느 정도 해결하실 수 있을 것입니다.
Xcode에서 iOS 애플리케이션을 빌드(Archive)하고 App Store Connect에 앱을 업로드하는 도중, 아래와 같은 에러가 발생하면서 더…
INSTALL_FAILED_INSUFFICIENT_STORAGE 문제 안드로이드 스튜디오에서 에뮬레이터를 실행하고 개발중인 애플리케이션을 실행하려 하면 로그 창에 아래와 같이 표시되면서…
리눅스 명령어 - kill, killall 리눅스 kill 명령어는 특정 프로세스를 종료해주는 명령어입니다. 백그라운드에서 실행되고 있는…
JavaScript는 역사가 긴 스크립트 프로그래밍 언어입니다. 세월이 흐르면서 많은 자바스크립트 표준이 만들어졌고, 현재는 많은 문법적…
NodeJS 테스트 프레임워크인 Mocha는 비동기 테스트를 지원합니다. 간혹 특정 테스트 스크립트를 작성하고 실행하면 아래와 같이…
View Comments
안녕하세요. 혹시 xdmcp와 x11의 프로토콜을 어떻게 열수 있을까요?
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